Test for Cointegration Using the Johansen Test
This example shows how to assess whether a multivariate time series has multiple cointegrating relations using the Johansen test.
Load Data_Canada
into the MATLAB® Workspace. The data set contains the term structure of Canadian interest rates [156]. Extract the short-term, medium-term, and long-term interest rate series.
load Data_Canada Y = Data(:,3:end); % Interest rate data
To illustrate the input and output structure of jcitest
when conducting multiple tests, test for the cointegration rank using the default H1 model and two different lag structures.
[h,pValue,stat,cValue] = jcitest(Y,'Model','H1','Lags',1:2);
************************ Results Summary (Test 1) Data: Y Effective sample size: 39 Model: H1 Lags: 1 Statistic: trace Significance level: 0.05 r h stat cValue pValue eigVal ---------------------------------------- 0 1 35.3442 29.7976 0.0104 0.3979 1 1 15.5568 15.4948 0.0490 0.2757 2 0 2.9796 3.8415 0.0843 0.0736 ************************ Results Summary (Test 2) Data: Y Effective sample size: 38 Model: H1 Lags: 2 Statistic: trace Significance level: 0.05 r h stat cValue pValue eigVal ---------------------------------------- 0 0 25.8188 29.7976 0.1346 0.2839 1 0 13.1267 15.4948 0.1109 0.2377 2 0 2.8108 3.8415 0.0937 0.0713
The default "trace" test assesses null hypotheses of cointegration rank less than or equal to r against the alternative , where n is the dimension of the data. The summaries show that the first test rejects a cointegration rank of 0 (no cointegration) and just barely rejects a cointegration rank of 1, but fails to reject a cointegration rank of 2. The inference is that the data exhibit 1 or 2 cointegrating relationships. With an additional lag in the model, the second test fails to reject any of the cointegration ranks, providing little by way of inference. It is important to determine a reasonable lag length for the VEC model (as well as the general form of the model) before testing for cointegration.
Because the Johansen method, by its nature, tests multiple rank specifications for each specification of the remaining model parameters, jcitest
returns the results in the form of tabular arrays, and indexes by null rank and test number.
Display the test results, h
.
h
h=2×7 table
r0 r1 r2 Model Lags Test Alpha
_____ _____ _____ ______ ____ _________ _____
t1 true true false {'H1'} 1 {'trace'} 0.05
t2 false false false {'H1'} 2 {'trace'} 0.05
Column headers indicate tests r0
, r1
, and r2
, respectively, of , , and against . Row headers t1
and t2
indicate the two separate tests (two separate lag structures) specified by the input parameters.
Access the result for the second test at null rank using tabular array indexing.
h20 = h.r0(2)
h20 = logical
0