wolfCOP {copBasic}R Documentation

The Schweizer and Wolff Sigma of a Copula

Description

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

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

which is 0σC10 \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:

ρC=12 ⁣ ⁣I2[C(u,v)uv]dudv\mbox.\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 σC=ρC\sigma_\mathbf{C} = \rho_\mathbf{C} and conversely if a copula is negatively quadrant dependent (NQD) then σC=ρC\sigma_\mathbf{C} = -\rho_\mathbf{C}. However, a feature making σC\sigma_\mathbf{C} especially attractive is that for random variables XX and YY, which are not PQD or NQD—copulas that are neither larger nor smaller than Π\mathbf{\Pi}—is that “σC\sigma_\mathbf{C} is often a better measure of [dependency] than ρC\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 σ^C\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 du\mathrm{d}u and dv\mathrm{d}v for the brute force (brute=TRUE) integration; and

...

Additional arguments to pass.

Value

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

Note

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

σ^C=12n21i=1nj=1nC^n(in,jn)in×jn\mbox,\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 C^n\hat{\mathbf{C}}_n is the simplest empirical copula of

C^n(in,jn)=1n{# of (UkUi,VkVj)}\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 I2\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 σC\sigma_\mathbf{C} should be larger than ρC\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]