Construction of Archimedean Copula Class Object
Constructs an Archimedean copula class object with its corresponding parameter and dimension.
archmCopula(family, param = NA_real_, dim = 2, ...) claytonCopula(param = NA_real_, dim = 2, use.indepC = c("message", "TRUE", "FALSE")) frankCopula(param = NA_real_, dim = 2, use.indepC = c("message", "TRUE", "FALSE")) gumbelCopula(param = NA_real_, dim = 2, use.indepC = c("message", "TRUE", "FALSE")) amhCopula(param = NA_real_, dim = 2, use.indepC = c("message", "TRUE", "FALSE")) joeCopula(param = NA_real_, dim = 2, use.indepC = c("message", "TRUE", "FALSE"))
family |
a character string specifying the family of an Archimedean copula. Currently supported families are "clayton", "frank", "amh", "gumbel", and "joe". |
param |
number ( |
dim |
the dimension of the copula. |
... |
further arguments, passed to the individual creator
functions ( |
use.indepC |
a string specifying if the independence copula
|
archmCopula()
is a wrapper for claytonCopula()
,
frankCopula()
, gumbelCopula()
, amhCopula()
and
joeCopula
.
For the mathematical definitions of the respective Archimedean families,
see copClayton
.
For d = 2, i.e. dim = 2
, the AMH, Clayton and Frank copulas
allow to model negative Kendall's tau (tau
) behavior via
negative theta, for AMH and Clayton
-1 <= theta, and for Frank
-Inf < theta.
The respective boundary cases are
τ(θ = -1) = -0.1817258,
τ(θ = -1) = -1,
τ(θ = -Inf) = -1 (as limit).
For the Ali-Mikhail-Haq copula family ("amhCopula"
), only the
bivariate case is available; however copAMH
has no such
limitation.
Note that in all cases except for Frank and AMH, and d = 2 and
theta < 0, the densities (dCopula()
methods) are
evaluated via the dacopula
slot of the corresponding
acopula
-classed Archimedean copulas, implemented
in a numeric stable way without any restriction on the dimension d.
Similarly, the (cumulative) distribution function
(“"the copula"” C()) is evaluated via the corresponding
acopula
-classed Archimedean copula's functions in
the psi
and iPsi
slots.
An Archimedean copula object of class "claytonCopula"
,
"frankCopula"
, "gumbelCopula"
, "amhCopula"
, or "joeCopula"
.
R.B. Nelsen (2006), An introduction to Copulas, Springer, New York.
acopula
-classed Archimedean copulas, such as
copClayton
, copGumbel
, etc, notably for
mathematical definitions including the meaning of param
.
fitCopula
for fitting such copulas to data.
clayton.cop <- claytonCopula(2, dim = 3) ## scatterplot3d(rCopula(1000, clayton.cop)) ## negative param (= theta) is allowed for dim = 2 : tau(claytonCopula(-0.5)) ## = -1/3 tauClayton <- Vectorize(function(theta) tau(claytonCopula(theta, dim=2))) plot(tauClayton, -1, 10, xlab=quote(theta), ylim = c(-1,1), n=1025) abline(h=-1:1,v=0, col="#11111150", lty=2); axis(1, at=-1) tauFrank <- Vectorize(function(theta) tau(frankCopula(theta, dim=2))) plot(tauFrank, -40, 50, xlab=quote(theta), ylim = c(-1,1), n=1025) abline(h=-1:1,v=0, col="#11111150", lty=2) ## tauAMH() is function in our package iTau(amhCopula(), -1) # -1 with a range warning iTau(amhCopula(), (5 - 8*log(2)) / 3) # -1 with a range warning ic <- frankCopula(0) # independence copula (with a "message") stopifnot(identical(ic, frankCopula(0, use.indepC = "TRUE")))# indep.copula withOUT message (fC <- frankCopula(0, use.indepC = "FALSE")) ## a Frank copula which corresponds to the indep.copula (but is not) frankCopula(dim = 3)# with NA parameters frank.cop <- frankCopula(3)# dim=2 persp(frank.cop, dCopula) gumbel.cop <- archmCopula("gumbel", 5) stopifnot(identical(gumbel.cop, gumbelCopula(5))) contour(gumbel.cop, dCopula) amh.cop <- amhCopula(0.5) u. <- as.matrix(expand.grid(u=(0:10)/10, v=(0:10)/10, KEEP.OUT.ATTRS=FALSE)) du <- dCopula(u., amh.cop) stopifnot(is.finite(du) | apply(u. == 0, 1,any)| apply(u. == 1, 1,any)) ## A 7-dim Frank copula frank.cop <- frankCopula(3, dim = 7) x <- rCopula(5, frank.cop) ## dCopula now *does* work: dCopula(x, frank.cop) ## A 7-dim Gumbel copula gumbelC.7 <- gumbelCopula(2, dim = 7) dCopula(x, gumbelC.7) ## A 12-dim Joe copula joe.cop <- joeCopula(iTau(joeCopula(), 0.5), dim = 12) x <- rCopula(5, joe.cop) dCopula(x, joe.cop)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.