使用 python statsmodels 设置 ADF 测试的 maxlag 不起作用?
Setting maxlag for ADF test with python statsmodels not working?
我尝试在 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,对应于结果中的第三个条目。
谁能解释为什么会发生这种情况以及如何解决这个问题?
maxlag参数是最大参数adfuller
会试,但不一定用。如果指定了 none,它会通过计算 [ceil(12*(n/100)^(1/4))] 来确定 maxpar,因此对于更长的数据集,它假设可能存在更高阶的滞后(n 是这里的观察量)。
然后它使用信息标准来决定哪个滞后提供最佳模型。信息标准尝试在拟合优度与最小化模型复杂性之间取得平衡。您可以使用 adfuller 函数的 autolag
参数指定应该使用哪种算法来确定哪个模型是最好的。默认为赤池信息准则。
如果您想强制模型使用指定的 'maxlag',您应该使用 autolag=None
关闭最佳模型的确定。您确定要这样做吗?
我尝试在 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,对应于结果中的第三个条目。
谁能解释为什么会发生这种情况以及如何解决这个问题?
maxlag参数是最大参数adfuller
会试,但不一定用。如果指定了 none,它会通过计算 [ceil(12*(n/100)^(1/4))] 来确定 maxpar,因此对于更长的数据集,它假设可能存在更高阶的滞后(n 是这里的观察量)。
然后它使用信息标准来决定哪个滞后提供最佳模型。信息标准尝试在拟合优度与最小化模型复杂性之间取得平衡。您可以使用 adfuller 函数的 autolag
参数指定应该使用哪种算法来确定哪个模型是最好的。默认为赤池信息准则。
如果您想强制模型使用指定的 'maxlag',您应该使用 autolag=None
关闭最佳模型的确定。您确定要这样做吗?