【问题标题】:Setting maxlag for ADF test with python statsmodels not working?使用 python statsmodels 为 ADF 测试设置 maxlag 不起作用?
【发布时间】:2017-04-01 14:50:52
【问题描述】:

我尝试在 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,对应于结果中的第三个条目。

谁能解释为什么会发生这种情况以及如何解决这个问题?

【问题讨论】:

    标签: python statsmodels


    【解决方案1】:

    maxlag参数是adfuller会尝试的最大参数,但不一定要用。如果没有指定,它通过计算 [ceil(12*(n/100)^(1/4))] 来确定 maxpar,因此对于更长的数据集,它假设可能存在更高阶的滞后(n 是观察量在这里)。

    然后它使用信息标准来决定哪个滞后提供最佳模型。信息标准尝试平衡拟合优度,同时最小化模型的复杂性。您可以通过使用 adfuller 函数的 autolag 参数来指定应该使用哪种算法来确定哪种模型是最好的。默认为赤池信息准则。

    如果您想强制模型使用指定的“maxlag”,您应该使用autolag=None 关闭最佳模型的确定。您确定要这样做吗?

    【讨论】:

      猜你喜欢
      • 2012-07-01
      • 1970-01-01
      • 2020-04-02
      • 2017-07-30
      • 2017-04-17
      • 1970-01-01
      • 2017-09-22
      • 2014-01-01
      • 2017-07-01
      相关资源
      最近更新 更多