【问题标题】:ADF test in statsmodels in PythonPython 中 statsmodels 中的 ADF 测试
【发布时间】:2012-07-01 04:55:50
【问题描述】:

我正在尝试在 Python 中的 statsmodels 中运行 Augmented Dickey-Fuller 测试,但我似乎遗漏了一些东西。

这是我正在尝试的代码:

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)

我收到以下错误:

Traceback (most recent call last):
  File "C:\Users\Akavall\Desktop\Python\Stats_models\stats_models_test.py", line 12, in <module>
    result = ts.adfuller(x)
  File "C:\Python27\lib\site-packages\statsmodels-0.4.1-py2.7-win32.egg\statsmodels\tsa\stattools.py", line 201, in adfuller
    xdall = lagmat(xdiff[:,None], maxlag, trim='both', original='in')
  File "C:\Python27\lib\site-packages\statsmodels-0.4.1-py2.7-win32.egg\statsmodels\tsa\tsatools.py", line 305, in lagmat
    raise ValueError("maxlag should be < nobs")
ValueError: maxlag should be < nobs

我的 Numpy 版本:1.6.1 我的 statsmodels 版本:0.4.1 我正在使用 Windows。

我正在查看文档here,但不知道我做错了什么。我错过了什么?

提前致谢。

【问题讨论】:

    标签: python numpy statistics statsmodels


    【解决方案1】:

    我想通了。默认情况下maxlag 设置为None,而它应该设置为整数。这样的工作:

    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为None,那么adfuller使用文献推荐的默认maxlag,int(np.ceil(12. * np.power(nobs/100., 1/4. ))),这不适用于小数字。 grangercausalitytests github.com/statsmodels/statsmodels/issues/347 中的最小观察次数的类似问题。
    • @user333700,我明白了。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-01
    • 1970-01-01
    • 2016-02-13
    • 2014-05-27
    • 1970-01-01
    • 2022-08-10
    相关资源
    最近更新 更多