Learn R Programming

copBasic (version 2.0.1)

EMPIRsim: Simulate a Bivariate Empirical Copula

Description

EXPERIMENTAL---Perform a simulation on a bivariate empirical copula to produce the random variates $U$ and $V$ and return an Rdata.frame of them. The method is more broadly known as conditional simulation method. This function is an empirical parallel to simCOP that is used for parametric copulas. If circumstances require conditional simulation of $V|U$, then function EMPIRsimv, which produces a vector of $V$ from a fixed $u$, should be used.

For the usual situation in which an individual $u$ during the simulation loops is not a value aligned on the grid, then the bounding conditional quantile functions are solved for each of the $n$ simulations and the following interpolation is made by $$v = \frac{v_1/w_1 + v_2/w_2}{1/w_1 + 1/w_2}\mbox{,}$$ which states that that the weighted mean is computed. The values $v_1$ and $v_2$ are ordinates of the conditional quantile function for the respective grid lines to the left and right of the $u$ value. The values $w_1$ $=$ $u - u^\mathrm{left}_\mathrm{grid}$ and $w_2$ $=$ $u^\mathrm{right}_\mathrm{grid} - u$.

Usage

EMPIRsim(n=100, empgrid=NULL, kumaraswamy=FALSE, na.rm=TRUE, keept=FALSE,
                graphics=TRUE, ploton=TRUE, points=TRUE, snv=FALSE,
                infsnv.rm=TRUE, trapinfsnv=.Machine$double.eps, ...)

Arguments

n
A sample size, default is 100;
empgrid
Gridded empirical copula from EMPIRgrid;
kumaraswamy
A logical to trigger Kumaraswamy distribution smoothing of the conditional quantile function that is passed to EMPIRgridderinv. The Kumaraswamy distribution is a distribution having support $[0,1]$
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;
graphics
A logical that will disable graphics by setting ploton and points to FALSE and overriding whatever their settings were;
ploton
A logical to toggle on the plot;
points
A logical to actually draw the simulations by the points() function in R;
snv
A logical to convert the ${u,v}$ to standard normal scores (variates) both for the optional graphics and the returned data.frame (Curiously, Joe (2014) advocates extensively for use of normal scores, which is in contrast to Nelsen (2006) who
infsnv.rm
A logical that will quietly strip out any occurrences of $u = {0,1}$ or $v = {0,1}$ from the simulations because these are infinity in magnitude when converted to standard normal variates is to occur. Thus, this logical only impacts logic flow when
trapinfsnv
If TRUE and presumably small, the numerical value of this argument ($\eta$) is used to replace $u = {0,1}$ and $v = {0,1}$ with $u(0) = v(0) = \eta$ or $u(1) = v(1) = 1 - \eta$ as appropriate when conversion to standard normal variates is to
...
Additional arguments to pass to the points() function in R.

Value

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

See Also

EMPIRgrid, EMPIRgridderinv, EMPIRsimv

Examples

Run this code
pdf("EMPIRsim_experiment.pdf")
  nsim <- 5000
  para <- list(alpha=0.15, beta=0.65,
               cop1=PLACKETTcop, cop2=PLACKETTcop, para1=0.005, para2=1000)
  set.seed(1)
  uv <- simCOP(n=nsim, cop=composite2COP, para=para, snv=TRUE,
               pch=16, col=rgb(0,0,0,.2))in \R
  mtext("A highly complex simulated bivariate relation")
  # set.seed(1) # try not resetting the seed
  uv.grid <- EMPIRgrid(para=uv, deluv=0.025)

  uv2 <- EMPIRsim(n=nsim, empgrid=uv.grid, kumaraswamy=FALSE, snv=TRUE,
                  col=rgb(1,0,0,0.1), pch=16)
  mtext("Resimulation without Kumaraswamy smoothing")

  uv3 <- EMPIRsim(n=nsim, empgrid=uv.grid, kumaraswamy=TRUE, snv=TRUE,
                  col=rgb(1,0,0,0.1),pch=16)
  mtext("Resimulation but using the Kumaraswamy Distribution for smoothing")
dev.off()
nsim <- 5000
  set.seed(1)
  uv1 <- simCOP(n=nsim, cop=PSP, para=NULL, snv=TRUE)
  semicorCOP(cop=EMPIRcop, para=uv2, samcor=TRUE)
  uv.grid <- EMPIRgrid(para=uv, deluv=0.01)
  set.seed(1)
  uv2 <- EMPIRsim(n=nsim, empgrid=uv.grid, snv=TRUE,
                  col=rgb(1,0,0,0.1), pch=16)
  mtext("Resimulation without Kumaraswamy smoothing")
  semicorCOP(cop=EMPIRcop, para=uv2, samcor=TRUE)
# See other examples under EMPIRsimv

Run the code above in your browser using DataLab