fitCopula {copula}R Documentation

Maximum likelihood estimation of copula models

Description

Fits a copula model to multivariate data.

Usage

loglikCopula(param, x, copula)
loglikMvdc(param, x, mvdc)
fitCopula(data, copula, start, lower=NULL, upper=NULL,
          optim.control = list(NULL), method = "BFGS")
fitMvdc(data, mvdc, start, optim.control = list(NULL), method = "BFGS")

Arguments

param a vector of parameter values.
x a data matrix.
copula a "copula" object.
mvdc a "mvdc" object.
data a data matrix.
start a vector of starting value for param.
lower, upper bounds on the variables for the "L-BFGS-B" method.
optim.control a list of controls to be passed to "optim".
method the method for optim.

Value

The return value of "loglikCopula" and "loglikMvdc" is the loglikelihood evaluated for the given value of "param".
The return values of "fitCopula" and "fitMvdc" are objects of class "fitCopula" and "fitMvdc", respectively, containing slots:

est the estimate of the parameters.
var.est variance matrix estimate of the parameter estimator. See note below.
loglik loglikelihood at "est".
fit the result of "optim".

Note

The variance matrix of the estimate, "var.est", in the returned object is only valid for full likelihood maximization. When pseudo-observations are used, they under-estimate the variation. See Genest, Ghoudi, and Rivest (1995).

When covariates are available for marginal distributions or for the copula, one can construct the loglikelihood function and feed it to "optim" to estimate all the parameters.

References

C. Genest, K. Ghoudi and L.-P. Rivest (1995). A semiparametric estimation procedure of dependence parameters in multivariate families of distributions. Biometrika, 82, 543-552.

J. Yan (2006), Multivariate Modeling with Copulas and Engineering Applications. In Handbook of Engineering Statistics, Ed. Pham, Springer.

See Also

Copula, mvdc, gofCopula.

Examples

gumbel.cop <- gumbelCopula(3, dim=2)
myMvd <- mvdc(gumbel.cop, c("exp","exp"), list(list(rate=2),list(rate=4)))
x <- rmvdc(myMvd, 1000)
fit <- fitMvdc(x, myMvd, c(1,1,2))
fit

n <- 200
u <- rcopula(gumbel.cop, n)              ## true observations
r <- apply(u, 2, rank) / (n + 1)  ## pseudo-observations
start <- calibKendallsTau(gumbel.cop, cor(u, method="kendall")[1,2])
fit.u <- fitCopula(u, gumbel.cop, start)
fit.u
fit.r <- fitCopula(r, gumbel.cop, start)
fit.r

[Package copula version 0.7-6 Index]