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