This function calculates the standard errors of a d-dimensional R-vine copula model given the Hessian matrix.
RVineStdError(hessian, RVM)
The Hessian matrix of the given R-vine.
An RVineMatrix()
object including the structure, the
pair-copula families, and the parameters.
The calculated standard errors for the first parameter
matrix. The entries are ordered with respect to the ordering of the
RVM$par
matrix.
The calculated standard errors for the second parameter matrix.
The negative Hessian matrix should be positive semidefinite. Otherwise
NAs will be returned in some entries and the non-NA entries may be wrong. If
the negative Hessian matrix is negative definite, then one could try a near
positive matrix. The package Matrix
provides a function called
nearPD
to estimate a matrix which is positive definite and close to
the given matrix.
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.
Schepsmeier, U. and J. Stoeber (2014) Derivatives and Fisher information of bivariate copulas. Statistical Papers, 55(2), 525-542. online first: https://link.springer.com/article/10.1007/s00362-013-0498-x.
Web supplement: Derivatives and Fisher Information of bivariate copulas. https://mediatum.ub.tum.de/node?id=1119201
Stoeber, J. and U. Schepsmeier (2013). Estimating standard errors in regular vine copula models. Computational Statistics, 28 (6), 2679-2707 https://link.springer.com/article/10.1007/s00180-013-0423-8#.
# 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"))
# simulate a sample of size 300 from the R-vine copula model
set.seed(123)
simdata <- RVineSim(300, RVM)
# compute the Hessian matrix of the first row of the data
out2 <- RVineHessian(simdata,RVM)
# get the standard errors
RVineStdError(out2$hessian, RVM)
#> Warning: In RVineStdError: The negative Hessian matrix is not positive definite. Thus NAs will be returned in some entries.
#> Warning: NaNs produced
#> $se
#> [,1] [,2] [,3] [,4] [,5]
#> [1,] 0.0000000 0.000000000 0.0000000 0.000000 0
#> [2,] 0.1715771 0.000000000 0.0000000 0.000000 0
#> [3,] 2.4287252 2.163054785 0.0000000 0.000000 0
#> [4,] 0.4921903 NaN NaN 0.000000 0
#> [5,] 2.3301938 0.004238288 0.1437003 4.465391 0
#>