在Python中使用Augmented Dickey Fuller测试的结果不同

时间:2017-03-30 06:07:22

标签: python statistics

我想检查数据是否静止。我使用不同的参数输入应用ADF测试,如下所示:

from statsmodels.tsa.stattools import adfuller
Y = df.values
result = adfuller(Y, maxlag=15, autolag=None, regression='ct')

我得到了第一个结果:

adf              -16.057
p                1.12e-22
crit. val.       1%: -3.959, 5%: -3.411, 10%: -3.127
stationary?      true

下一个:

result = adfuller(Y) # use standard values for all parameters in adfuller() method

结果显示我的数据不稳定。它与之前的结果相反:

ADF Statistic: -1.391000
p-value: 0.586583 
Critical Values:
        1%: -3.431
        5%: -2.862
        10%: -2.567

您是否应该帮助我解释为什么两种结果之间的差别如此?

1 个答案:

答案 0 :(得分:0)

我认为有两个原因

  1. 滞后:
  2. 您在第一次测试中设置了autolag=None。使用autolag=None算法将使用maxlag作为Augmented Dickey-Fuller测试中的滞后。所以在result = adfuller(Y, maxlag=15, autolag=None, regression='ct')中,它使用15滞后的数据测试静止。

    默认设置为autolag = "AIC"时,会选择延迟数以最小化AIC。选择的延迟是测试结果的第3个result[2]

    检查两次测试的滞后是否相同。

    1. 回归:

      1)。 'ct':常数和趋势

      2)。默认值:仅限常量

    2. python中adfuller的详细信息:adfuller