opower: Outer Power Transformation of Archimedean Copulas

View source: R/opower.R

opowerR 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 acopula. Must be one of the predefined families.

thetabase

the univariate parameter \theta for the generator of the base copula copbase. Hence, the copula which is transformed is fixed, that is, does not depend on a 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))

copula documentation built on Sept. 11, 2024, 7:48 p.m.