copula (version 0.999-19)

fitLambda: Non-parametric Estimators of the Matrix of Tail-Dependence Coefficients

Description

Computing non-parametric estimators of the (matrix of) tail-dependence coefficients.

Usage

fitLambda(u, method = c("Schmid.Schmidt", "t"), p = min(100/nrow(u), 0.1),
          lower.tail = TRUE, verbose = FALSE, ...)

Arguments

u

\(n\times d\)-matrix of (pseudo-)observations in \([0,1]^d\) for estimating the (matrix of) tail-dependence coefficients.

method

the method with which the tail-dependence coefficients are computed:

method = "Schmid.Schmidt":

nonparametric estimator of Schmid and Schmidt (2007) (see also Jaworksi et al. (2009, p. 231)) computed for all pairs.

method = "t":

fits pairwise \(t\) copulas and returns the implied tail-dependence coefficient.

p

(small) cut-off parameter in \([0,1]\) below (for tail = "lower") or above (for tail = "upper") which the estimation takes place.

lower.tail

logical indicating whether the lower (the default) or upper tail-dependence coefficient is computed.

verbose

a logical indicating whether a progress bar is displayed.

additional arguments passed to the underlying functions (at the moment only to optimize() in case method = "t").

Value

The matrix of pairwise coefficients of tail dependence; for method = "t" a list additional containing the matrix of pairwise estimated correlation coefficients and the matrix of pairwise estimated degrees of freedom.

Details

As seen in the examples, be careful using nonparametric estimators, they might not perform too well (depending on p and in general). After all, the notion of tail dependence is a limit, finite sample sizes might not be able to capture well.

References

Jaworski, P., Durante, F., H<U+00E4>rdle, W. K., Rychlik, T. (2010). Copula Theory and Its Applications Springer, Lecture Notes in Statistics -- Proceedings.

Schmid, F., Schmidt, R. (2007). Multivariate conditional versions of Spearman's rho and related measures of tail dependence. Journal of Multivariate Analysis 98, 1123--1140. 10.1016/j.jmva.2006.05.005

Examples

Run this code
# NOT RUN {
n <- 10000 # sample size
p <- 0.01 # cut-off

## Bivariate case
d <- 2
cop <- claytonCopula(2, dim = d)
set.seed(271)
U <- rCopula(n, copula = cop) # generate observations (unrealistic)
(lam.true <- lambda(cop)) # true tail-dependence coefficients lambda
(lam.C <- c(lower = fitLambda(U, p = p)[2,1],
            upper = fitLambda(U, p = p, lower.tail = FALSE)[2,1])) # estimate lambdas
## => pretty good
U. <- pobs(U) # pseudo-observations (realistic)
(lam.C. <- c(lower = fitLambda(U., p = p)[2,1],
             upper = fitLambda(U., p = p, lower.tail = FALSE)[2,1])) # estimate lambdas
## => The pseudo-observations do have an effect...

## Higher-dimensional case
d <- 5
cop <- claytonCopula(2, dim = d)
set.seed(271)
U <- rCopula(n, copula = cop) # generate observations (unrealistic)
(lam.true <- lambda(cop)) # true tail-dependence coefficients lambda
(Lam.C <- list(lower = fitLambda(U, p = p),
               upper = fitLambda(U, p = p, lower.tail = FALSE))) # estimate Lambdas
## => Not too good
U. <- pobs(U) # pseudo-observations (realistic)
(Lam.C. <- list(lower = fitLambda(U., p = p),
                upper = fitLambda(U., p = p, lower.tail = FALSE))) # estimate Lambdas
## => Performance not too great here in either case
# }

Run the code above in your browser using DataLab