Learn R Programming

copBasic (version 2.1.4)

wolfCOP: 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's 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.

References

P<U+00F3>czos, Barnab<U+00E1>s, Krishner, Sergey, P<U+00E1>l, Szepesv<U+00E1>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

Run this code
# NOT RUN {
wolfCOP(cop=PSP) # 0.4784176
# }
# 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)
# }
# 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)# 
# }

Run the code above in your browser using DataLab