Learn R Programming

copBasic (version 1.6.0)

simCOP: Simulate a Copula by Numerical Derivative Method

Description

Perform a simulation and visualization of a copula by numerical derivatives of the copula (Nelson, 2006, p. 32). The simCOP function is based on a uniformly simulating nonexceedance probability $u$ and then conditioning the $v$ from the inverse of the sectional derivative for $V$ with respect to $U$ (see derCOPinv). The function for speed will only report a warning if at least one of the requested simulations in n could not be made because of uniroot'ing problems in derCOPinv. The returned data.frame will be shortened automatically but can be controlled by na.rm. Failure of a simulation is purely dependent on the derivative inversion, which should be quite robust for continuous to near continuous copulas and even copulas with singularities should be more or less ok. Lastly, the logical combination na.rm=FALSE and keept=TRUE could be used to isolate those combinations giving derCOPinv problems.

Usage

simCOP(n=100, cop=NULL, para=NULL, na.rm=TRUE, keept=FALSE,
              ploton=TRUE, points=TRUE, ...)

Arguments

n
A sample size, default is $n = 100$;
cop
A copula function;
para
Vector of parameters, if needed, to pass to the copula;
na.rm
A logical to toggle the removal of NA entries on the returned data.frame;
keept
Keep the $t$ uniform random variable for the simulation as the last column in the returned data.frame;
ploton
A logical to toggle on the plot;
points
A logical to actually draw the simulations by points(); and
...
Additional arguments to pass to the points() function.

Value

  • An Rdata.frame of the simulated values is returned.

References

Nelson, R.B., 2006, An introduction to copulas: New York, Springer, 269 p.

See Also

derCOPinv

Examples

Run this code
# The simCOP function is oft used in other Examples sections through this package.
simCOP(n=10, cop=W)            # Frechet lower bound copula
simCOP(n=10, cop=P)            # Independence copula
simCOP(n=10, cop=M, col=2)     # Frechet upper bound copula
simCOP(n=10, cop=PSP)          # The PSP copula
# Now simulate the PSP copula, add the level curves of the copula, and demonstrate
# the uniform distribution of marginals on the correct axes (U [top] and V [left]).
D <- simCOP(n=400, cop=PSP) # store simulated values in D
level.curvesCOP(cop=PSP, ploton=FALSE)
rug(D$U, side=3, col=2); rug(D$V, side=4, col=2)

# Now let us get more complicated and mix two Plackett copulas together using the
# composite2COP as a "compositor." The parameter argument becomes more complex, but
# is passed as shown into composite2COP.
para <- list(cop1=PLACKETTcop,cop2=PLACKETTcop, alpha=0.3,beta=0.5, para1=0.1,para2=50)
D <- simCOP(n=450, cop=composite2COP, para=para, col=rgb(0,0,0,0.1), pch=16)

Run the code above in your browser using DataLab