This function calculates the probability density function of a d-dimensional R-vine copula.

RVinePDF(newdata, RVM, verbose = TRUE)

Arguments

newdata

An N x d data matrix that specifies where the density shall be evaluated.

RVM

An RVineMatrix() object including the structure and the pair-copula families and parameters.

verbose

In case something goes wrong, additional output will be plotted.

Details

The density of a \(d\)-dimensional R-vine copula with \(d-1\) trees and corresponding edge sets \(E_1,...,E_{d-1}\) is given by $$\prod_{\ell=1}^{d-1} \prod_{e\in E_\ell } c_{j(e),k(e)|D(e)}(F(u_{j(e)}|u_{D(e)}),F(u_{k(e)}|u_{D(e)})|\theta_{j(e),k(e)|D(e)}), $$ where \(\boldsymbol{u}=(u_{1},...,u_{d})^\prime\in[0,1]^d\). Further \(c_{j(e),k(e)|D(e)}\) denotes a bivariate copula density associated to an edge \(e\) and with parameter(s) \(\boldsymbol{\theta}_{j(e),k(e)|D(e)}\). Conditional distribution functions such as \(F(u_{j(e)}|\boldsymbol{u}_{D(e)})\) are obtained recursively using the relationship $$h(u|\boldsymbol{v},\boldsymbol{\theta}) := F(u|\boldsymbol{v}) = d C_{uv_j|v_{-j}}(F(u|v_{-j}),F(v_j|v_{-j}))/d F(v_j|v_{-j}),$$ where \(C_{uv_j|\boldsymbol{v}_{-j}}\) is a bivariate copula distribution function with parameter(s) \(\boldsymbol{\theta}\) and \(\boldsymbol{v}_{-j}\) denotes a vector with the \(j\)-th component \(v_j\) removed. The notation of h-functions is introduced for convenience. For more details see Dissmann et al. (2013).

The function is actually just a wrapper to RVineLogLik().

References

Dissmann, J. F., E. C. Brechmann, C. Czado, and D. Kurowicka (2013). Selecting and estimating regular vine copulae and application to financial returns. Computational Statistics & Data Analysis, 59 (1), 52-69.

Author

Thomas Nagler

Examples


# define 5-dimensional R-vine tree structure matrix
Matrix <- c(5, 2, 3, 1, 4,
            0, 2, 3, 4, 1,
            0, 0, 3, 4, 1,
            0, 0, 0, 4, 1,
            0, 0, 0, 0, 1)
Matrix <- matrix(Matrix, 5, 5)

# define R-vine pair-copula family matrix
family <- c(0, 1, 3, 4, 4,
            0, 0, 3, 4, 1,
            0, 0, 0, 4, 1,
            0, 0, 0, 0, 3,
            0, 0, 0, 0, 0)
family <- matrix(family, 5, 5)

# define R-vine pair-copula parameter matrix
par <- c(0, 0.2, 0.9, 1.5, 3.9,
         0, 0, 1.1, 1.6, 0.9,
         0, 0, 0, 1.9, 0.5,
         0, 0, 0, 0, 4.8,
         0, 0, 0, 0, 0)
par <- matrix(par, 5, 5)

# define second R-vine pair-copula parameter matrix
par2 <- matrix(0, 5, 5)

# define RVineMatrix object
RVM <- RVineMatrix(Matrix = Matrix, family = family,
                   par = par, par2 = par2,
                   names = c("V1", "V2", "V3", "V4", "V5"))

# compute the density at (0.1, 0.2, 0.3, 0.4, 0.5)
RVinePDF(c(0.1, 0.2, 0.3, 0.4, 0.5), RVM)
#> [1] 3.278508e-06