時間序列ARIMA模型筆記(理論+實踐)

2022-01-31 數據之路的風景

ARIMA模型的基本思想是將非平穩時間序列轉化為平穩時間序列,然後將因變量僅對它的滯後值以及隨機誤差項的現值和滯後值進行回歸所建立的模型。ARMIA模型有四種形式:移動平均模型-MA(q)、自回歸模型-AR(p)、自回歸移動平均模型ARMA(p,q)以及差分自回歸移動平均模型ARIMA(p,d,q ),可以說所有模型都是ARIMA(p,d,q )的變體。

ARIMA(p,d,q)模型的說明:

1. 差分

這個過程是ARIMA模型相比ARMA模型而言多的一個過程,在時間序列為非平穩序列時,可以對原序列做差分來得到平穩時間序列,可能會需要做多次差分。d這個參數就是定義原時間序列需要做幾次差分,若時間序列本身就是平穩的,數據不需要做差分,則ARMIA模型為ARIMA(p,0,q),等同於ARMA(p,q)。

2. 自回歸

如果時間序列{yt}滿足

其中{εt}是獨立同分布的隨機變量序列,對於任意t,

則稱時間序列服從p階自回歸模型,記為AR(p),等同於ARIMA(p,0,0)。稱為自回歸係數。

3. 移動平均

如果時間序列{yt}滿足

則稱時間序列服從q階移動平均模型,記為MA(q),等同於ARIMA(0,0,q)。稱為移動平均係數。

4. 自回歸移動平均

如果時間序列{yt}滿足

則稱時間序列服從(p,q)階自回歸移動模型,記為ARMA(p,q),等同於ARIMA(p,0,q)。

p,d,q參數的確定及其原則

1. d是時間序列做差分的次數,做差分的目的是將時間序列轉為平穩時間序列,什麼樣的時間序列能稱為平穩時間序列呢?時間序列取自某一隨機過程,次隨機過程的隨機特徵不隨時間變化,則我們稱過程是平穩的,這是教科書上的說法。我的理解是,時間序列滿足加性模型,即時間序列整體沒有明顯的上升或者下降趨勢,隨機波動的規模隨時間的變化也是大致相同的。

2. p和q,對平穩時間序列做其自相關圖和偏自相關圖,根據自相關偏自相關圖的拖尾截尾的性質來確定p和q的值。基本原則如下表:

截尾是指時間序列的自相關函數(ACF)或偏自相關函數(PACF)在某階後均為0的性質(比如AR的PACF);拖尾是ACF或PACF並不在某階後均為0的性質(比如AR的ACF)。判斷過程中拖尾截尾並不一定是以0為標準,可能只是趨於0。

在一個實際的問題中,可能多個模型都適用與這個問題,這時選擇的標準是精簡預測,使參數儘量少。例如一個實際問題,可能ARMA(3,0),ARMA(0,1)和ARMA(p,q)模型都能用,ARMA(p,q)模型參數p+q>2,ARMA(3,0)參數有3個,ARMA(0,1)參數有1個,所以這裡選擇ARMA(0,1)模型。

(作者:EchoCaiCai 

來源:CSDN 

原文:https://blog.csdn.net/cl1143015961/article/details/41448181 )

案   例

https://blog.csdn.net/oxuzhenyi/article/details/76615816

1.1 實驗內容

本實驗主要探討了幾種時間序列的預測模型,首先帶領大家對時間序列有一個初步的認識再在這個基礎之上,向讀者介紹當下最常用的 ARIMA 模型來預測時間序列,接著為讀者展示幾種指數平滑的方法來預測,最後通過幾種模型的對比,讓大家可以從中選擇出一個最佳的模型來實現預測。

1.2 實驗知識點

·        時間序列預測

·        ARIMA 模型

·        指數平滑

1.3 實驗環境

·        R version 3.4.1

·        RStudio

二、實驗內容

2.1 時間序列預測

時間序列預測法就是通過編制和分析時間序列,根據時間序列所反映出來的發展過程、方向和趨勢,進行類推或延伸,藉以預測下一段時間或以後若干年內可能達到的水平。

2.2 時間序列預測法的步驟

第一步收集歷史資料,加以整理,編成時間序列,並根據時間序列繪成統計圖

第二步分析時間序列。時間序列中的每一時期的數值都是由許許多多不同的因素同時發生作用後的綜合結果。

第三步求時間序列的長期趨勢(T)季節變動(s)和不規則變動(I)的值,並選定近似的數學模式來代表它們

第四步利用時間序列資料求出長期趨勢、季節變動和不規則變動的數學模型後,就可以利用它來預測未來的長期趨勢值 T 和季節變動值 s,在可能的情況下預測不規則變動值 I。

2.3 時間序列預測法的分類

時間序列預測法可用於短期預測、中期預測和長期預測。根據對資料分析方法的不同,又可分為:簡單序時平均數法、加權序時平均數法、移動平均法、加權移動平均法、趨勢預測法、指數平滑法、季節性趨勢預測法、市場壽命周期預測法等。

三、實驗步驟

本次實驗主要使用的是自回歸移動平均和指數平滑法。

3.1 ARIMA 模型 

自回歸移動平均模型(ARIMA)包含一個確定(explicit)的統計模型用於處理時間序列的不規則部分,它允許不規則部分可以自相關。

3.1.1 數據準備

加載相應數據包

install.packages('zoo')

install.packages('xts')

install.packages('TTR')

library(zoo)

library(xts)

library(TTR)

本實驗選用的是 42 位英國國王的去世年齡數據,然後將其轉化成時間序列數據,並用圖形的形式展示出來。

kings<-scan("http://robjhyndman.com/tsdldata/misc/kings.dat",skip=3)

kingstimeseries<-ts(kings)

plot.ts(kingstimeseries)

3.1.2 數據差分

ARIMA 模型定義的是一個平穩時間序列。因此,如果從一個非平穩的時間序列開始,那麼首先就需要做時間序列差分直到得到一個平穩時間序列。如果必須對時間序列做 d 階差分才能得到一個平穩序列,那麼就使用 ARIMA(p,d,q) 模型,其中 d 是差分的階數。

可以通過下面的代碼來得到時間序列數據的一階差分,並畫出差分序列的圖:

kingstimeseriesdiff1<-diff(kingstimeseries,differences=1)

plot.ts(kingstimeseriesdiff1)

從一階差分的圖中可以看出,數據已經是平穩的。如果不平穩就需要繼續差分。所以對於英國國王去世年齡時間序列選擇 ARIMA(p,1,q) 的模型。

3.1.3 尋找 ARIMA 模型

當我們的獲得的時間序列是平穩的,或者經過 d 次差分後的到了一個平穩序列,接下來就是選擇一個合適的 ARIMA 模型,通常我們需要檢查平穩時間序列的自相關圖和偏相關圖,也就是尋找 ARIMA(p,d,q) 中合適的 p 值和 q 值。

我們通常採用ARMA模型的AIC法則。我們知道:增加自由參數的數目提高了擬合的優良性,AIC鼓勵數據擬合的優良性但是儘量避免出現過度擬合(Overfitting)的情況。所以優先考慮的模型應是AIC值最小的那一個。赤池信息準則的方法是尋找可以最好地解釋數據但包含最少自由參數的模型。不僅僅包括AIC準則,目前選擇模型常用如下準則: 
* AIC=-2 ln(L) + 2 k 中文名字:赤池信息量 akaike information criterion 
* BIC=-2 ln(L) + ln(n)*k 中文名字:貝葉斯信息量 bayesian information criterion 
* HQ=-2 ln(L) + ln(ln(n))*k hannan-quinn criterion 
構造這些統計量所遵循的統計思想是一致的,就是在考慮擬合殘差的同時,依自變量個數施加「懲罰」。但要注意的是,這些準則不能說明某一個模型的精確度,也即是說,對於三個模型A,B,C,我們能夠判斷出C模型是最好的,但不能保證C模型能夠很好地刻畫數據,因為有可能三個模型都是糟糕的。

acf(kingstimeseriesdiff1,lag.max=20)

acf(kingstimeseriesdiff1,lag.max=20,plot=FALSE)

從上面圖中可以看出在滯後 1 階的自相關值超出了置信邊界,但是其他所有在滯後1-20 階的自相關值都沒有超出置信邊界。

pacf(kingstimeseriesdiff1,lag.max=20)

pacf(kingstimeseriesdiff1,lag.max=20,plot=FALSE)

偏相關圖顯示在滯後 1,2 和 3 階時的偏自相關係數超出了置信邊界,為負值,且在等級上隨著滯後階數的增加而緩慢減少。

安裝 forecast 包並載入:

install.packages("forecast")

library(forecast)

根據 acf 和 pacf 我們可以先擬合 ARIMA(1,1,3) 模型:

kings.arima <- arima(kingstimeseries, order = c(1,1,3))

summary(kings.arima)

3.1.4 模型預測

未來 5 位國王的預測值

kingsarimaforecast <- forecast(kings.arima, h = 5)

kingsarimaforecast

plot(kingsarimaforecast)

3.1.5 模型誤差檢驗

在指數平滑模型下,觀察 ARIMA 模型的預測誤差是否服從零均值、方差不變的正態分布,同時也可以觀察連續預測誤差是否(自)相關。

同時對國王去世年齡使用 ARIMA(1,1,3) 模型後所產生的預測誤差做(自)相關圖,和 Ljung-Box 檢驗:

acf(kingsarimaforecast$residuals,lag.max=20)

Box.test(kingsarimaforecast$residuals, lag=20, type="Ljung-Box")

相關圖顯示出在滯後 1-20 階中樣本自相關值都沒有超出顯著(置信)邊界,而且 Ljung-Box 檢驗的 p 值為 0.9515,所以我們推斷在滯後 1-20 階中沒有明顯證據說明預測誤差是非零自相關的。

Ljung-Box test是對randomness的檢驗,或者說是對時間序列是否存在滯後相關的一種統計檢驗。對於滯後相關的檢驗,我們常常採用的方法還包括計算ACF和PCAF並觀察其圖像,但是無論是ACF還是PACF都僅僅考慮是否存在某一特定滯後階數的相關。LB檢驗則是基於一系列滯後階數,判斷序列總體的相關性或者說隨機性是否存在。 
時間序列中一個最基本的模型就是高斯白噪聲序列。而對於ARIMA模型,其殘差被假定為高斯白噪聲序列,所以當我們用ARIMA模型去擬合數據時,擬合後我們要對殘差的估計序列進行LB檢驗,判斷其是否是高斯白噪聲,如果不是,那麼就說明ARIMA模型也許並不是一個適合樣本的模型。

3.1.6 ARIMA 模型自動預測

我們也可以通過 forecast 包裡的 auto.arima 這個函數進行 ARIMA 模型自動的預測。

kings.arima1 <- auto.arima(kingstimeseries)

summary(kings.arima1)

重新生成模型,通過以下的代碼完成:

kings.arima_new <- arima(kingstimeseries, order=c(0,1,1))

summary(kings.arima_new)

使用自動生成的模型進行預測:

kingsarimaforecast <- forecast(kings.arima_new, h = 5 )

kingsarimaforecast

plot(kingsarimaforecast)

進行模型誤差檢驗

acf(kingsarimaforecast$residuals,lag.max=20)

Box.test(kingsarimaforecast$residuals, lag=20,type="Ljung-Box")

在時間序列下通過對比自動擬合的模型,這也不失為一種參照的標準。

個人總結,參數很重要,對q,d,p 的檢驗,對預測結果可以觀察ARIMA模型的殘差是否是平均值為0且方差為常數的正態分布(服從零均值、方差不變的正態分布),同時也要觀察連續殘差是否(自)相關。

R語言時間序列完整教程:

https://www.analyticsvidhya.com/blog/2015/12/complete-tutorial-time-series-modeling/

相關焦點

  • R語言:時間序列ARIMA模型(三)
    題記:本文是個人的讀書筆記,僅用於學習交流使用,本文將深入研究時間序列技術。
  • 時間序列——ARIMA模型的季節模型
    簡單季節模型簡單季節模型是指序列中的季節效應和其他效應之間是加法關係,即簡單季節模型實際上就是通過趨勢差分、季節差分將序列轉化為平穩序列,具體分為三步:R語言中用arima函數中的seasonal選項擬合季節模型,相關命令如下 :arima(x,order=,include.mean=,method=,transform.pars
  • 時間序列模型分析——ARIMA 模型和SARMIA模型
    ARIMA模型的基本思想是:將預測對象隨時間推移而形成的數據序列視為一個隨機序列,用一定的數學模型來近似描述這個序列。
  • R語言時間序列預測模型:ARIMA vs KNN
    1總述要找到一個合適的模型來預測時間序列數據總是很困難。其中一個原因是,使用時間序列數據的模型往往會暴露出序列相關性。在這篇文章中,我們將比較數據集a101991年至2008年澳大利亞每月的抗糖尿病藥物補貼。
  • 時間序列(三):ARIMA模型實戰
    ARIMA模型的全稱叫做自回歸移動平均模型,全稱是(ARIMA, Autoregressive Integrated Moving Average Model)。也記作ARIMA(p,d,q),是統計模型(statistic model)中最常見的一種用來進行時間序列預測的模型。ARIMA模型是一種自回歸模型,只需要自變量即可預測後續的值。
  • R語言ARIMA集成模型預測時間序列分析
    p=18493 本文我們使用4個時間序列模型對每周的溫度序列建模。第一個是通過auto.arima獲得的,然後兩個是SARIMA模型,最後一個是Buys-Ballot方法。我們使用以下數據k=620n=nrow(elec)futu=(k+1):ny=electricite$Load[1:k]plot(y,type="l")我們開始對溫度序列進行建模(溫度序列對電力負荷的影響很大)
  • [筆記] 時間序列--非平穩序列之ARIMA模型擬合+預測的R命令(上)
    Cramer分解任何一個時間序列x[t]都可以視為兩部分的疊加,一部分是由時間t的多項式決定的確定性成分
  • 時間序列ARMA和ARIMA
    :AR(自回歸模型),AR ( p) ,p階的自回歸模型MA(移動平均模型),MA(q),q階的移動平均模型ARIMA(差分自回歸移動平均模型)1.2 運用對象這裡四種模型都是變量y,針對時間變化而發生的改變,這四種模型的運用對象都是平穩的時間序列。
  • R時間序列分析(8)ARIMA(上)
    在上一篇,我們介紹了時間序列統計建模的幾個基本概念:平穩性、自相關和白噪聲。時間序列數據的建模是在平穩性的基礎上進行的。
  • R時間序列分析-9 : ARIMA(中)
    這種模型隱含著在過去值和當前值之間存在相關性,也就是在所有的滯後值上都有一些不為零的自相關(ACF的拖尾性)。有些時間序列數據,只在較短的滯後表現出相關性,對於這樣的數據,AR模型不會給出簡約的模型形式,這時候選擇MA(q)模型可能是恰當的。
  • R(語言)做時間序列(ARIMA)的案例
    如何用R做單變量的時間序列?
  • 時間序列模型(ARIMA和ARMA)實現過程,含代碼演示
    目錄所用的所有數據包1,數據準備與預處理(1)數據準備(2)數據預處理2,數據重採樣3,平穩性和非白噪聲(1)差分法實現(2)平滑法處理(3)ADF檢驗(4)非白噪聲檢驗4,時間序列定階(1)ACF和PACF定階5,構建模型和預測(1)ARMA模型構建(2)模型好壞檢驗
  • ARIMA時間序列模型-操作篇
    上期我們介紹了ARIMA模型的理論,在理論的基礎上,本期將結合實例進行軟體操作,本期介紹ARIMA模型的SPSS操作,以方便大家對照用自己的數據:如果數據有缺失,是無法做ARIMA的模型預測的,所以第一步是缺失值的填補。
  • R語言用ARIMA模型,ARIMAX模型預測冰淇淋消費時間序列數據
    它們對應的是1951年3月18日至1953年7月11日這一時間段內的四周時間。練習1加載數據集,並繪製變量cons(冰淇淋消費)、temp(溫度)和收入。 ggplot(df, aes(x = X, y = income)) +  ylab("收入") +  xlab("時間") +grid.arrange(p1, p2, p3, ncol=1, nrow=3)
  • 時間序列丨基於 TimeGAN 模型生成時間序列數據及其 Python 實踐
    對於時序領域,本文學習下經典的時間序列數據生成模型 「TimeGAN」,並基於 ydata-synthetic 庫驗證其生成的時間序列效果。TimeGANTimeGAN (Time-series Generative Adversarial Network) 是一種時間序列數據生成模型,由加州大學 Jinsung Yoon 等人在 NeurIPS 2019 中提出。
  • 時間序列 ARMA 模型實戰!
    混合模型(ARMA,Auto-regressive Moving Average)混合模型為同時包含AR模型和MA模型。自回歸不是多元線性回歸小標題中的多元線性回歸這裡特指平時常說的帶有多個自變量的非時間序列多元線性回歸模型。
  • ARIMA模型預測實例
    ARIMA:全稱為自回歸積分滑動平均模型(Autoregressive Integrated Moving Average Model,簡記ARIMA)。其中ARIMA(p,d,q)稱為差分自回歸移動平均模型,AR是自回歸, p為自回歸項; MA為移動平均,q為移動平均項數,d為時間序列成為平穩時所做的差分次數。
  • ARIMA模型預測CO2濃度時間序列-python實現
    第3步-ARIMA時間序列模型在時間序列預測中使用的最常見的方法是被稱為ARIMA模型。ARIMA是可以擬合時間序列數據的模型,以便更好地理解或預測序列中的未來點。有三種不同的整數(p,  d,  q)是用來參數化ARIMA模型。因此,ARIMA模型用符號表示 ARIMA(p, d, q)。
  • 金融時間序列 ARMA 與 ARIMA 的 Python 實現
    >01 ARMA模型ARMA模型全稱為自回歸移動平均模型Autoregressive Moving Average Models - ARMA(p, q),是AR(p)和MA(q)模型之間的結合,從金融的角度理解,AR和MA模型的理論意義在於:AR(p)模型試圖捕捉(解釋)交易市場中經常觀察到的動量和均值回復效應。
  • Python中的ARIMA模型、SARIMA模型和SARIMAX模型對時間序列預測
    p=12272使用ARIMA模型,您可以使用序列過去的值預測時間序列。在本文中,我們從頭開始構建了一個最佳ARIMA模型,並將其擴展到Seasonal ARIMA(SARIMA)和SARIMAX模型。1.時間序列預測簡介時間序列是在定期時間間隔內記錄度量的序列。