Эффективный коинтеграционный тест в Python

Мне интересно, есть ли лучший способ проверить, коинтегрированы ли две переменные, чем следующий метод:

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, но, похоже, ничего не нашел. Или, может быть, есть хитрость для проверки коинтеграции без запуска регрессии или какой-то эффективный метод.

Мне нужно провести много коинтеграционных тестов, и было бы неплохо улучшить мой текущий метод.

17
задан piRSquared 4 January 2017 в 23:47
поделиться