Learn R Programming

copula (version 0.99-1)

K: Kendall Distribution Function of an Archimedean Copula

Description

Compute the Kendall distribution function of an Archimedean copula, defined as $$K(u) = P(C(U_1,U_2,\dots,U_d) \le u),$$ where $u \in [0,1]$, and the $d$-dimensional $(U_1,U_2,\dots,U_d)$ is distributed according to the copula $C$.

Note that the random variable $C(U_1,U_2,\dots,U_d)$ is known as probability integral transform. Its distribution function $K$ is equal to the identity if $d = 1$, but is non-trivial for $d \ge 2$.

Usage

K(u, cop, d, n.MC=0)

Arguments

u
evaluation point(s) (have to be in $[0,1]$).
cop
acopula with specified parameter.
d
dimension.
n.MC
integer, if positive, a Monte Carlo approach is applied with sample size equal to n.MC; otherwise (n.MC=0) the exact formula is used based on the generator derivatives

Value

  • Kendall distribution function at u

Details

For a completely monotone Archimedean generator $\psi$, $$K(u)=\sum_{k=0}^{d-1} \frac{\psi^{(k)}(\psi^{-1}(u))}{k!} (-\psi^{-1}(u))^k,\ u\in[0,1];$$ see Barbe et al. (1996).

References

Barbe, P., Genest, C., Ghoudi, K., and Ré{e}millard, B. (1996), On Kendall's Process, Journal of Multivariate Analysis, 58, 197--229.

Hofert, M., Mächler{Maechler}, M., and McNeil, A. J. (2011b), Likelihood inference for Archimedean copulas, submitted.

See Also

gnacopula, htrafo or emde (where K is used).

Examples

Run this code
tau <- 0.5
(theta <- copGumbel@tauInv(tau)) # 2
d <- 20
(cop <- onacopulaL("Gumbel", list(theta,1:d)))

## compute Kendall distribution function
u <- seq(0,1, length.out = 255)
Ku <- K(u, cop=cop@copula, d=d) # exact
Ku.MC <- K(u, cop=cop@copula, d=d, n.MC=1000) # via Monte Carlo

## build sample from K
set.seed(1)
n <- 200
U <- rnacopula(n, cop)
W <- pnacopula(cop, u=U)

## plot empirical distribution function based on W
## and the corresponding theoretical Kendall distribution function
## (exact and via Monte Carlo)
plot(ecdf(W), col="blue", xlim=c(0,1), verticals=TRUE,
     main = expression("Empirical"~ F[n]( C(U) ) ~
                       "and its Kendall distribution"~K(u)),
     do.points=FALSE, asp=1)
abline(0,1, lty=2); abline(h=0:1, v=0:1, lty=3, col="gray")
lines(u, Ku.MC, col="red")
lines(u, Ku, col="black")
legend(.2,.6, expression(F[n],K(u), K[MC](u)),
       col=c("blue","red","black"), lty=1, bty="n",
       xjust = 0.25, yjust = 0.5)

Run the code above in your browser using DataLab