Что именно делает maxlag в тесте adfuller в statsmodels? - PullRequest
0 голосов
/ 02 марта 2019

Я думал, что maxlag означает, сколько раз (1-L) применяется к исходному временному ряду, где L - это оператор задержки, как в (1-L)x[t] = 1 - x[t-1].

Однако, когда я попытался проверить свою гипотезу, используя приведенный ниже код, где s - прямое суммирование x, или, что эквивалентно, x - это разность первого уровня s, яне может получить те же результаты с maxlag=1 на s.

from statsmodels.tsa.stattools import adfuller
import numpy as np
import json


T = 1000
a = 0.9
x = np.zeros(T)
s = np.zeros(T)
np.random.seed(0)
for t in range(1, T):
    x[t] = x[t-1]*a + np.random.normal(0, 1)
    s[t] = s[t-1] + x[t]

rst = dict()
rst['adf'], rst['pvalue'], rst['usedlag'], rst['nobs'], rst['critical_values'] \
    = adfuller(x[1:], maxlag=0, autolag=None, regression='c')
print(json.dumps(rst, indent=4))

rst['adf'], rst['pvalue'], rst['usedlag'], rst['nobs'], rst['critical_values'] \
    = adfuller(s, maxlag=1, autolag=None, regression='c')
print(json.dumps(rst, indent=4))

Вывод, который я получаю:

{
    "adf": -6.682116103264646,
    "pvalue": 4.315988156691866e-09,
    "usedlag": 0,
    "nobs": 998,
    "critical_values": {
        "1%": -3.4369193380671,
        "5%": -2.864440383452517,
        "10%": -2.56831430323573
    }
}
{
    "adf": -0.6692634372057539,
    "pvalue": 0.8545511935911223,
    "usedlag": 1,
    "nobs": 998,
    "critical_values": {
        "1%": -3.4369193380671,
        "5%": -2.864440383452517,
        "10%": -2.56831430323573
    }
}

Мой код неверен или моя гипотеза неверна?

Также, пожалуйста, дайте мне знать, если этоправильный форум для публикации, так как это своего рода программирование и статистика.

...