copBasic (version 2.1.5)

semicorCOP: The Lower and Upper Semi-Correlations of a Copula

Description

Compute the lower semi-correlations $$\rho^{N-}_\mathbf{C}(u,v; a) = \rho_N^{-}(a) \mbox{ and}$$ compute the upper semi-correlations $$\rho^{N+}_\mathbf{C}(u,v; a) = \rho_N^{+}(a)$$ of a copula \(\mathbf{C}(u,v)\) (Joe, 2014, p. 73) using numerical simulation. The semi-correlations are defined as $$\rho_N^{-}(a) = \mathrm{cor}[Z_1, Z_2|Z_1 < -a, Z_2 < -a]\mbox{,}$$ $$\rho_N^{+}(a) = \mathrm{cor}[Z_1, Z_2|Z_1 > +a, Z_2 > +a]\mbox{,\ and}$$ $$\rho_N(a > -\infty) = \mathrm{cor}[Z_1, Z_2]\mbox{,}$$ where \(\mathrm{cor[z_1, z_2]}\) is the familiar Pearson correlation function, which is in R the syntax cor(..., method="pearson"), parameter \(a \ge 0\) is a truncation point that identifies truncated tail regions (Joe, 2014, p. 73), and lastly \((Z_1, Z_2) \sim \mathbf{C}(\Phi, \Phi)\) and thus from the standard normal distribution \((Z_1, Z_2) = (\Phi^{-1}(u), \Phi^{-1}(v))\) where the random variables \((U,V) \sim \mathbf{C}\).

Usage

semicorCOP(cop=NULL, para=NULL, truncation=0, n=0, as.sample=FALSE, ...)

Arguments

cop

A copula function;

para

Vector of parameters or other data structure, if needed, to pass to the copula;

truncation

The truncation value for \(a\), which is in standard normal variates;

n

The sample size \(n\) for simulation estimates of the \(\rho_N\);

as.sample

A logical controlling whether an optional data.frame in para is used to compute the \(\hat\rho_N\) (see Note); and

...

Additional arguments to pass to the copula.

Value

The value(s) for \(rho_N\), \(\rho_N^{-}\), \(\rho_N^{+}\) are returned.

References

Joe, H., 2014, Dependence modeling with copulas: Boca Raton, CRC Press, 462 p.

See Also

giniCOP, rhoCOP, tauCOP

Examples

Run this code
# NOT RUN {
# Gumbel-Hougaard copula with Pearson rhoN = 0.4 (by definition)
run <- sapply(1:20, function(i) semicorCOP(cop=GHcop, para=1.350, n=600))
mean(unlist(run[1,])) # cor.normal.scores
mean(unlist(run[2,])) # minus.semicor
mean(unlist(run[3,])) # plus.semicor
sd(  unlist(run[1,])) # cor.normal.scores (These are our sampling variations
sd(  unlist(run[2,])) # minus.semicor      for the n=600 used as a Monte
sd(  unlist(run[3,])) # plus.semicor       Carlo simulation.)
# The function returns:    rhoN = 0.3945714, rhoN-= 0.1312561, rhoN+= 0.4108908
#  standard deviations           (0.0378331)       (0.0744049)       (0.0684766)
# Joe (2014, p. 72) shows: rhoN = 0.4,       rhoN-= 0.132,     rhoN+= 0.415
#  standard deviations           (not avail)       (0.08)            (0.07)
# We see alignment with Joe's results with his n=600. #
# }

Run the code above in your browser using DataLab