Defining normalCopula and tCopula

> library(copula)
> set.seed(1)
> myCop.norm <- ellipCopula(family = "normal", dim = 3, dispstr = "ex",
+     param = 0.4)
> myCop.t <- ellipCopula(family = "t", dim = 3, dispstr = "toep",
+     param = c(0.8, 0.5), df = 8)
> myCop.clayton <- archmCopula(family = "clayton", dim = 3, param = 2)
> myMvd <- mvdc(copula = myCop.clayton, margins = c("norm", "norm",
+     "norm"), paramMargins = list(list(mean = 0, sd = 2), list(mean = 0,
+     sd = 1), list(mean = 0, sd = 2)))

Look at the structure of normalCopula

> str(myCop.norm)
Formal class 'normalCopula' [package "copula"] with 8 slots
  ..@ dispstr     : chr "ex"
  ..@ getRho      :function (obj)
  ..@ dimension   : num 3
  ..@ parameters  : num 0.4
  ..@ param.names : chr "rho.1"
  ..@ param.lowbnd: num -1
  ..@ param.upbnd : num 1
  ..@ message     : chr "Normal copula family"

Look at the structure of tCopula

> str(myCop.t)
Formal class 'tCopula' [package "copula"] with 10 slots
  ..@ df          : num 8
  ..@ df.fixed    : logi FALSE
  ..@ dispstr     : chr "toep"
  ..@ getRho      :function (obj)
  ..@ dimension   : num 3
  ..@ parameters  : num [1:3] 0.8 0.5 8
  ..@ param.names : chr [1:3] "rho.1" "rho.2" "df"
  ..@ param.lowbnd: num [1:3] -1 -1 1
  ..@ param.upbnd : num [1:3] 1 1 Inf
  ..@ message     : chr "t copula family "

Look at the structure of archmCopula

> str(myCop.clayton)
Formal class 'claytonCopula' [package "copula"] with 7 slots
  ..@ exprdist    :  structure(expression(cdf = (1 + (u1^(-alpha) - 1 + u2^(-alpha) - 1 + u3^(-alpha) - 1))^(-1/alpha), pdf = (1 + (u1^(-alpha) - 1 + u2^(-alpha) - 1 + u3^(-alpha) - 1))^((((-1/alpha) - 1) - 1) - 1) * ((((-1/alpha) - 1) - 1) * (u3^((-alpha) - 1) *      (-alpha))) * (((-1/alpha) - 1) * (u2^((-alpha) - 1) * (-alpha))) *      ((-1/alpha) * (u1^((-alpha) - 1) * (-alpha)))), .Names = c("cdf",  "pdf"))
  ..@ dimension   : num 3
  ..@ parameters  : num 2
  ..@ param.names : chr "param"
  ..@ param.lowbnd: num 0
  ..@ param.upbnd : num Inf
  ..@ message     : chr "Clayton copula family; Archimedean copula"

Look at the structure of myMVD

> str(myMvd)
Formal class 'mvdc' [package "copula"] with 4 slots
  ..@ copula          :Formal class 'claytonCopula' [package "copula"] with 7 slots
  .. .. ..@ exprdist    :  structure(expression(cdf = (1 + (u1^(-alpha) - 1 + u2^(-alpha) - 1 + u3^(-alpha) - 1))^(-1/alpha), pdf = (1 + (u1^(-alpha) - 1 + u2^(-alpha) - 1 + u3^(-alpha) - 1))^((((-1/alpha) - 1) - 1) - 1) * ((((-1/alpha) - 1) - 1) * (u3^((-alpha) - 1) *      (-alpha))) * (((-1/alpha) - 1) * (u2^((-alpha) - 1) * (-alpha))) *      ((-1/alpha) * (u1^((-alpha) - 1) * (-alpha)))), .Names = c("cdf",  "pdf"))
  .. .. ..@ dimension   : num 3
  .. .. ..@ parameters  : num 2
  .. .. ..@ param.names : chr "param"
  .. .. ..@ param.lowbnd: num 0
  .. .. ..@ param.upbnd : num Inf
  .. .. ..@ message     : chr "Clayton copula family; Archimedean copula"
  ..@ margins         : chr [1:3] "norm" "norm" "norm"
  ..@ paramMargins    :List of 3
  .. ..$ :List of 2
  .. .. ..$ mean: num 0
  .. .. ..$ sd  : num 2
  .. ..$ :List of 2
  .. .. ..$ mean: num 0
  .. .. ..$ sd  : num 1
  .. ..$ :List of 2
  .. .. ..$ mean: num 0
  .. .. ..$ sd  : num 2
  ..@ marginsIdentical: logi FALSE

Random Generation using copulas

> u <- rcopula(myCop.t, 4)
> print(u)
          [,1]      [,2]      [,3]
[1,] 0.3508325 0.6165205 0.7459244
[2,] 0.3912433 0.2189641 0.2556491
[3,] 0.3925507 0.7579099 0.9157623
[4,] 0.9822296 0.9611676 0.8896553
> cbind(dcopula(myCop.t, u), pcopula(myCop.t, u))
          [,1]      [,2]
[1,]  2.265954 0.3081520
[2,]  3.493735 0.1359238
[3,]  1.878803 0.3777087
[4,] 31.481423 0.8771844
> x <- rmvdc(myMvd, 4)
> x
           [,1]      [,2]      [,3]
[1,]  1.9515514 0.6254143 3.4859965
[2,]  0.2446993 1.6817503 1.3283929
[3,]  1.6257827 1.0489920 0.8391207
[4,] -0.2221244 0.7980091 0.1028776
> cbind(dmvdc(myMvd, x), pmvdc(myMvd, x))
            [,1]      [,2]
[1,] 0.006334554 0.6489146
[2,] 0.005026580 0.4871090
[3,] 0.016346781 0.5549416
[4,] 0.017295186 0.3509979

Scatterplots for normal copula

> par(mfrow = c(1, 2))
> u <- rcopula(myCop.norm, 200)
> scatterplot3d(u)
> v <- rcopula(myCop.norm, 200)
> scatterplot3d(v)

Copula101-010.jpg

Graphics for Clayton, Frank and Gumbel package

> myMvd1 <- mvdc(copula = archmCopula(family = "clayton", param = 2),
+     margins = c("norm", "norm"), paramMargins = list(list(mean = 0,
+         sd = 1), list(mean = 0, sd = 1)))
> myMvd2 <- mvdc(copula = archmCopula(family = "frank", param = 5.736),
+     margins = c("norm", "norm"), paramMargins = list(list(mean = 0,
+         sd = 1), list(mean = 0, sd = 1)))
> myMvd3 <- mvdc(copula = archmCopula(family = "gumbel", param = 2),
+     margins = c("norm", "norm"), paramMargins = list(list(mean = 0,
+         sd = 1), list(mean = 0, sd = 1)))
> par(mfrow = c(1, 3))
> contour(myMvd1, dmvdc, xlim = c(-3, 3), ylim = c(-3, 3), main = "clayton")
> contour(myMvd2, dmvdc, xlim = c(-3, 3), ylim = c(-3, 3), main = "frank")
> contour(myMvd3, dmvdc, xlim = c(-3, 3), ylim = c(-3, 3), main = "gumbel")

Copula101-011.jpg