猿创征文|时间序列分析算法之平稳时间序列预测算法和自回归模型(AR)详解+Python代码实现
目錄
前言
一、平穩時間序列預測算法
1.時間序列的分布、均值和協方差函數
概率分布
均值函數
自協方差函數
自相關函數
2.平穩序列的自協方差和自相關函數
自協方差函數
自相關函數
平穩序列的自協方差序列和自相關函數列的性質
3.嚴平穩時間序列
4.寬平穩時間序列
5.聯系和區別
聯系
區別
6.白噪聲序列
定義
7.獨立同分布序列
定義
二、自回歸模型(Autoregressive model,簡稱AR)
定義
建模步驟
第一步:
第二步:
第三步:
第四步:
模型判定
案例實現
點關注,防走丟,如有紕漏之處,請留言指教,非常感謝
參閱
前言
平滑法花費了將近一個月的時間去講解和模擬算法,講解的非常詳細了我個人認為,而且代碼和原理理解起來也相對簡單,代碼實現起來也幾乎沒有什么難度。若是沒有大家想要詳細了解或者掌握時間序列分析算法的建議可以訂閱本人專欄:一文速學-數學建模常用模型。里面涉及到各個場景的分析和預測模型基本都具備了,其中平滑法的所有方法:
都包含其中。接下來我們要對平穩時間序列預測算法進行研究和推導。但是平穩時間序列預測算法的基礎理論還是蠻多蠻復雜的,需要我們對基礎理論有了一定認知才能更輕松的掌握該算法。故我們的開篇第一章先將理論知識全部了解一遍。
希望讀者看完能夠在評論區提出錯誤或者看法,博主會長期維護博客做及時更新。
一、平穩時間序列預測算法
這里的平穩是指寬平穩,其特性是序列的統計特性不隨時間的平移而變化,即均值和協方差不隨時間的平移而變化。?時間序列是指將某種現象某一個統計指標在不同時間上的各個數值,按時間先后順序排列而形成的序列。平穩時間序列粗略地講,一個時間序列,如果均值沒有系統的變化(無趨勢)、方差沒有系統變化,且嚴格消除了周期性變化,就稱之是平穩的。
平穩時間序列是時間序列分析中最重要的特殊類型。到目前為止,時間序列分析基本上是以平穩時間序列為基礎的,對于非平穩時間序列的統計分析,其方法和理論都很有局限性。
這里我們需要了解關于時間序列的基本屬性以及相應點的分布:
1.時間序列的分布、均值和協方差函數
概率分布
由于確定時間序列的分布函數一般不可能,人們更加注意使用時間序列的各種特征量的描述,如均值函數、協方差函數、自相關函數、偏自相關函數等,這些特征量往往能代表隨機變量的主要特征。
均值函數
一個時間序列的均值函數指:
?即為的均值函數,它實質上是一個實數列,均值表示隨機過程在各個時刻的擺動中心。
自協方差函數
?對稱性:
自相關函數
?自相關函數描述了時間序列的自身的相關結構。時間序列的自相關函數具有對稱性,且有
2.平穩序列的自協方差和自相關函數
自協方差函數
若為平穩序列,假定,則我們可以用以下記號表示平穩序列的自協方差函數:
自相關函數
?相應的,嚴平穩序列的自相關函數記為:
平穩序列的自協方差序列和自相關函數列的性質
平穩時間序列分為嚴平穩時間序列與寬平穩時間序列。
3.嚴平穩時間序列
若對于時間t的任意n個值,序列中的隨機變量聯合分布與整數S無關,即有:
則稱為嚴平穩/狹義平穩/強平穩時間序列。嚴平穩的概率分布與時間無關。
4.寬平穩時間序列
如時間序列有有窮的二階矩陣,且滿足以下兩個條件:
則稱該時間序列為寬平穩過程。
寬平穩過程各隨機變量的均值為常數,且任意兩個變量的協方差僅與時間間隔有關。
5.聯系和區別
聯系
- 若一個序列為嚴平穩序列,且有有窮的二階矩陣,那么該序列也必為寬平穩序列。
- 若時間序列為正態序列(即它的任何有限維分布都是正態分布),那么該序列為嚴平穩序列和寬平穩序列是相互等價的。
區別
- 嚴平穩的概率分布隨時間的平移而不變,寬平穩序列的均值和自協方差隨時間的平移而不變。
- 一個嚴平穩序列,不一定是寬平穩序列;一個寬平穩序列也不一定是嚴平穩序列。
實際中討論的平穩時間序列是寬平穩時間序列,指對任意時間下,序列的均值、方差存在并為常數,且自協方差函數與自相關系數只與時間間隔k有關。只有平穩時間序列才可以進行統計分析,因為平穩性保證了時間序列數據都是出自同一分布??梢允褂脝挝桓鶛z驗來檢驗時間序列的平穩性。
若一個平穩時間序列的序列值之間沒有相關性,那么就意味著這種數據前后沒有規律,也就無法挖掘出有效的信息,這種序列稱為純隨機序列。在純隨機序列中,有一種序列稱為白噪聲序列,這種序列隨機且各期的方差一致。平穩時間序列分析在于充分挖掘時間序列之間的關系,當時間序列中的關系被提取出來后,剩下的序列就應該是個白噪聲序列。
6.白噪聲序列
定義
若時間序列滿足下列性質:
?則稱此序列為白噪聲序列。
白噪聲序列是一種特殊的寬平穩序列,也是一種最簡單的平穩序列。
7.獨立同分布序列
定義
如果時間序列中的隨機變量是相互獨立的隨機變量,且具有相同的分布(當有一階矩時,往往還假定),則稱為獨立同分布序列。
?獨立同分布序列是一個嚴平穩序列
一般來說,白噪聲序列與獨立同分布序列是不同的兩種序列。
但是當白噪聲序列為正態序列時,它也是獨立同分布序列,此時我們稱其為正態白噪聲序列。
二、自回歸模型(Autoregressive model,簡稱AR)
定義
自回歸模型是統計上一種處理時間序列的方法,用同一變數例如x的之前各期,亦即至來預測本期的表現,并假設它們為一線性關系。因為這是從回歸分析中的線性回歸發展而來,只是不用x預測y,而是用x預測 x(自己);所以叫做自回歸。
p階自回歸模型的自相關系數拖尾,偏自相關系數p階截尾。
?其中:c是常數項;被假設為平均數等于0,標準差等于的隨機誤差值;被假設為對于任何的t都不變。
?文字敘述為:X的期望值等于一個或數個落后期的線性組合,加常數項,加隨機誤差。
建模步驟
第一步:
對時間蓄力進行白噪音檢測,若經檢驗判定序列為白噪聲,則這種數據前后沒有規律,也就無法挖掘出有效的信息。只有檢測不是白噪音序列才能繼續。
第二步:
對序列作平穩性檢驗,若經檢驗判定為非平穩,則進行序列的平穩化處理,轉第一步;否則轉第三步;
第三步:
對模型進行識別,估計其參數,轉第四步;
第四步:
檢驗模型的適用性,若檢驗通過,則得到擬合模型并可對序列做預測;否則轉第三步;
模型判定
對于觀測到的時間序列,若通過白噪音檢測確定是非白噪音,且經平穩性檢驗后確定為平穩后,常根據相關系數和偏相關系數來識別模型。判斷該問題是否適用AR模型建模,以及大致確定階數p。
通過計算自相關系數SAF,和偏相關系數PACF。
如果一個時間序列滿足以下兩個條件:
- ACF 具有拖尾性,即 ACF(k) 不會在 k 大于某個常數之后就恒等于 0。
- PACF 具有截尾性,即 PACF(k) 在 k>p 時變為 0。(用來確定階數, PACF 在 p 階延遲后未必嚴格為 0 ,而是在 0 附近的小范圍內波動)
那么就可以嘗試使用AR模型。
案例實現
Python中用statsmodels.tsa.ar_model包中的AutoReg來實現自回歸。
from statsmodels.tsa.ar_model import AutoReg?該類函數參數為:
ar_model = AutoReg(endog,lags,trend='c',seasonal=False,exog=None,hold_back=None,period=None,missing='none',*,deterministic=None,old_names=False)這里不展開一一講解,想要詳細了解的可以去看官方解釋:
statsmodels.tsa.ar_model.AutoReg — statsmodels
通常情況下只需要輸入序列endog和階數lags:
endog:接受類型為數組類型,一維時間序列。
lags:模型階數,如果是整數,則模型中包含的滯后數或要包含的滯后指數列表。例如,[1,4]將只包括lags為1和4,而lags=4將包括滯后1、2、3和4。
from statsmodels.tsa.ar_model import AutoReg import numpy as np# 生成N(0,1)隨機正態分布(白噪聲) noise = np.random.randn(200) wnoise = (noise-np.mean(noise))/np.std(noise)# 生成AR(2)線性序列 X(t)=0.5X(t-1)+0.1X(t-2) X = [20,10] # 初值 for i in range(200):x2 = 0.5*X[i+1]+0.1*X[i]+wnoise[i]X.append(x2)# 2階AR模型擬合(OLS) AR2_model = AutoReg(X, 2).fit() # 模型預測第3到第202個時間點的數據 predict = AR2_model.predict(2,201) # 計算殘差 residual = X[2:]-predict我們模擬生成了AR線性蓄力之后,再進行AR2階擬合得到預測值,之后使用matplotlib展示 :
import matplotlib.pyplot as plt plt.figure() plt.subplot(311) plt.plot(X[2:]) plt.subplot(312) plt.plot(predict) plt.subplot(313) plt.plot(residual)?
點關注,防走丟,如有紕漏之處,請留言指教,非常感謝
以上就是本期全部內容。我是fanstuck ,有問題大家隨時留言討論 ,我們下期見。
參閱
平穩時間序列的相關概念_someday or one day的博客-CSDN博客_平穩時間序列
(五十一)時間序列分析二:平穩時間序列分析(ARMA)_小粉橋反手王的博客-CSDN博客_平穩時間序列時間序列模型 (六):平穩時間序列模型 :自回歸AR 、移動平均 MA 、ARMA 模型_wamg瀟瀟的博客-CSDN博客_平穩時間序列模型
平穩時間序列_百度百科
自回歸模型AR(p)的python實現【案例】_Noema_pku的博客-CSDN博客_python自回歸模型
時間序列分析—自回歸(AR) - 知乎瓷片
總結
以上是生活随笔為你收集整理的猿创征文|时间序列分析算法之平稳时间序列预测算法和自回归模型(AR)详解+Python代码实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 疑难杂症---共享打印机驱动安装失败0x
- 下一篇: python爬虫刷网课答题_python