a character vector specifying all the marginal
distributions. See details below.
paramMargins
a list whose each component is a
list (or numeric vectors) of named components, giving the parameter
values of the marginal distributions. See details below.
marginsIdentical
logical variable restricting the marginal
distributions to be identical.
check
logical indicating to apply quick checks about existence of
margins “p*” and “d*” functions.
fixupNames
logical indicating if the parameters of the margins
should get automatic names (from formals(p<mar_i>)).
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.
log
logical indicating if the log density should
be returned.
n
number of observations to be generated.
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, the list
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.
Value
mvdc() constructs an object of class "mvdc".
dMvdc() gives the density, pMvdc() gives the cumulative
distribution function, and rMvdc() generates random variates.
See Also
ellipCopula,
archmCopula;
the classes mvdc and copula.
Examples
## construct a bivariate distribution whose marginals
## are normal and exponential respectively, coupled
## together via a normal copula
mv.NE <- mvdc(normalCopula(0.75), c("norm", "exp"),
list(list(mean = 0, sd =2), list(rate = 2)))
dim(mv.NE)
mv.NE # using its print() / show() method
persp (mv.NE, dMvdc, xlim = c(-4, 4), ylim=c(0, 2), main = "dMvdc(mv.NE)")
persp (mv.NE, pMvdc, xlim = c(-4, 4), ylim=c(0, 2), main = "pMvdc(mv.NE)")
contour(mv.NE, dMvdc, xlim = c(-4, 4), ylim=c(0, 2))
# Generate (bivariate) random numbers from that, and visualize
x.samp <- rMvdc(250, mv.NE)
plot(x.samp)
summary(fx <- dMvdc(x.samp, mv.NE))
summary(Fx <- pMvdc(x.samp, mv.NE))
op <- par(mfcol=c(1,2))
pp <- persp(mv.NE, pMvdc, xlim = c(-5,5), ylim=c(0,2),
main = "pMvdc(mv.NE)", ticktype="detail")
px <- copula:::perspMvdc(x.samp, fun = F.n, xlim = c(-5,5), ylim=c(0,2),
main = "F.n(x.samp)", ticktype="detail")
par(op)
all.equal(px, pp)# about 5% difference