Statsmodels PACF 图置信区间与 PACF 函数不匹配

guy*_*guy 5 python statsmodels

我有一个时间序列,在观察偏自相关 (PACF) 图时似乎有明显的滞后,即 PACF 值大于蓝色置信区间。我想以编程方式验证这一点,但它似乎不起作用。

我使用 statsmodels 时间序列 api 绘制了 PACF 图,这表明第一次滞后很显着。因此,我使用PACF 估计来获取 PACF 值以及每个点的置信区间,但两者之间的置信区间不匹配。更奇怪的是源代码中的绘图函数使用底层估计函数,因此它们应该匹配。

例子:

import numpy as np
import matplotlib.pyplot as plt
import statsmodels.api as sm

x = np.arange(1000) 
sm.graphics.tsa.plot_pacf(x)
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

这表明第一个滞后非常显着,约为 0.98,并且整个图中的置信区间(蓝色矩形)约为 (-0.06, 0.06)。

或者,当尝试获取这些精确的绘图值时(为简洁起见,仅获取前 10 个滞后):

sm.tsa.stattools.pacf(x, nlags=10, alpha=0.05) 
Run Code Online (Sandbox Code Playgroud)

生成的 PACF 值是(与上图匹配):

array([ 1.        ,  0.997998  , -0.00200201, -0.00200402, -0.00200605,
        -0.0020081 , -0.00201015, -0.00201222, -0.0020143 , -0.00201639,
        -0.00201849])
Run Code Online (Sandbox Code Playgroud)

置信区间(上图中以蓝色显示)在第一个滞后中似乎是关闭的:

 array([[ 1.        ,  1.        ],
        [ 0.93601849,  1.0599775 ],
        [-0.06398151,  0.0599775 ],
        [-0.06398353,  0.05997548],
        [-0.06398556,  0.05997345],
        [-0.0639876 ,  0.05997141],
        [-0.06398965,  0.05996935],
        [-0.06399172,  0.05996729],
        [-0.0639938 ,  0.05996521],
        [-0.06399589,  0.05996312],
        [-0.06399799,  0.05996101]]))
Run Code Online (Sandbox Code Playgroud)

这是怎么回事?

API参考:

Jos*_*sef 8

根据代码:

  • stattools.pacf计算估计的 pacf 周围的置信区间,即它以实际值为中心
  • graphics.tsa.plot_pacf取该置信区间并减去估计的 pacf,因此置信区间以零为中心。

我不知道也不记得为什么要这样做。

在示例中,滞后大于或等于 2 的所有 pacf 都接近于零,因此绘图与 stattools.pacf 的结果之间没有明显差异。