khoudrajiCopula {copula}R Documentation

Construction of copulas using Khoudraji's device

Description

Creates an object representing a copula constructed using Khoudraji's device (Khoudraji, 1995). The resulting R object is either of class "khoudrajiBivCopula", "khoudrajiExplicitCopula" or "khoudrajiCopula".

In the bivariate case, given two copulas C_1 and C_2, Khoudraji's device consists of defining a copula whose c.d.f. is given by:

C_1(u_1^{1 - a_1}, u_2^{1 - a_2}) C_2(u_1^{a_1}, u_2^{a_2})

where a_1 and a_2 are shape parameters in [0,1].

The construction principle (see also Genest et al. 1998) is a special case of that considered in Liebscher (2008).

Usage

khoudrajiCopula(copula1 = indepCopula(), copula2 = indepCopula(),
                shapes = rep(NA_real_, dim(copula1)))

Arguments

copula1, copula2

each a copula, of the same dimension d.

shapes

numeric vector of length d, with values in [0,1].

Details

If the argument copulas are bivariate, an object of class "khoudrajiBivCopula" will be constructed. If they are exchangeable and d-dimensional with d > 2, and if they have explicit p.d.f. and c.d.f. expressions, an object of class "khoudrajiExplicitCopula" will be constructed. For the latter two classes, density evaluation is implemented, and fitting and goodness-of-fit testing can be attempted. If d > 2 but one of the argument copulas does not have explicit p.d.f. and c.d.f. expressions, or is not exchangeable, an object of class "khoudrajiCopula" will be constructed, for which density evaluation is not possible.

Value

A new object of class "khoudrajiBivCopula" in dimension two or of class "khoudrajiExplicitCopula" or "khoudrajiCopula" when d > 2.

References

Genest, C., Ghoudi, K., and Rivest, L.-P. (1998), Discussion of "Understanding relationships using copulas", by Frees, E., and Valdez, E., North American Actuarial Journal 3, 143–149.

Khoudraji, A. (1995), Contributions à l'étude des copules et àla modélisation des valeurs extrêmes bivariées, PhD thesis, Université Laval, Québec, Canada.

Liebscher, E. (2008), Construction of asymmetric multivariate copulas, Journal of Multivariate Analysis 99, 2234–2250.

Examples

## A bivariate Khoudraji-Clayton copula
kc <- khoudrajiCopula(copula2 = claytonCopula(6),
                      shapes = c(0.4, 0.95))
class(kc)

kc ## FIXME: too long 'fullname'
contour(kc, dCopula, nlevels = 20, main = "dCopula(<khoudrajiBivCopula>)")

## A Khoudraji-Clayton copula with second shape parameter fixed
kcf <- khoudrajiCopula(copula2 = claytonCopula(6),
                       shapes = fixParam(c(0.4, 0.95), c(FALSE, TRUE)))

## A "nested" Khoudraji bivariate copula
kgkcf <- khoudrajiCopula(copula1 = gumbelCopula(3),
                         copula2 = kcf,
                         shapes = c(0.7, 0.25))
contour(kgkcf, dCopula, nlevels = 20, main = "dCopula(<khoudrajiBivCopula>)")

n <- 300
u <- rCopula(n, kc)
plot(u)

## Not run: 
## Fitting can be difficult
## Starting values are required for all parameters
fitCopula(khoudrajiCopula(copula2 = claytonCopula()),
          start = c(1.1, 0.5, 0.5), data = pobs(u),
          optim.method = "Nelder-Mead")

## Second shape parameter fixed to 0.95
kcf2 <- khoudrajiCopula(copula2 = claytonCopula(),
                        shapes = fixParam(c(NA_real_, 0.95), c(FALSE, TRUE)))
fitCopula(kcf2,
          start = c(1.1, 0.5), data = pobs(u),
          optim.method = "Nelder-Mead")

## With a different optimization method
fitCopula(kcf2,
          start = c(1.1, 0.5), data = pobs(u),
          optim.method = "BFGS")

## GOF example
optim.method <- "Nelder-Mead" #try "BFGS" as well
gofCopula(kcf2, x = u, start = c(1.1, 0.5), optim.method = optim.method)
gofCopula(kcf2, x = u, start = c(1.1, 0.5), optim.method = optim.method,
          sim = "mult")
## The goodness-of-fit tests should hold their level
## but this would need to be tested

## Another example under the alternative
u <- rCopula(n, gumbelCopula(4))
gofCopula(kcf2, x = u, start = c(1.1, 0.5), optim.method = optim.method)
gofCopula(kcf2, x = u, start = c(1.1, 0.5), optim.method = optim.method,
          sim = "mult")

## Higher-dimensional constructions

## A three dimensional Khoudraji-Clayton copula
kcd3 <- khoudrajiCopula(copula1 = indepCopula(dim=3),
                        copula2 = claytonCopula(6, dim=3),
                        shapes = c(0.4, 0.95, 0.95))
kcd3
class(kcd3)

n <- 1000
u <- rCopula(n, kcd3)
v <- matrix(runif(15), 5, 3)
splom2(u)
dCopula(v, kcd3)

## A four dimensional Khoudraji-Normal copula
knd4 <- khoudrajiCopula(copula1 = indepCopula(dim=4),
                        copula2 = normalCopula(.9, dim=4),
                        shapes = c(0.4, 0.95, 0.95, 0.95))
knd4
class(knd4)
u <- rCopula(n, knd4)
splom2(u)
## dCopula(v, knd4) ## not implemented

## End(Not run)

[Package copula version 0.999-15 Index]