Zastanawiam się, czy istnieje lepszy sposób na sprawdzenie, czy dwie zmienne są skointegrowane niż następujący sposób:Skuteczny test kointegracji w Pythonie
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)
Powyższa metoda działa; jednak nie jest bardzo wydajny. Kiedy uruchamiam sm.OLS
, oblicza się wiele rzeczy, a nie tylko reszty, co oczywiście zwiększa czas wykonywania. Mógłbym oczywiście napisać własny kod, który oblicza tylko pozostałości, ale nie sądzę, że będzie to również bardzo efektywne.
Szukam testu wbudowanego, który bezpośrednio testuje kointegrację. Myślałem, Pandas
, ale wydaje się, że nie można znaleźć niczego. A może jest sprytny do testowania kointegracji bez uruchamiania regresji lub jakiejś skutecznej metody.
Muszę uruchomić wiele testów kointegracyjnych i byłoby miło poprawić moją obecną metodę.
Witajcie - minęło kilka lat od ostatniej odpowiedzi tutaj. Zastanawiam się, czy w jakikolwiek sposób dokonano tutaj jakiegokolwiek postępu? Nie sądzę, by w statmodels nadal istniała metoda testowania kointegracji, prawda? – WillZ