數據預測算法-ARIMA預測


簡介

ARIMA: AutoRegressive Integrated Moving Average

ARIMA是兩個算法的結合:AR和MA。其公式如下:

是白噪聲,均值為0, C是常數。 ARIMA的前半部分就是Autoregressive:, 后半部分是moving average:。 AR實際上就是一個無限脈沖響應濾波器(infinite impulse resopnse), MA是一個有限脈沖響應(finite impulse resopnse),輸入是白噪聲。

ARIMA里面的I指Integrated(差分)。 ARIMA(p,d,q)就表示p階AR,d次差分,q階MA。 為什么要進行差分呢? ARIMA的前提是數據是stationary的,也就是說統計特性(mean,variance,correlation等)不會隨着時間窗口的不同而變化。用數學表示就是聯合分布相同:

當然很多時候並不符合這個要求,例如這里的airline passenger數據。有很多方式對原始數據進行變換可以使之stationary:

(1) 差分,即Integrated。 例如一階差分是把原數列每一項減去前一項的值。二階差分是一階差分基礎上再來一次差分。這是最推薦的做法

(2)先用某種函數大致擬合原始數據,再用ARIMA處理剩余量。例如,先用一條直線擬合airline passenger的趨勢,於是原始數據就變成了每個數據點離這條直線的偏移。再用ARIMA去擬合這些偏移量。

(3)對原始數據取log或者開根號。這對variance不是常數的很有效。

時間序列

​ 時間序列簡單的說就是各時間點上形成的數值序列,時間序列分析就是通過觀察歷史數據預測未來的值。在這里需要強調一點的是,時間序列分析並不是關於時間的回歸,它主要是研究自身的變化規律的(這里不考慮含外生變量的時間序列)。

平穩性檢驗

我們知道序列平穩性是進行時間序列分析的前提條件,很多人都會有疑問,為什么要滿足平穩性的要求呢?在大數定理和中心定理中要求樣本同分布(這里同分布等價於時間序列中的平穩性),而我們的建模過程中有很多都是建立在大數定理和中心極限定理的前提條件下的,如果它不滿足,得到的許多結論都是不可靠的。以虛假回歸為例,當響應變量和輸入變量都平穩時,我們用t統計量檢驗標准化系數的顯著性。而當響應變量和輸入變量不平穩時,其標准化系數不在滿足t分布,這時再用t檢驗來進行顯著性分析,導致拒絕原假設的概率增加,即容易犯第一類錯誤,從而得出錯誤的結論。

平穩時間序列有兩種定義:嚴平穩和寬平穩

嚴平穩顧名思義,是一種條件非常苛刻的平穩性,它要求序列隨着時間的推移,其統計性質保持不變。對於任意的τ,其聯合概率密度函數滿足:

嚴平穩的條件只是理論上的存在,現實中用得比較多的是寬平穩的條件。

寬平穩也叫弱平穩或者二階平穩(均值和方差平穩),它應滿足:

  • 常數均值
  • 常數方差
  • 常數自協方差

平穩性處理

由前面的分析可知,該序列是不平穩的,然而平穩性是時間序列分析的前提條件,故我們需要對不平穩的序列進行處理將其轉換成平穩的序列。

對數變換

對數變換主要是為了減小數據的振動幅度,使其線性規律更加明顯(我是這么理解的時間序列模型大部分都是線性的,為了盡量降低非線性的因素,需要對其進行預處理,也許我理解的不對)。對數變換相當於增加了一個懲罰機制,數據越大其懲罰越大,數據越小懲罰越小。這里強調一下,變換的序列需要滿足大於0,小於0的數據不存在對數變換。

如果自相關是拖尾,偏相關截尾,則用 AR 算法

如果自相關截尾,偏相關拖尾,則用 MA 算法

如果自相關和偏相關都是拖尾,則用 ARMA 算法, ARIMA 是 ARMA 算法的擴展版,用法類似 。

img

時間序列分析?時間序列,就是按時間順序排列的,隨時間變化的數據序列。
生活中各領域各行業太多時間序列的數據了,銷售額,顧客數,訪問量,股價,油價,GDP,氣溫。。。隨機過程的特征有均值、方差、協方差等。
如果隨機過程的特征隨着時間變化,則此過程是非平穩的;相反,如果隨機過程的特征不隨時間而變化,就稱此過程是平穩的。
下圖所示,左邊非穩定,右邊穩定。
img
非平穩時間序列分析時,若導致非平穩的原因是確定的,可以用的方法主要有趨勢擬合模型、季節調整模型、移動平均、指數平滑等方法。
若導致非平穩的原因是隨機的,方法主要有ARIMA(autoregressive integrated moving average)及自回歸條件異方差模型等。什么是ARIMA?ARIMA (Auto Regressive Integrated Moving Average) 可以用來對時間序列進行預測,常被用於需求預測和規划中。可以用來對付 ‘隨機過程的特征隨着時間變化而非固定’ 且 ‘導致時間序列非平穩的原因是隨機而非確定’ 的問題。不過,如果是從一個非平穩的時間序列開始, 首先需要做差分,直到得到一個平穩的序列。模型的思想就是從歷史的數據中學習到隨時間變化的模式,學到了就用這個規律去預測未來。ARIMA(p,d,q)模型,其中 d 是差分的階數,用來得到平穩序列。AR是自回歸, p為相應的自回歸項。MA為移動平均,q為相應的移動平均項數。ARIMA數學模型?ARIMA(p,d,q)模型是ARMA(p,q)模型的擴展。ARIMA(p,d,q)模型可以表示為:

其中L 是滯后算子(Lag operator),d in Z, d>0。

AR:
當前值只是過去值的加權求和。

MA:
過去的白噪音的移動平均。

ARMA:
AR和MA的綜合。

ARIMA:
和ARMA的區別,就是公式左邊的x變成差分算子,保證數據的穩定性。

差分算子就是:

令 wt 為:

則 ARIMA 就可以寫成:

基本流程

ARIMA模型運用的基本流程有幾下幾步:

數據可視化,識別平穩性。

對非平穩的時間序列數據,做差分,得到平穩序列。

建立合適的模型。
平穩化處理后,若偏自相關函數是截尾的,而自相關函數是拖尾的,則建立AR模型;
若偏自相關函數是拖尾的,而自相關函數是截尾的,則建立MA模型;
若偏自相關函數和自相關函數均是拖尾的,則序列適合ARMA模型。

模型的階數在確定之后,對ARMA模型進行參數估計,比較常用是最小二乘法進行參數估計。

假設檢驗,判斷(診斷)殘差序列是否為白噪聲序列。

利用已通過檢驗的模型進行預測。


以上為原理記錄,轉發而來。使用python進行ARIMA預測時,可以達到較好的效果,但是ARIMA模型非常依賴數據的時間序列的穩定性,越穩定,預測效果越好,在進行預測前的數據預處理階段尤為重要。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM