我已尝试在statsmodels中使用ADF测试设置maxlag,但测试使用的滞后数量不是我设置的。它几乎总是少。这是我的意思的一个小例子。
import numpy as np
import statsmodels.tsa.stattools as ts
x = np.array([1,2,3,4,3,4,2,3])
result = ts.adfuller(x, 1) # maxlag is now set to 1
>>> result
(-2.6825663173365015, 0.077103947319183241, 0, 7, {'5%': -3.4775828571428571, '1%': -4.9386902332361515, '10%': -2.8438679591836733}, 15.971188911270618)
maxlag设置为1,但在结果中它表示使用的最大滞后数为0,对应于结果中的第三个条目。
任何人都可以解释为什么会发生这种情况并可能解决这个问题吗?
答案 0 :(得分:1)
maxlag参数是最大参数adfuller
将尝试,但不一定使用。如果没有指定,则通过计算[ceil(12 *(n / 100)^(1/4))]来确定maxpar,以便对于更长的数据集,它假定可能存在更高阶滞后(n是观察量)这里)。
然后使用信息标准来确定哪个滞后给出最佳模型。信息标准尝试平衡拟合的好处,同时最小化模型的复杂性。您可以使用adfuller函数的autolag
参数指定应使用哪种算法来确定哪种模型最佳。默认值为Akaike信息标准。
如果您想强制模型使用指定的'maxlag',则应使用autolag=None
关闭最佳模型的确定。你确定要这么做吗?