wolfCOP {copBasic}R Documentation

The Schweizer and Wolff Sigma of a Copula

Description

Compute the measure of association known as Schweizer–Wolff Sigma \sigma_\mathbf{C} of a copula according to Nelsen (2006, p. 209) by

\sigma_\mathbf{C} = 12\int\!\!\int_{\mathcal{I}^2} |\mathbf{C}(u,v) - uv|\,\mathrm{d}u\mathrm{d}v\mbox{,}

which is 0 \le \sigma_\mathbf{C} \le 1. It is obvious that this measure of association, without the positive sign restriction, is similar to the following form of Spearman Rho (rhoCOP) of a copula:

\rho_\mathbf{C} = 12\int\!\!\int_{\mathcal{I}^2} [\mathbf{C}(u,v) - uv]\,\mathrm{d}u\mathrm{d}v\mbox{.}

If a copula is positively quadrant dependent (PQD, see isCOP.PQD) then \sigma_\mathbf{C} = \rho_\mathbf{C} and conversely if a copula is negatively quadrant dependent (NQD) then \sigma_\mathbf{C} = -\rho_\mathbf{C}. However, a feature making \sigma_\mathbf{C} especially attractive is that for random variables X and Y, which are not PQD or NQD—copulas that are neither larger nor smaller than \mathbf{\Pi}—is that “\sigma_\mathbf{C} is often a better measure of [dependency] than \rho_\mathbf{C}” (Nelsen, 2006, p. 209).

Usage

wolfCOP(cop=NULL, para=NULL, as.sample=FALSE, brute=FALSE, delta=0.002, ...)

Arguments

cop

A copula function;

para

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

as.sample

A logical controlling whether an optional R data.frame in para is used to compute the \hat{\sigma}_\mathbf{C} (see Note). If set to -1, then the message concerning CPU effort will be surpressed;

brute

Should brute force be used instead of two nested integrate() functions in R to perform the double integration;

delta

The \mathrm{d}u and \mathrm{d}v for the brute force (brute=TRUE) integration; and

...

Additional arguments to pass.

Value

The value for \sigma_\mathbf{C} is returned.

Note

A natural estimator for \sigma_\mathbf{C} is through the empirical copula (Póczos et al., 2015) and can be computed as

\hat{\sigma}_\mathbf{C} = \frac{12}{n^2 - 1} \sum_{i=1}^n\sum_{j=1}^n \bigg|\hat{\mathbf{C}}_n\biggl(\frac{i}{n}, \frac{j}{n}\biggr) - \frac{i}{n}\times\frac{j}{n}\bigg|\mbox{,}

where \hat{\mathbf{C}}_n is the simplest empirical copula of

\hat{\mathbf{C}}_n\biggl(\frac{i}{n}, \frac{j}{n}\biggr) = \frac{1}{n}\{\# \mathrm{\ of\ } (U_k \le U_i, V_k \le V_j)\}

An extended example is informative. First declare a composite of two different Plackett copulas (PLcop) and simulate a few hundred values:

   para <- list(cop1 =PLcop,  cop2=PLcop,
                para1=0.145, para2=21.9,  alpha=0.81, beta=0.22)
   D <- simCOP(n=300, cop=composite2COP, para=para,
               cex=0.5, col=rgb(0,0,0,0.2), pch=16)

Second, show that this copula is globally PQD (isCOP.PQD), but there is a significant local NQD part of \mathcal{I}^2 space that clearly is NQD.

  PQD <- isCOP.PQD(cop=composite2COP, para=para, uv=D)
  message(PQD$global.PQD) # TRUE
  points(D, col=PQD$local.PQD+2, lwd=2)

This composited copula intersects, that is, passes through, the P copula. Hence by the logic of Nelsen (2006), then the \sigma_\mathbf{C} should be larger than \rho_\mathbf{C} as shown below

  wolfCOP(cop=composite2COP, para=para) # 0.08373378 (theoretical)
   rhoCOP(cop=composite2COP, para=para) # 0.02845131 (theoretical)
  hoefCOP(cop=composite2COP, para=para) # 0.08563823 (theoretical)

In fact, the output above also shows Schweizer–Wolff Sigma to be larger than Blomqvist Beta (blomCOP), Gini Gamma (giniCOP), and Kendall Tau (tauCOP). The Schweizer–Wolff Sigma has captured the fact that although the symbols plot near randomly on the figure, the symbol coloring for PQD and NQD clearly shows local dependency differences. The sample version is triggered by

  wolfCOP(para=D, as.sample=TRUE) # 0.09278467 (an example sample)

Author(s)

W.H. Asquith

References

Póczos, Barnabás, Krishner, Sergey, Pál, Szepesvári, Csaba, and Schneider, Jeff, 2015, Robust nonparametric copula based dependence estimators, accessed on August 11, 2015, at https://www.cs.cmu.edu/~bapoczos/articles/poczos11nipscopula.pdf.

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

See Also

blomCOP, footCOP, giniCOP, hoefCOP, rhoCOP, tauCOP, joeskewCOP, uvlmoms

Examples

## Not run: 
wolfCOP(cop=PSP) # 0.4784176
## End(Not run)

## Not run: 
n <- 1000; UV <- simCOP(n=n, cop=N4212cop, para=7.53, graphics=FALSE)
wolfCOP(cop=N4212cop, para=7.53) # 0.9884666 (theoretical)
wolfCOP(para=UV, as.sample=TRUE) # 0.9884174 (sample) 
## End(Not run)

## Not run: 
# Redo D from Note section above
para <- list(cop1 =PLcop,  cop2=PLcop,
             para1=0.145, para2=21.9,  alpha=0.81, beta=0.22)
D <- simCOP(n=300, cop=composite2COP, para=para,
            cex=0.5, col=rgb(0, 0, 0, 0.2), pch=16)

the.grid <- EMPIRgrid(para=D)
the.persp <- persp(the.grid$empcop, theta=-25, phi=20, shade=TRUE,
                   xlab="U VARIABLE", ylab="V VARIABLE", zlab="COPULA C(u,v)")
empcop <- EMPIRcopdf(para=D) # data.frame of all points
points(trans3d(empcop$u, empcop$v, empcop$empcop, the.persp),  cex=0.7,
       col=rgb(0, 1-sqrt(empcop$empcop), 1, sqrt(empcop$empcop)), pch=16)
points(trans3d(empcop$u, empcop$v, empcop$empcop, the.persp),
       col=PQD$local.PQD+1, pch=1)

layout(matrix(c(1,2,3,4), 2, 2, byrow = TRUE), respect = TRUE)
PQD.NQD.cop <- gridCOP(cop=composite2COP, para=para)
Pi <- gridCOP(cop=P)
RHO <- PQD.NQD.cop - Pi; SIG <- abs(RHO)
the.persp <- persp(PQD.NQD.cop, theta=-25, phi=20, shade=TRUE, cex=0.5,
               xlab="U VARIABLE", ylab="V VARIABLE", zlab="COPULA C(u,v)")
mtext("The Copula that has local PQD and NQD", cex=0.5)
the.persp <- persp(Pi, theta=-25, phi=20, shade=TRUE, cex=0.5,
               xlab="U VARIABLE", ylab="V VARIABLE", zlab="COPULA C(u,v)")
mtext("Independence (Pi)", cex=0.5)
the.persp <- persp(RHO, theta=-25, phi=20, shade=TRUE, cex=0.5,
               xlab="U VARIABLE", ylab="V VARIABLE", zlab="COPULA C(u,v)")
mtext("Copula delta: Integrand of Spearman Rho", cex=0.5)
the.persp <- persp(SIG, theta=-25, phi=20, shade=TRUE, cex=0.5,
               xlab="U VARIABLE", ylab="V VARIABLE", zlab="COPULA C(u,v)")
mtext("abs(Copula delta): Integrand of Schweizer-Wolff Sigma", cex=0.5) #
## End(Not run)

[Package copBasic version 2.2.4 Index]