序列滯後相關性 - CSDN

2021-02-08 CSDN技術社區

經典的時間序列預測方法都是假設如果一個時間序列有顯著的自相關性,那麼歷史值對預測當前值會很有幫助,但是究竟取多少階的歷史值,就需要通過分析相關函數圖和偏相關函數圖來得到。本文介紹如何什麼是相關函數圖和偏相關函數圖,另外還會介紹一下滯後圖。

什麼是自相關和偏自相關函數?先來解釋下滯後階數n,如果當前值和前2期的值有關,則n=2,那麼可以用時間序列和它的2階滯後序列來訓練一個自回歸模型,預測未來的值。自相關函數(ACF)表達了時間序列和n階滯後序列之間的相關性(考慮了中間時刻的值的影響,比如t-3對t的影響中,就同時考慮了t-2,t-1對t的影響)。偏自相關函數(PACF)表達了時間序列和n階滯後序列之間的純相關性(不考慮中間時刻的值的影響,比如t-3對t的影響中,不會考慮t-2,t-1對t的影響)。如果用自回歸方程來預測t時刻的值,則各滯後階數的係數就是各滯後階數下的偏自相關值,比如下面方程的α1,α2,α3,分別是1階滯後,2階滯後,3階滯後下的偏自相關值。
ACF 和 PACF 可視化
from statsmodels.tsa.stattools import acf, pacffrom statsmodels.graphics.tsaplots import plot_acf, plot_pacfdf = pd.read_csv('https://raw.githubusercontent.com/selva86/datasets/master/a10.csv')# Calculate ACF and PACF upto 50 lags# acf_50 = acf(df.value, nlags=50)# pacf_50 = pacf(df.value, nlags=50)# Draw Plotfig, axes = plt.subplots(1,2,figsize=(16,3), dpi= 100)plot_acf(df.value.tolist(), lags=50, ax=axes[0])plot_pacf(df.value.tolist(), lags=50, ax=axes[1])

如果ACF表現為長拖尾(如上左圖),說明帶有趨勢,需要做差分。如果ACF的1階滯後就截尾,則可能是過度差分了(差分會降低相關性)。如果ACF拖尾一點點,然後截尾的情況下,選擇的差分階數是比較合適的。此時可以用前n個歷史時刻的值做自回歸來預測當前值,關於n的取值則可以參考PACF的截尾處,假設上右圖是差分後的pacf圖,在第2個滯後階數後(從第0開始,0階滯後下就是原序列和原序列相比,相關性為1)就驟然降到了相關性置信區間內,則表示95%的概率不具有相關性,所以該序列可以做2階滯後自回歸。什麼是相關性置信區間?

對於白噪聲序列,按理說不會有任何自相關性,我們期望的自相關性為0,但是由於隨機擾動的存在,自相關性不會為0,而通常假設隨機擾動符合標準正態分布(均值為0,標準差為1),那麼這個隨機擾動的95%置信區間(一般都取95%,當然也可以調整這個概率)可以通過如下算式計算

標準正態分布的z分數表示距離均值有幾個標準差,σ除以根號T表示有偏樣本標準差,
這裡95%置信度下z分數=1.96,標準差σ=1,T是序列長度,則置信區間計算如下:

表示對於白噪聲序列,95%的自相關性落在這個置信區間內。
而這個置信區間就是上面acf和pacf圖中的相關性區間了,也就是說如果滯後階數與原序列的相關性落在這個區間內,就表示不相關。

滯後圖

滯後圖是用時間序列和相應的滯後階數序列做出的散點圖。可以用於觀測自相關性。

from pandas.plotting import lag_plotplt.rcParams.update({'ytick.left' : False, 'axes.titlepad':10})# Importss = pd.read_csv('https://raw.githubusercontent.com/selva86/datasets/master/sunspotarea.csv')a10 = pd.read_csv('https://raw.githubusercontent.com/selva86/datasets/master/a10.csv')# Plotfig, axes = plt.subplots(1, 4, figsize=(10,3), sharex=True, sharey=True, dpi=100)for i, ax in enumerate(axes.flatten()[:4]):    lag_plot(ss, lag=i+1, ax=ax, c='firebrick')    ax.set_title('Lag ' + str(i+1))fig.suptitle('Lag Plots of Sun Spots Area \n(Points get wide and scattered with increasing lag -> lesser correlation)\n', y=1.15)    fig, axes = plt.subplots(1, 4, figsize=(10,3), sharex=True, sharey=True, dpi=100)for i, ax in enumerate(axes.flatten()[:4]):    lag_plot(a10, lag=i+1, ax=ax, c='firebrick')    ax.set_title('Lag ' + str(i+1))fig.suptitle('Lag Plots of Drug Sales', y=1.05)    plt.show()


ok,本篇就這麼多內容啦~,感謝閱讀O(∩_∩)O。

相關焦點

  • #011 時間序列相關性系列:時間滯後互相關
    在上一篇文章中,我們通過Pearson相關簡單介紹了如何分析兩個數據集之間的相關性,並使用移動窗口函數使Pearson相關實現局部同步
  • python時間序列檢驗 - CSDN
    自相關性和自相關係數2. 強平穩和弱平穩3. Python平穩性檢驗實戰重要性:10分 (1-10)。時間序列數據的平穩性對於我們採用什麼樣的分析方式、選擇什麼樣的模型有著至關重要的影響。我們想一下,假如一個時間序列的波動趨勢從來沒有穩定過,那麼它每個時期的波動對於之後一段時期的影響都是無法預測的,因為它隨時可能「變臉」。
  • 時間序列模型matlab代碼 - CSDN
    你是否想要做時間序列分析,但卻不知道代碼怎麼寫?你是否不清楚時間序列分析各種模型該在什麼情況下使用?本文將針對以上兩個問題,帶你入門時間序列分析~等等!自回歸(AR)項是指差分序列的滯後,移動平均(MA)項是指誤差的滯後,而I是用於使時間序列平穩的差分數。ARIMA模型假設數據平穩 – 這意味著數據的變化不依賴於時間變化。白噪聲序列和具有循環特性的序列也可以視為平穩序列。數據應為單變量– ARIMA處理單個變量。自動回歸就是關於過去值的回歸。
  • 【時間序列】時間序列基本概念總結
    不規則波動通常總是夾雜在時間序列中,致使時間序列產生一種波浪形或震蕩式的變動。只含有隨機波動的序列也稱為平穩序列。更具體的說,自回歸預測模型的本質是「利用序列的滯後階數(lags)作為自變量」的線性回歸模型,比如 lags=2 表示使用變量的 t-1 和 t-2 時刻的值作為自變量來預測 t 時刻的值。
  • 不會時間序列預測?不要緊,大神來教你
    當談到自相關時,意思是某些先前時期與當前時期存在相關性,這種相關性是滯後的。例如,在以小時為單位的測量值序列中,今天 12:00 的溫度與 24 小時前的 12:00 的溫度非常相似。如果你比較 24 小時內的溫度變化,就會存在自相關,在本例中,我們將與第 24 小時前的時間存在自相關關係。
  • 手把手教你用Python實現針對時間序列預測的特徵選擇
    自相關圖:講述如何創建時間序列數據的相關圖。4. 時間序列到監督學習:將時間單變量的時間序列轉化為監督性學習問題。5. 滯後變量的特徵重要性:講述如何計算和查看時間序列數據的特徵重要性得分。6. 滯後變量的特徵選擇:講述如何計算和查看時間序列數據的特徵選擇結果。1.
  • 【時間序列】自回歸模型
    並附講時間序列的一些基礎知識點,如果有基礎的可以直接跳到模型部分。1. 時間序列的平穩性1.1 自協方差、自相關函數自相關函數(autocorrelation function)ACF。自相關函數是指不同時點的變量之間的相關性。1.2 平穩性定義平穩可以理解為性質平移不變。時間序列分幾種情況,第一種是純白噪音序列,這個時候就沒有分析的必要了。
  • 【機器學習基礎】不會時間序列預測?不要緊,大神來教你
    當談到自相關時,意思是某些先前時期與當前時期存在相關性,這種相關性是滯後的。例如,在以小時為單位的測量值序列中,今天 12:00 的溫度與 24 小時前的 12:00 的溫度非常相似。如果你比較 24 小時內的溫度變化,就會存在自相關,在本例中,我們將與第 24 小時前的時間存在自相關關係。
  • matlab模型檢驗 - CSDN
    (圖片來源:https://blog.csdn.net/qq_40006058/article/details/80191168)對於單獨的非平穩時間序列,需要通過分來將非平穩時間序列變為平穩時間序列。
  • 測試時間序列的40個問題
    A) 不同時間觀測到的不同序列上多個點之間的線性相關性B) 不同時間觀測到的同一序列上兩點之間的二次相關性C) 同時觀測到的不同序列兩點之間的線性關係D) 在不同時間觀測到的同一序列上兩點之間的線性關係
  • [STATA] 時間序列模型 - ARIMA檢驗
    一、背景介紹時間序列模型是將一個或一組變量按照時間次序排列,用於解釋變量和相互關係的數學表達式,所得到的離散數字組成的序列集合。時間序列模型,可分為平穩時間序列和非平穩時間序列。平穩時間序列可以用來擬合回歸方程進行未來的預測,而非平穩的時間序列不能直接做回歸,會產生沒有實際意義的偽回歸。
  • 時間序列深度學習:狀態 LSTM 模型預測太陽黑子(一)
    來源:Understanding LSTM NetworksLSTM 模型在預測具有自相關性(時間序列和滯後項之間存在相關性)的時間序列時非常有用,因為模型能夠保持狀態並識別時間序列上的模式。但是,在「狀態」模式下運行時,我們通常可以通過利用時間序列中存在的自相關性來獲得高質量的預測結果。在完成本教程時,我們會進一步解釋。就目前而言,可以認為 LSTM 模型對涉及自相關性的時間序列問題可能非常有用,而且 Keras 有能力創建完美的時間序列建模工具——狀態 LSTM 模型。
  • 時間序列深度學習:狀態 LSTM 模型預測太陽黑子(上)
    來源:Understanding LSTM NetworksLSTM 模型在預測具有自相關性(時間序列和滯後項之間存在相關性)的時間序列時非常有用,因為模型能夠保持狀態並識別時間序列上的模式。但是,在「狀態」模式下運行時,我們通常可以通過利用時間序列中存在的自相關性來獲得高質量的預測結果。在完成本教程時,我們會進一步解釋。就目前而言,可以認為 LSTM 模型對涉及自相關性的時間序列問題可能非常有用,而且 Keras 有能力創建完美的時間序列建模工具——狀態 LSTM 模型。
  • r相關性檢驗 - CSDN
    1.6 相關性檢驗對於多元數據,討論變量間是否具有相關關係是很重要的,這裡介紹三種相關檢驗—Pearson相關檢驗、Spearman相關檢驗和Kendall相關檢驗,第一個檢驗是針對正態數據而言的,而後面兩種檢驗屬於秩檢驗.
  • python時間序列平穩性檢驗專題及常見問題 - CSDN
    平穩性序列的相關公式時間序列的平穩性可分為嚴平穩和寬平穩。設{Xt}是一時間序列,對任意正整數m,任取t1、t2、t3、...、tm∈T,對任意整數τ,假如滿足圖1中式(1),則稱時間序列{Xt}是嚴平穩時間序列。
  • 乾貨|時間序列預測類問題下的建模方案探索實踐
    圖1 訓練樣本示例訓練數據和測試數據都以小時為最小時間步,其中部分區域30天內的人群密度指數趨勢如圖2所示: 圖2部分重點區域30天內人群密度指數趨勢在進行時間序列預測建模之前,首先要進行時間序列的自相關性分析,確定訓練數據是符合時間序列要求的
  • 時間序列分析簡介
    11.VAR建模時lag intervals for endogenous要填滯後期,但是此時你並不能判斷哪個滯後時最優的,因此要試,選擇不同的滯後期,至AIC或SC最小時,所對應著的滯後為最優滯後,此時做出來的VAR模型才較為可靠。    12.做協整檢驗前作VAR的原因是,協整檢驗是對滯後期和檢驗形式非常敏感的檢驗,首先需要確定最優滯後。
  • 用 Python 為時間序列預測創建 ARIMA 模型
    作者:沂水寒城,CSDN博客專家,個人研究方向:機器學習、深度學習、NLP、CVBlog: http://yishuihancheng.blog.csdn.netARIMA模型是一種流行且廣泛使用的時間序列預測統計方法。ARIMA是AutoRegressive Integrated Moving Average的縮寫。
  • R-相關性分析
    相關偏相關相關關係可視化第一部分: 相關性分析方法選擇相關分析是研究兩種或兩種以上隨機變量之間的關係的一種統計學方法,可以分析變量間的關係情況以及關係強弱程度等,如身高和體重之間的相關性。對於不同類型的變量,需選擇合適的相關性分析方法,我們常用的相關性分析方法及適用條件如下:1.1 Pearson相關係數最常用,又稱積差相關係數,適用於連續變量之間的相關性分析;使用條件:變量都需符合正態分布1.2 Spearman秩相關係數  適合含有有序分類變量或者全部是有序分類變量的相關性分析;但其屬於非參數方法,檢驗效能較Pearson係數低1.3 無序分類變量的相關性