# EMPIRsim: Simulate a Bivariate Empirical Copula In wasquith/copBasic: General Bivariate Copula Theory and Many Utility Functions

## Description

EXPERIMENTAL—Perform a simulation on a bivariate empirical copula to produce the random variates U and V and return an R data.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

 1 2 3 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] with an explicit quantile function and takes the place of a Beta distribution (see lmomco function quakur for more details); 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. Joe (2014) advocates extensively for use of normal scores, which is in contrast to Nelsen (2006) who does not; 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 snv is TRUE. The infsnv.rm is mutually exclusive from trapinfsnv; trapinfsnv If TRUE and presumably small, the numerical value of this argument (η) is used to replace u = \{0,1\} and v = \{0,1\} with u(0) = v(0) = η or u(1) = v(1) = 1 - η as appropriate when conversion to standard normal variates is to occur. The setting of trapinfsnv only is used if snv is TRUE and infsnv.rm is FALSE; and ... Additional arguments to pass to the points() function in R.

## Value

An R data.frame of the simulated values is returned.

## Author(s)

W.H. Asquith

EMPIRgrid, EMPIRgridderinv, EMPIRsimv
  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 ## Not run: 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)) 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()# ## End(Not run) ## Not run: set.seed(1) uv1 <- simCOP(n=5000, cop=PSP, para=NULL, snv=TRUE) semicorCOP(cop=EMPIRcop, para=uv2, samcor=TRUE) uv.grid <- EMPIRgrid(para=uv1, deluv=0.01) set.seed(1) uv2 <- EMPIRsim(n=5000, 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)# ## End(Not run) # See other examples under EMPIRsimv