The combcoint
package implements the combined
non-cointegration test developed by Bayer and Hanck (2013) doi:10.1111/j.1467-9892.2012.00814.x. This statistical
approach improves the reliability of cointegration detection by
aggregating p-values from multiple individual cointegration tests into a
single joint test statistic. Specifically, it combines the outcomes of
the Engle-Granger, Johansen, Boswijk and Banerjee tests using a
Fisher-type combination method. The approach enhances the power and
robustness of cointegration testing, particularly in situations where
individual tests yield mixed or inconclusive results.
The combined test aggregates p-values from the following individual cointegration tests: Engle-Granger Johansen Boswijk Banerjee
The combined test statistic is calculated using Fisher’s combination formula:
\[C = -2 \sum_{i=1}^{k} \ln(p_i)\] where \(p_i\) are the \(p\)-values from the individual tests. Under the null hypothesis of no cointegration, C follows a chi-squared distribution with 2\(\cdot\)k degrees of freedom.
You can install the package from CRAN:
Or from GitHub
The package includes an example dataset taken from Luetkepohl (2007) http://www.jmulti.de/download/datasets/e1.dat, often used for cointegration testing exercises.
The dataset is automatically available when the package is loaded. You can load it as follows:
We demonstrate the application of both the classical Engle-Granger
cointegration test and the combined Bayer-Hanck cointegration test using
the dataset lutkepohl_e1
included in the package.
We first apply the Engle-Granger test:
englegranger(linvestment ~ lincome + lconsumption, data = lutkepohl_e1)
#> $test.stat
#> [1] -2.45286
#>
#> $lags
#> [1] 1
#>
#> $trend
#> [1] "const"
#>
#> $test
#> [1] "Engle-Granger"
#>
#> $formula
#> linvestment ~ lincome + lconsumption
Next, we apply the combined cointegration test on the same dataset:
bayerhanck(linvestment ~ lincome + lconsumption, data = lutkepohl_e1)
#> Registered S3 method overwritten by 'quantmod':
#> method from
#> as.zoo.data.frame zoo
#> ----------------------------------------------------------
#> Bayer Hanck Test for Non-Cointegration
#> ----------------------------------------------------------
#> Test statistic: 12.4303
#> p-Value: 0.1858
By default, the function uses the lags = 1. Optionally, the user can specify the lag length manually, e.g., with 4 lags: