Outer Power Transformation of Archimedean Copulas
Build a new Archimedean copula by applying the outer power transformation to a given Archimedean copula.
opower(copbase, thetabase)
copbase |
a "base" copula, that is, a copula of class
|
thetabase |
the univariate parameter theta for the
generator of the base copula |
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
.
Hofert, M. (2010), Sampling Nested Archimedean Copulas with Applications to CDO Pricing, Suedwestdeutscher Verlag fuer Hochschulschriften AG & Co. KG.
The class acopula
and our predefined "acopula"
family objects in acopula-families
.
## 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))
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.