copula {glmmAK}R Documentation

Copulas

Description

Functions to compute the cumulative distribution functions and densities for several bivariate copulas.

These functions do not have anything to do with the GLMM's in this package. They are here simply because of an interest of the author to play with copulas a little bit.

Usage

Cplackett(u, v, theta=1)
Cgauss(u, v, theta=0)
Cclayton(u, v, theta=0)
cplackett(u, v, theta=1)
cgauss(u, v, theta=0)
cclayton(u, v, theta=0)

Arguments

u Unif(0, 1) quantiles for the first margin. It can be a vector or a matrix
v Unif(0, 1) quantiles for the second margin. It can be a vector or a matrix
theta value of the association parameter

Value

A vector or a matrix with the values of the corresponding cdf or density.

Author(s)

Arnošt Komárek arnost.komarek[AT]mff.cuni.cz

References

Nelsen, R. B. (2006). An Introduction to Copulas, Second Edition New York: Springer.

Examples

### Margin1 = normal mixture
### Margin2 = normal
intcpt <- c(1, 5)
sds <- c(1, 3)
x <- seq(intcpt[1]-2.5*sds[1], intcpt[1]+1+2.5*sds[1], length=40)
y <- seq(intcpt[2]-2.5*sds[2], intcpt[2]+2.5*sds[2], length=41)
Fx <- 0.6*pnorm(x, mean=intcpt[1], sd=sds[1]) +
   0.4*pnorm(x, mean=intcpt[1]+2, sd=0.5*sds[1])
Fy <- pnorm(y, mean=intcpt[2], sd=sds[2])
fx <- 0.6*dnorm(x, mean=intcpt[1], sd=sds[1]) +
   0.4*dnorm(x, mean=intcpt[1]+2, sd=0.5*sds[1])
fy <- dnorm(y, mean=intcpt[2], sd=sds[2])
u <- matrix(rep(Fx, length(y)), ncol=length(y))
v <- matrix(rep(Fy, length(x)), nrow=length(x), byrow=TRUE)
du <- matrix(rep(fx, length(y)), ncol=length(y))
dv <- matrix(rep(fy, length(x)), nrow=length(x), byrow=TRUE)

### Copula distribution functions
theta <- c(3, 0.3, 1)
CC <- list()
CC$plackett <- Cplackett(u, v, theta=theta[1])
CC$gauss <- Cgauss(u, v, theta=theta[2])
CC$clayton <- Cclayton(u, v, theta=theta[3])

### Copula densities
cc <- list()
cc$plackett <- cplackett(u, v, theta=theta[1]) * du * dv
cc$gauss <- cgauss(u, v, theta=theta[2]) * du * dv
cc$clayton <- cclayton(u, v, theta=theta[3]) * du * dv

### Figures
lcol <- "red"
pcol <- "seagreen2"
mains <- paste(c("Plackett ", "Gauss ", "Clayton "), "copula, theta=", theta, sep="")
zlab <- "F(x,y)"
zlab2 <- "f(x,y)"
tangle <- -25
ptangle <- 40

oldpar <- par(bty="n", mfcol=c(2, 3))
contour(x, y, cc$plackett, main=mains[1], col=lcol)
persp(x, y, cc$plackett, zlab=zlab2, main=mains[1], col=pcol, theta=tangle, phi=ptangle)
contour(x, y, cc$gauss, main=mains[2], col=lcol)
persp(x, y, cc$gauss, zlab=zlab2, main=mains[2], col=pcol, theta=tangle, phi=ptangle)
contour(x, y, cc$clayton, main=mains[3], col=lcol)
persp(x, y, cc$clayton, zlab=zlab2, main=mains[3], col=pcol, theta=tangle, phi=ptangle)

par(bty="n", mfcol=c(2, 3))
contour(x, y, CC$plackett, main=mains[1], col=lcol)
persp(x, y, CC$plackett, zlab=zlab, main=mains[1], col=pcol, theta=tangle, phi=ptangle)
contour(x, y, CC$gauss, main=mains[2], col=lcol)
persp(x, y, CC$gauss, zlab=zlab, main=mains[2], col=pcol, theta=tangle, phi=ptangle)
contour(x, y, CC$clayton, main=mains[3], col=lcol)
persp(x, y, CC$clayton, zlab=zlab, main=mains[3], col=pcol, theta=tangle, phi=ptangle)

par(bty="n")
layout(matrix(c(0,1,1,0,  2,2,3,3), nrow=2, byrow=TRUE))
contour(x, y, cc$plackett, main=mains[1], col=lcol)
contour(x, y, cc$gauss, main=mains[2], col=lcol)
contour(x, y, cc$clayton, main=mains[3], col=lcol)

par(bty="n")
layout(matrix(c(0,1,1,0,  2,2,3,3), nrow=2, byrow=TRUE))
persp(x, y, cc$plackett, zlab=zlab2, main=mains[1], col=pcol, theta=tangle, phi=ptangle)
persp(x, y, cc$gauss, zlab=zlab2, main=mains[2], col=pcol, theta=tangle, phi=ptangle)
persp(x, y, cc$clayton, zlab=zlab2, main=mains[3], col=pcol, theta=tangle, phi=ptangle)

par(bty="n")
layout(matrix(c(0,1,1,0,  2,2,3,3), nrow=2, byrow=TRUE))
contour(x, y, CC$plackett, main=mains[1], col=lcol)
contour(x, y, CC$gauss, main=mains[2], col=lcol)
contour(x, y, CC$clayton, main=mains[3], col=lcol)

par(bty="n")
layout(matrix(c(0,1,1,0,  2,2,3,3), nrow=2, byrow=TRUE))
persp(x, y, CC$plackett, zlab=zlab, main=mains[1], col=pcol, theta=tangle, phi=ptangle)
persp(x, y, CC$gauss, zlab=zlab, main=mains[2], col=pcol, theta=tangle, phi=ptangle)
persp(x, y, CC$clayton, zlab=zlab, main=mains[3], col=pcol, theta=tangle, phi=ptangle)

par(oldpar)

[Package glmmAK version 1.2 Index]