为什么我总是因为adfuller测试而得零?

时间:2017-11-23 02:48:57

标签: python statistics time-series statsmodels hypothesis-test

  

constant_all = [38.315546998853549,40.187217618535399,43.71380567455396,45.450748920811293,50.112269986599735,59.275158665010736,65.979556682432815,106.81142772445702,122.61124737594076,160.38976378829483,109.69662873794118,86.785774468513864,73.201627114685436,62.980558157294979,60.149903740134562,54.010569668890867,54.657627915195405,57.065262050299623,59.576109894133168,61.568376379726971,64.51074294474725]

我得到了如上所列的列表。然后我使用cadf = ts.adfuller(constant_all)运行adfuller测试,然后我想通过cadf[0]访问p值。

然而,我总是零。我做错了什么?

1 个答案:

答案 0 :(得分:0)

根据the documentationcadf[0]是测试统计信息,而cadf[1] p - 值,在您的情况下,约为0.959。

为了便于参考,我们还要添加高和低 p - 值示例:

import statsmodels.tsa.stattools as ts
import numpy as np

# Generate random residuals
np.random.seed(0)
errors = np.random.normal(0, 1, 1000)

# Create AR(1) samples for models with and without unit roots
x_unit_root = [0]
x_no_unit_root = [0]
for i in range(len(errors)):
    x_unit_root.append(x_unit_root[-1] + errors[i])
    x_no_unit_root.append(0.9*x_no_unit_root[-1] + errors[i])

# Calculate Augmented Dickey--Fuller p-values
ts.adfuller(x_unit_root)[1], ts.adfuller(x_no_unit_root)[1]
# (0.89251931327396528, 3.8562004970538103e-06)