initOpt: Initial Interval or Value for Parameter Estimation of...

View source: R/estimation.R

initOptR Documentation

Initial Interval or Value for Parameter Estimation of Archimedean Copulas

Description

Compute an initial interval or initial value for optimization/estimation routines (only a heuristic; if this fails, choose your own interval or value).

Usage

initOpt(family, tau.range=NULL, interval = TRUE, u,
        method = c("tau.Gumbel", "tau.mean"), warn = TRUE, ...)

Arguments

family

Archimedean family to find an initial interval for.

tau.range

numeric vector containing lower and upper admissible Kendall's tau, or NULL which choses family-specific defaults, see the function definition.

interval

logical indicating whether an initial interval (the default) or an initial value should be returned.

u

matrix of realizations following the copula family specified by family. Note that u can be omitted if interval=TRUE.

method

a character string specifying the method to be used to compute an estimate of Kendall's tau. This has to be one (or a unique abbreviation) of

"tau.Gumbel"

an estimator based on the diagonal maximum-likelihood estimator for Gumbel is used.

"tau.mean"

an estimator based on the mean of pairwise sample versions of Kendall's tau is applied.

warn

logical indicating if warnings are printed for method="tau.Gumbel" when the diagonal maximum-likelihood estimator is smaller than 1.

...

additional arguments passed to cor() when method="tau.mean". Note that otherwise (no additional arg.), the much faster cor.fk() from package pcaPP is used.

Details

For method="tau.mean" and interval=FALSE, the mean of pairwise sample versions of Kendall's tau is computed as an estimator of the Kendall's tau of the Archimedean copula family provided. This can be slow, especially if the dimension is large. Method method="tau.Gumbel" (the default) uses the explicit and thus very fast diagonal maximum-likelihood estimator for Gumbel's family to find initial values. Given this estimator \hat{\theta}^\mathrm{G}, the corresponding Kendall's tau is \tau^\mathrm{G}(\hat{\theta}^\mathrm{G}) where \tau^\mathrm{G}(\theta)=(\theta-1)/\theta denotes Kendall's tau for Gumbel. This provides an estimator of Kendall's tau which is typically much faster to evaluate than, pairwise Kendall's taus. Given the estimated ‘amount of concordance’ based on Kendall's tau, one can obtain an initial value for the provided family by applying \tau^{-1}, that is, the inverse of Kendall's tau of the family for which the initial value is to be computed. Note that if the estimated Kendall's tau does not lie in the range of Kendall's tau as provided by the bivariate vector tau.range, the point in tau.range closest to the estimated Kendall's tau is chosen.

The default (interval=TRUE) returns a reasonably large initial interval; see the default of tau.range in the definition of initOpt for the chosen values (in terms of Kendall's tau). These default values cover a large range of concordance. If this interval is (still) too small, one can adjust it by providing tau.range. If it is too large, a ‘distance to concordance’ can be used to determine parameter values such that the corresponding Kendall's taus share a certain distance to the initial value. For more details, see Hofert et al. (2012). Finally, let us note that for the case interval=TRUE, u is not required.

Value

initial interval which can be used for optimization (for example, for emle).

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.

See Also

enacopula, emle, edmle, emde, and ebeta (where initOpt is applied to find initial intervals).

Examples

## Definition of the function:
initOpt

## Generate some data:
tau <- 0.25
(theta <- copGumbel@iTau(tau)) # 4/3
d <- 20
(cop <- onacopulaL("Gumbel", list(theta,1:d)))

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

## Initial interval:
initOpt("Gumbel") # contains theta

## Initial values:
initOpt("Gumbel", interval=FALSE, u=U) # 1.3195
initOpt("Gumbel", interval=FALSE, u=U, method="tau.mean") # 1.2844

copula documentation built on Feb. 7, 2024, 3:01 p.m.