簡體   English   中英

Statsmodels PACF plot 置信區間與 PACF function 不匹配

[英]Statsmodels PACF plot confidence interval does not match PACF function

我有一個時間序列,在觀察偏自相關 (PACF) plot 時似乎有明顯的滯后,即 PACF 值大於藍色置信區間。 我想以編程方式驗證這一點,但它似乎不起作用。

我用 statsmodels 時間序列 api 繪制了 PACF plot,這表明第一個滯后是顯着的。 因此,我使用PACF 估計來獲取 PACF 值以及每個點的置信區間,但兩者之間的置信區間不匹配。 更奇怪的是源代碼中的 plot function使用基礎估計 function 所以它們應該匹配。

例子:

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()

在此處輸入圖像描述

這表明第一個滯后非常顯着,約為 0.98,整個 plot 的置信區間(藍色矩形)約為(-0.06,0.06)。

或者,在嘗試獲取這些精確的 plot 值時(為簡潔起見,僅獲取前 10 個滯后值):

sm.tsa.stattools.pacf(x, nlags=10, alpha=0.05) 

生成的 PACF 值為(與上圖匹配):

array([ 1.        ,  0.997998  , -0.00200201, -0.00200402, -0.00200605,
        -0.0020081 , -0.00201015, -0.00201222, -0.0020143 , -0.00201639,
        -0.00201849])

置信區間(在上圖中以藍色顯示)似乎在第一個滯后時關閉:

 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]]))

這是怎么回事?

Api 參考:

根據代碼:

  • stattools.pacf計算估計 pacf 周圍的置信區間,即它以實際值為中心
  • graphics.tsa.plot_pacf采用該置信區間並減去估計的 pacf,因此置信區間以零為中心。

我不知道也不記得為什么要這樣做。

在該示例中,滯后大於或等於 2 的所有 pacf 都接近於零,因此 plot 與 stattools.pacf 的結果之間沒有明顯差異。

滯后 0 的 PACF 始終為 1(參見此處的示例),因此其置信區間為 [1,1]。

這是由計算 CI 的代碼片段的最后一行確保的:

varacf = 1. / len(x)  # for all lags >=1
interval = stats.norm.ppf(1. - alpha / 2.) * np.sqrt(varacf)
confint = np.array(lzip(ret - interval, ret + interval))
confint[0] = ret[0]  # fix confidence interval for lag 0 to varpacf=0

(另請參閱問題 1969 ,其中已解決此問題)。

由於 0 滯后沒有意義,您通常使 PACF plot 從滯后 1 開始(如 R 的pacf function )。 這可以通過zero=False來實現:

sm.graphics.tsa.plot_pacf(x, ax=axes[0], zero=True, title='zero=True (default)')
sm.graphics.tsa.plot_pacf(x, ax=axes[1], zero=False, title='zero=False')

在此處輸入圖像描述

如果我正確理解了最初的問題——為什么 ACF/PACF function 返回的 CI 編號與圖表上顯示的 CI(由 function plot_acf 制作)不匹配? 答案很簡單——圖上的 CI 以 0 為中心,它使用的數字與您從 acf/pacf 函數中獲得的數字相同。

我仍然不遵循答案。 通過查看我自己的數據,我了解到圖表以零為中心,但按原樣描繪了值。 這不就是把兩個不同的天平合二為一嗎? 您不應該選擇 1:原始值與原始 CI(塊 1),或者將值視為 0,CI 以零為中心(塊 2)?

下圖說明了我的觀點:

第一個塊: statsmodels.tsa.stattools.acf(df,nlags=10,alpha=0.05,fft=True)。

第二塊: LCL-value和UCL-value減去值,與0比較。

第三塊:匹配圖表 sm.graphics.tsa.plot_acf(df, zero=False, lags = 10, alpha=0.05) 將顯示:調整后的 LCL 和 UCL,但原始值。

如您所見,“原始”方式沒有顯着結果(eval、eval_w_0),但我從圖中得到了顯着結果(eval_adj)。

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM