opower {copula} | R Documentation |
Outer Power Transformation of Archimedean Copulas
Description
Build a new Archimedean copula by applying the outer power transformation to a given Archimedean copula.
Usage
opower(copbase, thetabase)
Arguments
copbase |
a "base" copula, that is, a copula of class
|
thetabase |
the univariate parameter |
Value
a new acopula
object, namely the outer power copula
based on the provided copula family copbase
with fixed
parameter thetabase
. The transform introduces a parameter
theta
, so one obtains a parametric Archimedean family object as
return value.
The environment
of all function slots contains objects
cOP
(which is the outer power copula itself), copbase
,
and thetabase
.
References
Hofert, M. (2010), Sampling Nested Archimedean Copulas with Applications to CDO Pricing, Suedwestdeutscher Verlag fuer Hochschulschriften AG & Co. KG.
See Also
The class acopula
and our predefined "acopula"
family objects in acopula-families
.
Examples
## Construct an outer power Clayton copula with parameter thetabase such
## that Kendall's tau equals 0.2
thetabase <- copClayton@iTau(0.2)
opC <- opower(copClayton, thetabase) # "acopula" obj. (unspecified theta)
## Construct a 3d nested Archimedean copula based on opC, that is, a nested
## outer power Clayton copula. The parameters theta are chosen such that
## Kendall's tau equals 0.4 and 0.6 for the outer and inner sector,
## respectively.
theta0 <- opC@iTau(0.4)
theta1 <- opC@iTau(0.6)
opC3d <- onacopulaL(opC, list(theta0, 1, list(list(theta1, 2:3))))
## or opC3d <- onacopula(opC, C(theta0, 1, C(theta1, c(2,3))))
## Compute the corresponding lower and upper tail-dependence coefficients
rbind(theta0 = c(
lambdaL = opC@lambdaL(theta0),
lambdaU = opC@lambdaU(theta0) # => opC3d has upper tail dependence
),
theta1 = c(
lambdaL = opC@lambdaL(theta1),
lambdaU = opC@lambdaU(theta1) # => opC3d has upper tail dependence
))
## Sample opC3d
n <- 1000
U <- rnacopula(n, opC3d)
## Plot the generated vectors of random variates of the nested outer
## power Clayton copula.
splom2(U)
## Construct such random variates "by hand"
## (1) draw V0 and V01
V0 <- opC@ V0(n, theta0)
V01 <- opC@V01(V0, theta0, theta1)
## (2) build U
U <- cbind(
opC@psi(rexp(n)/V0, theta0),
opC@psi(rexp(n)/V01, theta1),
opC@psi(rexp(n)/V01, theta1))