我想知道是否有比以下方法更好的方法来测试两个变量是否协整:
import numpy as np
import statsmodels.api as sm
import statsmodels.tsa.stattools as ts
y = np.random.normal(0,1, 250)
x = np.random.normal(0,1, 250)
def cointegration_test(y, x):
# Step 1: regress on variable on the other
ols_result = sm.OLS(y, x).fit()
# Step 2: obtain the residual (ols_resuld.resid)
# Step 3: apply Augmented Dickey-Fuller test to see whether
# the residual is unit root
return ts.adfuller(ols_result.resid)
上述方法有效;但是,它不是很有效。当我运行时sm.OLS
,会计算很多东西,而不仅仅是残差,这当然会增加运行时间。我当然可以编写自己的代码来计算残差,但我认为这也不会非常有效。
我正在寻找一个直接测试协整的内置测试。我在想Pandas
,但似乎找不到任何东西。或者,也许有一个聪明的方法可以在不运行回归的情况下测试协整,或者一些有效的方法。
我必须运行很多协整测试,并且改进我当前的方法会很好。