This function performs a Clarke test between two d-dimensional R-vine copula models as specified by their RVineMatrix() objects.

RVineClarkeTest(data, RVM1, RVM2)

Arguments

data

An N x d data matrix (with uniform margins).

RVM1, RVM2

RVineMatrix() objects of models 1 and 2.

Value

statistic, statistic.Akaike, statistic.Schwarz

Test statistics without correction, with Akaike correction and with Schwarz correction.

p.value, p.value.Akaike, p.value.Schwarz

P-values of tests without correction, with Akaike correction and with Schwarz correction.

Details

The test proposed by Clarke (2007) allows to compare non-nested models. For this let \(c_1\) and \(c_2\) be two competing vine copulas in terms of their densities and with estimated parameter sets \(\hat{\boldsymbol{\theta}}_1\) and \(\hat{\boldsymbol{\theta}}_2\). The null hypothesis of statistical indistinguishability of the two models is $$H_0: P(m_i > 0) = 0.5\ \forall i=1,..,N, $$ where \(m_i:=\log\left[\frac{c_1(\boldsymbol{u}_i|\hat{\boldsymbol{\theta}}_1)}{c_2(\boldsymbol{u}_i|\hat{\boldsymbol{\theta}}_2)}\right]\) for observations \(\boldsymbol{u}_i,\ i=1,...,N\).

Since under statistical equivalence of the two models the log likelihood ratios of the single observations are uniformly distributed around zero and in expectation \(50\%\) of the log likelihood ratios greater than zero, the test statistic $$\texttt{statistic} := B = \sum_{i=1}^N \mathbf{1}_{(0,\infty)}(m_i), $$ where \(\mathbf{1}\) is the indicator function, is distributed Binomial with parameters \(N\) and \(p=0.5\), and critical values can easily be obtained. Model 1 is interpreted as statistically equivalent to model 2 if \(B\) is not significantly different from the expected value \(Np = \frac{N}{2}\).

Like AIC and BIC, the Clarke test statistic may be corrected for the number of parameters used in the models. There are two possible corrections; the Akaike and the Schwarz corrections, which correspond to the penalty terms in the AIC and the BIC, respectively.

References

Clarke, K. A. (2007). A Simple Distribution-Free Test for Nonnested Model Selection. Political Analysis, 15, 347-363.

Author

Jeffrey Dissmann, Eike Brechmann

Examples



# vine structure selection time-consuming (~ 20 sec)

# load data set
data(daxreturns)
daxreturns <- daxreturns[1:200, ]

# select the R-vine structure, families and parameters
RVM <- RVineStructureSelect(daxreturns[,1:5], c(1:6))
RVM$Matrix
#>      [,1] [,2] [,3] [,4] [,5]
#> [1,]    3    0    0    0    0
#> [2,]    4    2    0    0    0
#> [3,]    5    4    1    0    0
#> [4,]    1    5    4    4    0
#> [5,]    2    1    5    5    5
RVM$par
#>           [,1]      [,2]      [,3]     [,4] [,5]
#> [1,] 0.0000000 0.0000000 0.0000000 0.000000    0
#> [2,] 1.3867889 0.0000000 0.0000000 0.000000    0
#> [3,] 0.5133930 1.2604023 0.0000000 0.000000    0
#> [4,] 1.1272783 1.2673319 0.6152557 0.000000    0
#> [5,] 0.6008314 0.6308222 5.3967324 4.952073    0
RVM$par2
#>          [,1]     [,2] [,3] [,4] [,5]
#> [1,] 0.000000 0.000000    0    0    0
#> [2,] 0.000000 0.000000    0    0    0
#> [3,] 0.000000 0.000000    0    0    0
#> [4,] 0.000000 0.000000    0    0    0
#> [5,] 2.304664 3.837796    0    0    0

# select the C-vine structure, families and parameters
CVM <- RVineStructureSelect(daxreturns[,1:5], c(1:6), type = "CVine")
CVM$Matrix
#>      [,1] [,2] [,3] [,4] [,5]
#> [1,]    3    0    0    0    0
#> [2,]    5    4    0    0    0
#> [3,]    4    5    2    0    0
#> [4,]    2    2    5    1    0
#> [5,]    1    1    1    5    5
CVM$par
#>           [,1]     [,2]      [,3]     [,4] [,5]
#> [1,] 0.0000000 0.000000 0.0000000 0.000000    0
#> [2,] 0.1976082 0.000000 0.0000000 0.000000    0
#> [3,] 1.7080448 2.104695 0.0000000 0.000000    0
#> [4,] 1.4326014 1.825757 1.2673319 0.000000    0
#> [5,] 0.5197838 1.703305 0.6308222 5.396732    0
CVM$par2
#>         [,1] [,2]     [,3] [,4] [,5]
#> [1,] 0.00000    0 0.000000    0    0
#> [2,] 0.00000    0 0.000000    0    0
#> [3,] 0.00000    0 0.000000    0    0
#> [4,] 0.00000    0 0.000000    0    0
#> [5,] 4.93838    0 3.837796    0    0

# compare the two models based on the data
clarke <- RVineClarkeTest(daxreturns[,1:5], RVM, CVM)
clarke$statistic
#> [1] 108
clarke$statistic.Schwarz
#> [1] 108
clarke$p.value
#> [1] 0.2888205
clarke$p.value.Schwarz
#> [1] 0.2888205