This function performs a Clarke test between two d-dimensional R-vine copula
models as specified by their RVineMatrix()
objects.
RVineClarkeTest(data, RVM1, RVM2)
An N x d data matrix (with uniform margins).
RVineMatrix()
objects of models 1 and 2.
Test statistics without correction, with Akaike correction and with Schwarz correction.
P-values of tests without correction, with Akaike correction and with Schwarz correction.
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.
Clarke, K. A. (2007). A Simple Distribution-Free Test for Nonnested Model Selection. Political Analysis, 15, 347-363.
# 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