Learn R Programming

copula (version 0.99-4)

Mvdc: Multivariate distributions constructed from copulas

Description

Density, distribution function, and random generator for a multivariate distribution via copula.

Usage

mvdc(copula, margins, paramMargins, marginsIdentical = FALSE)
dmvdc(mvdc, x)
pmvdc(mvdc, x)
rmvdc(mvdc, n)

Arguments

copula
an object of "copula".
margins
a character vector specifying all the marginal distributions. See details below.
paramMargins
a list whose each component is a list of named components, giving the parameter values of the marginal distributions. See details below.
marginsIdentical
logical variable restricting the marginal distributions to be identical.
mvdc
a "mvdc" object.
x
a vector of the copula dimension or a matrix with number of columns being the copula dimension, giving the coordinates of the points where the density or distribution function needs to be evaluated.
n
number of observations to be generated.

Value

  • "mvdc" constructs an object of class "mvdc". "dmvdc" gives the density, "pmvdc" gives the distribution function, and "rmvdc" generates random variates.

Details

The characters in argument margins are used to construct density, distribution, and quantile function names. For example, norm can be used to specify marginal distribution, because dnorm, pnorm, and qnorm are all available.

A user-defined distribution, for example, fancy, can be used as margin provided that dfancy, pfancy, and qfancy are available.

Each component list in argument paramMargins is a list with named components which are used to specify the parameters of the marginal distributions. For example, paramMargins = list(list(mean = 0, sd = 2), list(rate = 2)) can be used to specify that the first margin is normal with mean 0 and standard deviation 2, and the second margin is exponential with rate 2.

See Also

ellipCopula, archmCopula, mvdc-class, copula-class.

Examples

Run this code
## construct a bivariate distribution whose marginals
## are normal and exponential respectively, coupled
## together via a normal copula
x <- mvdc(normalCopula(0.75), c("norm", "exp"),
          list(list(mean = 0, sd =2), list(rate = 2)))
x.samp <- rmvdc(x, 100)
dmvdc(x, x.samp)
pmvdc(x, x.samp)
persp(x, dmvdc, xlim = c(-4, 4), ylim=c(0, 1))

Run the code above in your browser using DataLab