我试着用statsmodels中的ADF测试来设置maxlag,但是测试使用的lag数量并不是我设置的那样。几乎总是更少。这是我的意思的一个小例子。在
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,但在结果中,它表示使用的最大lags为0,对应于result中的第三个条目。在
有谁能解释一下为什么会发生这种情况,以及如何解决这个问题?在
maxlag参数是
adfuller
将尝试的最大参数,但不一定要使用。如果没有指定,它通过计算[ceil(12*(n/100)^(1/4))]来确定maxpar,因此对于较长的数据集,它假设可能存在高阶滞后(n是这里的观测量)。在然后,它使用一个信息准则来决定哪个延迟给出了最好的模型。信息准则试图在最小化模型复杂度的同时平衡拟合优度。{ad2>可以使用哪个函数来确定哪个函数是最好的。默认为Akaike信息准则。在
如果您想强制模型使用指定的“maxlag”,您应该使用
autolag=None
关闭最佳模型的确定。你确定要这么做吗?在相关问题 更多 >
编程相关推荐