次の方法よりも、2 つの変数が共和分されているかどうかをテストするためのより良い方法があるかどうか疑問に思っています。
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
ていたのですが、なかなか見つからないようです。あるいは、回帰や効率的な方法を実行せずに共和分をテストする賢い方法があるかもしれません。
多くの共和分テストを実行する必要があり、現在の方法を改善できればよいと思います。