# Example 14.3 Cointegration Test: The Johansen Approach import numpy as np import pandas as pd import statsmodels.api as sm data = pd.read_csv("http://web.pdx.edu/~crkl/ceR/data/usyc87.txt",index_col='YEAR',sep='\s+',nrows=66) y = data['Y'] c = data['C'] from statsmodels.tsa.vector_ar.vecm import coint_johansen """ Johansen cointegration test of the cointegration rank of a VECM Parameters ---------- endog : array_like (nobs_tot x neqs) Data to test det_order : int * -1 - no deterministic terms - model1 * 0 - constant term - model3 * 1 - linear trend k_ar_diff : int, nonnegative Number of lagged differences in the model. """ def joh_output(res): output = pd.DataFrame([res.lr2,res.lr1], index=['max_eig_stat',"trace_stat"]) print(output.T,'\n') print("Critical values(90%, 95%, 99%) of max_eig_stat\n",res.cvm,'\n') print("Critical values(90%, 95%, 99%) of trace_stat\n",res.cvt,'\n') # Model 3 (2 lag-difference used = 3 lags VAR or VAR(3) model) # with constant/trend (deterministc) term joh_model3 = coint_johansen(data,0,2) # k_ar_diff +1 = K joh_output(joh_model3) # Model 2: with linear trend only joh_model2 = coint_johansen(data,1,2) # k_ar_diff +1 = K joh_output(joh_model2) # Model 1: no constant/trend (deterministc) term joh_model1 = coint_johansen(data,-1,2) # k_ar_diff +1 = K joh_output(joh_model1)