tauCOP | R Documentation |
Compute the measure of association known as the Kendall Tau (\tau_\mathbf{C}
) of a copula (\tau_\mathbf{C}
) according to Nelsen (2006, sec. 5.1.1 and p. 161) by
\tau_\mathbf{C} = \mathcal{Q}(\mathbf{C}, \mathbf{C}) = 4\int\!\!\int_{\mathcal{I}^2}
\mathbf{C}(u,v)\,\mathrm{d}\mathbf{C}(u,v) - 1\mbox{,}
where \mathcal{Q}(\mathbf{C}, \mathbf{C})
is a concordance function (concordCOP
) of a copula with itself. Nelsen (2006, p. 164) reports however that this form is often not amenable to computation when there is a singular component to the copula and that the expression
\tau_\mathbf{C} = 1 - 4\int\!\!\int_{\mathcal{I}^2}
\frac{\delta\mathbf{C}(u,v)}{\delta u}
\frac{\delta\mathbf{C}(u,v)}{\delta v}\,
\mathrm{d}u\mathrm{d}v
is to be preferred. Such an expression hence relies on the partial numerical derivatives of the copula provided by derCOP
and derCOP2
. The Nelsen (2006) preferred expression is used by the tauCOP
function. Nelsen (2006, pp. 175–176) reports that the relation between \tau_\mathbf{C}
and \rho_\mathbf{C}
(rhoCOP
) is
-1 \le 3\tau - 2\rho \le 1
(see rhoCOP
for more details).
Nelsen (2006, pp. 160–161) lists some special identities involving \mathcal{Q}(\mathbf{C}_1,\mathbf{C}_2)
:
\mathcal{Q}(\mathbf{M}, \mathbf{M}) = 4\int_0^1 u\,\mathrm{d}u - 1 = 1\mbox{,}
\mathcal{Q}(\mathbf{M}, \mathbf{\Pi}) = 4\int_0^1 u^2\,\mathrm{d}u - 1 = 1/3\mbox{,}
\mathcal{Q}(\mathbf{M}, \mathbf{W}) = 4\int_{1/2}^1 (2u-1)\,\mathrm{d}u - 1 = 0\mbox{,}
\mathcal{Q}(\mathbf{W}, \mathbf{\Pi}) = 4\int_0^1 u(1-u)\,\mathrm{d}u - 1 = -1/3\mbox{,}
\mathcal{Q}(\mathbf{W}, \mathbf{W}) = 4\int_0^1 0\,\mathrm{d}u - 1 = -1\mbox{, and}
\mathcal{Q}(\mathbf{\Pi}, \mathbf{\Pi}) = 4\int\!\!\int_{\mathcal{I}^2} uv\,\mathrm{d}u\mathrm{d}v - 1 = 0\mbox{.}
Kendall Tau also can be expressed in terms of the Kendall Function (F_K(z)
; kfuncCOP
):
\tau_\mathbf{C} = 3 - 4\int_0^1 F_K(t)\,\mathrm{d}t\mbox{,}
which is readily verified by code shown in Examples. This definition might be useful if integration errors are encountered for some arbitrary copula and arbitrary parameter set. In fact, should two attempts (see source code) at dual integration of the partial derivatives occur, the implementation switches over to integration of the Kendall Function (e.g. tauCOP(cop=N4212cop, para=2)
). Note, Durante and Sempi have erroneously dropped the multiplication by “4
” as shown above in their definition of \tau_\mathbf{C}
as a function of F_K(t)
(Durante and Sempi, 2015, eq. 3.9.4, p. 121).
tauCOP( cop=NULL, para=NULL,
cop2=NULL, para2=NULL, as.sample=FALSE, brute=FALSE, delta=0.002, ...)
concordCOP(cop=NULL, para=NULL, cop2=NULL, para2=NULL, ...)
cop |
A copula function; |
para |
Vector of parameters or other data structure, if needed, to pass to the copula; |
cop2 |
A second copula function; |
para2 |
Vector of parameters or other data structure, if needed, to pass to the second copula; |
as.sample |
A logical controlling whether an optional R |
brute |
Should brute force be used instead of two nested |
delta |
The |
... |
Additional arguments to pass on to |
The value for \tau_\mathbf{C}
is returned.
Although titled for computation of the Kendall Tau, the tauCOP
function also is the implementation of the concordance function \mathcal{Q}(\mathbf{C}_1, \mathbf{C}_2)
(see Nelsen (2006, pp. 158–159) when given two different copulas and respective parameters as arguments. The function concordCOP
just dispatches to tauCOP
. A useful relation is
\int\!\!\int_{\mathcal{I}^2} \mathbf{C}_1(u,v)\,\mathrm{d}\mathbf{C}_2(u,v) =
\frac{1}{2} - \int\!\!\int_{\mathcal{I}^2} \frac{\delta}{\delta u}\mathbf{C}_1(u,v)\,\frac{\delta}{\delta v}\mathbf{C}_2(u,v)\,\mathrm{d}u\mathrm{d}v\mbox{,}
where \mathbf{C}_1(u,v)
is the first copula and \mathbf{C}_2(u,v)
is the second copula.
Nelsen et al. (2001, p. 281) lists several measures of association defined by the concordance function:
\mbox{}\quad\mathrm{1.}\quad\mbox{}
\tau_\mathbf{C} = \quad\ \mathcal{Q}(\mathbf{C}, \mathbf{C})
: (Kendall Tau; tauCOP
);
\mbox{}\quad\mathrm{2.}\quad\mbox{}
\rho_\mathbf{C} = 3\cdot\mathcal{Q}(\mathbf{C}, \mathbf{\Pi})
: (Spearman Rho; rhoCOP
);
\mbox{}\quad\mathrm{3.}\quad\mbox{}
\gamma_\mathbf{C} = 2\cdot\mathcal{Q}(\mathbf{C}, [\mathbf{M}+\mathbf{W}]/2)
: (Gini Gamma; giniCOP
); and
\mbox{}\quad\mathrm{4.}\quad\mbox{}
\psi_\mathbf{C} = \frac{3}{2}\cdot\mathcal{Q}(\mathbf{C}, \mathbf{M}) - \frac{1}{2}
: (Spearman Footrule; footCOP
).
W.H. Asquith
Durante, F., and Sempi, C., 2015, Principles of copula theory: Boca Raton, CRC Press, 315 p.
Nelsen, R.B., 2006, An introduction to copulas: New York, Springer, 269 p.
Nelsen, R.B., Quesada-Molina, J.J., Rodríguez-Lallena, J.A., and Úbeda-Flores, M., 2001, Distribution functions of copulas—A class of bivariate probability integral transforms: Statistics and Probability Letters, v. 54, no. 3, pp. 277–282.
blomCOP
, footCOP
, giniCOP
,
hoefCOP
, rhoCOP
, wolfCOP
,
joeskewCOP
, uvlmoms
,
derCOP
, derCOP2
, kfuncCOP
## Not run:
tauCOP(cop=PSP) # 1/3
# Now compute Kendall Tau via integration of the Kendall Function.
# 3 - 4*integrate(function(t) kfuncCOP(t, cop=PSP), 0, 1)$value # 0.3333314
## End(Not run)
## Not run:
tauCOP(cop=PSP, brute=TRUE) # 0.3306625
# CPU heavy example showing that the dual-integration (fast) results in
# a Kendall Tau that matches a sample version
dotau <- function(n) {
uv <- simCOP(n=n, cop=PSP, ploton=FALSE, points=FALSE)
return(cor(uv$U, uv$V, method="kendall"))
}
set.seed(817600)
taus <- replicate(100, dotau(100))
tau.sample <- mean(taus); print(tau.sample) # 0.3342034
## End(Not run)
## Not run:
# Nelsen (2006, pp. 160-161, numeric results shown thereine)
# The rational values or integers may be derived analytically.
tauCOP(cop=M, cop2=M) # 1, correct
tauCOP(cop=M, cop2=P) # 1/3, correct
tauCOP(cop=P, cop2=M) # 1/3, correct
tauCOP(cop=M, cop2=W) # 0, correct
tauCOP(cop=W, cop2=M) # throws warning, swaps copulas, == tauCOP(M,W)
tauCOP(cop=W, cop2=P) # throws warning, swaps copulas, approx. -1/3
tauCOP(cop=P, cop2=W) # -1/3, correct
tauCOP(cop=P, cop2=P) # 0, correct
tauCOP(cop=M, cop2=W, brute=TRUE) # 0, correct
## End(Not run)
## Not run:
para <- list(cop1=PLACKETTcop, cop2=PLACKETTcop,
para1=0.00395, para2=4.67, alpha=0.9392, beta=0.5699)
tauCOP(cop=composite2COP, para=para) # -0.4671213
para <- list(cop1=PLACKETTcop, cop2=PLACKETTcop,
para1=0.14147, para2=20.96, alpha=0.0411, beta=0.6873)
tauCOP(cop=composite2COP, para=para) # +0.1950727
para <- list(cop1=PLACKETTcop, cop2=PLACKETTcop,
para1=0.10137, para2=4492.87, alpha=0.0063, beta=0.0167)
# Theoretical attempt fails because para2 is large and thus a singularity
# is emerging and internal copula swapping does not help.
tauCOP(cop=composite2COP, para=para) # fails (0.94+-.01)
tauCOP(cop=composite2COP, para=para, brute=TRUE) # about 0.94+-.01
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.