Archimedean Liouville Copulas

Marius Hofert

2023-12-07

require(copula)
source(system.file("Rsource", "AC-Liouville.R", package="copula"))
set.seed(271)

Archimedean-Simplex copulas

n <- 1000
theta <- 0.59
d <- 3
U <- rACsimplex(n, d=d, theta=theta, Rdist="Gamma")
cor(U, method="kendall")
##           [,1]      [,2]     [,3]
## [1,] 1.0000000 0.4212372 0.426967
## [2,] 0.4212372 1.0000000 0.425045
## [3,] 0.4269670 0.4250450 1.000000
par(pty="s")
pairs(U, gap=0, pch=".") # or cex=0.5

Liouville copulas

See McNeil, Neslehova (2010, Figure 3)

n <- 2000
theta <- 0.6
alpha <- c(1, 5, 20)
U <- rLiouville(n, alpha=alpha, theta=theta, Rdist="Gamma")
cor(U, method="kendall")
##           [,1]      [,2]      [,3]
## [1,] 1.0000000 0.5592676 0.5810015
## [2,] 0.5592676 1.0000000 0.7948264
## [3,] 0.5810015 0.7948264 1.0000000
par(pty="s")
pairs(U, gap=0, pch=".") # or cex=0.5

Archimedean-Liouville copulas

See McNeil, Neslehova (2010, Figure 4)

n <- 1000
theta <- 0.59
alpha <- c(1, 3, 4)
U <- rACLiouville(n, alpha=alpha, theta=theta, family="Clayton")
cor(U, method="kendall")
##           [,1]      [,2]      [,3]
## [1,] 1.0000000 0.2587668 0.2971211
## [2,] 0.2587668 1.0000000 0.4756156
## [3,] 0.2971211 0.4756156 1.0000000
par(pty="s")
pairs(U, gap=0, pch=".") # or cex=0.5