# enacopula: Estimation Procedures for (Nested) Archimedean Copulas In copula: Multivariate Dependence with Copulas

 enacopula R Documentation

## Estimation Procedures for (Nested) Archimedean Copulas

### Description

A set of ten different estimators, currently for one-parameter Archimedean copulas, of possibly quite high dimensions.

### Usage

```enacopula(u, cop,
method = c("mle", "smle", "dmle",
"mde.chisq.CvM", "mde.chisq.KS",
"mde.gamma.CvM", "mde.gamma.KS",
"tau.tau.mean", "tau.theta.mean", "beta"),
n.MC = if (method == "smle") 10000 else 0,
interval = initOpt(cop@copula@name),
xargs = list(), ...)
```

### Arguments

 `u` n x d-matrix of (pseudo-)observations (each value in [0,1]) from the copula to be estimated, where n denotes the sample size and d the dimension. Consider applying the function `pobs` first in order to obtain `u`. `cop` `outer_nacopula` to be estimated (currently only Archimedean copulas are provided). `method` a `character` string specifying the estimation method to be used, which has to be one (or a unique abbreviation) of `"mle"`maximum likelihood estimator (MLE) computed via `.emle`. `"smle"`simulated maximum likelihood estimator (SMLE) computed with the function `.emle`, where `n.MC` gives the Monte Carlo sample size. `"dmle"`MLE based on the diagonal (DMLE); see `edmle`. `"mde.chisq.CvM"`minimum distance estimator based on the chisq distribution and Cramér-von Mises distance; see `emde`. `"mde.chisq.KS"`minimum distance estimation based on the chisq distribution and Kolmogorov-Smirnov distance; see `emde`. `"mde.gamma.CvM"`minimum distance estimation based on the Erlang distribution and Cramér-von Mises distance; see `emde`. `"mde.gamma.KS"`minimum distance estimation based on the Erlang distribution and Kolmogorov-Smirnov distance; see `emde`. `"tau.tau.mean"`averaged pairwise Kendall's tau estimator `"tau.theta.mean"`average of pairwise Kendall's tau estimators `"beta"`multivariate Blomqvist's beta estimator `n.MC` only for `method = "smle"`: `integer`, sample size for simulated maximum likelihood estimation. `interval` bivariate vector denoting the interval where optimization takes place. The default is computed as described in Hofert et al. (2012). Used for all methods except `"tau.tau.mean"` and `"tau.theta.mean"`. `xargs` list of additional arguments for the chosen estimation method. `...` additional arguments passed to `optimize`.

### Details

`enacopula` serves as a wrapper for the different implemented estimators and provides a uniform framework to utilize them. For more information, see the single estimators as given in the section ‘See Also’.

Note that Hofert, Mächler, and McNeil (2013) compared these estimators. Their findings include a rather poor performance and numerically challenging problems of some of these estimators. In particular, the estimators obtained by `method="mde.gamma.CvM"`, `method="mde.gamma.KS"`, `method="tau.theta.mean"`, and `method="beta"` should be used with care (or not at all). Overall, MLE performed best (by far).

### Value

the estimated parameter, hat(theta), that is, currently a number as only one-parameter Archimedean copulas are considered.

### References

Hofert, M., Mächler, M., and McNeil, A. J. (2012). Likelihood inference for Archimedean copulas in high dimensions under known margins. Journal of Multivariate Analysis 110, 133–150.

Hofert, M., Mächler, M., and McNeil, A. J. (2013). Archimedean Copulas in High Dimensions: Estimators and Numerical Challenges Motivated by Financial Applications. Journal de la Société Française de Statistique 154(1), 25–63.

`emle` which returns an object of `"mle"` providing useful methods not available for other estimators. `demo(opC-demo)` and `vignette("GIG", package="copula")` for examples of two-parameter families. `edmle` for the diagonal maximum likelihood estimator. `emde` for the minimum distance estimators. `etau` for the estimators based on Kendall's tau. `ebeta` for the estimator based on Blomqvist's beta.

### Examples

```tau <- 0.25
(theta <- copGumbel@iTau(tau)) # 4/3
d <- 12
(cop <- onacopulaL("Gumbel", list(theta,1:d)))

set.seed(1)
n <- 100
U <- rnacopula(n, cop)

meths <- eval(formals(enacopula)\$method)

fun <- function(meth, u, cop, theta) {
run.time <- system.time(val <- enacopula(u, cop=cop, method=meth))
list(value=val, error=val-theta, utime.ms=1000*run.time[])
}
t(res <- sapply(meths, fun, u=U, cop=cop, theta=theta))
```

copula documentation built on June 15, 2022, 5:07 p.m.