在本文中,我將介紹ARMA,ARIMA(Box-Jenkins),SARIMA和ARIMAX模型如何用于預測時間序列數(shù)據(jù)。
我們可以使用backshift滯后算子來執(zhí)行計算。例如,滯后算子可用于計算的時間序列值的滯后差分,
其中k表示的差分滯后期。對于k=1,我們獲得普通的差分,而對于k=2我們獲得相對于一階的差分。讓我們考慮R中的一個例子。
使用R,我們可以使用diff
函數(shù)計算滯后差分。函數(shù)的第二個參數(shù)表示所需的滯后k,默認設(shè)置為k=1。例如:
By <- diff(y) # y\_i - B y\_i
B3y <- diff(y, 3) # y\_i - B^3 y\_i
message(paste0("y is: ", paste(y, collapse =
## y is: 1,3,5,10,20
## By is: 2,2,5,10
## B^3y is: 9,17
滯后k的自相關(guān)定義為:
要計算自相關(guān),我們可以使用以下R函數(shù):
get_autocor <- function(x, lag) {
x.left <- x\[1:(length(x) - lag)\]
x.right <- x\[(1+lag):(length(x))\]
autocor <- cor(x.left, x.right)
return(autocor)
}
get_autocor(y, 1)
## \[1\] 0.9944627
# 相隔2個時間點(滯后期2)測量值的相關(guān)性
get_autocor(y, 2)
## \[1\] 0.9819805
數(shù)據(jù)的高度自相關(guān)表明數(shù)據(jù)具有明確的時間趨勢。
由于觀察到較大滯后的自相關(guān)可以是較低滯后的相關(guān)結(jié)果,因此通常值得考慮偏自相關(guān)函數(shù)(pACF)。pACF的想法是計算偏相關(guān)性,這種相關(guān)性決定了對變量的最近觀察樣本的相關(guān)性。pACF定義為:
使用pACF可以識別是否存在實際滯后的自相關(guān)或這些自相關(guān)是否是由其他樣本引起的。
計算和繪制ACF和pACF的最簡單方法是分別使用acf
和pacf
函數(shù):
par(mfrow = c(1,2))
acf(y) # ACF
pacf(y) # pACF
在ACF可視化中,ACF或pACF被繪制為滯后的函數(shù)。指示的水平藍色虛線表示自相關(guān)顯著的水平。
St
Tt
?t
執(zhí)行分解的方式取決于時間序列數(shù)據(jù)是加法還是乘法。
加法模型假設(shè)數(shù)據(jù)可以分解為
另一方面,乘法模型假設(shè)數(shù)據(jù)可以被分解為
加法:每個時期的季節(jié)效應相似。
乘法:季節(jié)性趨勢隨時間序列的變化而變化。
AirPassengers
數(shù)據(jù)集提供了乘法時間序列的示例。
data(AirPassengers)
plot(AirPassengers)
AirPassengers
數(shù)據(jù)集:
plot(log(AirPassengers))
正如我們所看到的,采用對數(shù)已經(jīng)使季節(jié)性成分的變化均衡。請注意,總體增長趨勢沒有改變。
要分解R中的時間序列數(shù)據(jù),我們可以使用該decompose
函數(shù)。請注意,我們應該通過type
參數(shù)提供時間序列是加法的還是乘法的。
對于AirPassengers
數(shù)據(jù)集,我們指定數(shù)據(jù)是乘法的并獲得以下分解:
plot(decompose(AirPassengers, type = "multiplicative"))
分解表明,多年來航空公司乘客總數(shù)在增加。此外,我們已經(jīng)觀察到的季節(jié)性影響已被清楚地捕捉到。
讓我們考慮可以EuStockMarkets
數(shù)據(jù)集的分解:
daxData <- EuStockMarkets\[, 1\] #數(shù)據(jù)似乎不是可乘的,請使用加法分解
decomposed <- decompose(daxData, type = "additive")
plot(decomposed)
該圖顯示了1992年至1998年的DAX數(shù)據(jù)中的以下內(nèi)容:
整體價格穩(wěn)步上升。
季節(jié)性趨勢強烈:每年年初,股價相對較低,并在夏季結(jié)束時達到相對最大值。
除1997年和1998年之間的最終測量外,隨機噪聲的影響可以忽略不計。
生成時間序列數(shù)據(jù)的過程可以是平穩(wěn)的也可以是非平穩(wěn)的。例如,數(shù)據(jù)EuStockMarkets
和AirPassengers
數(shù)據(jù)都是非平穩(wěn)的,因為數(shù)據(jù)有增加的趨勢。為了更好地區(qū)分平穩(wěn)和非平穩(wěn)過程,請考慮以下示例:
par(mfrow = c(1,2))#
data(nino)
x <- nino3.4
plot(x, main = "Stationary process")# 飛機旅客數(shù)據(jù)
plot(AirPassengers, main = "Non-stationary process")
左圖顯示了一個平穩(wěn)過程,其中數(shù)據(jù)在所有測量中表現(xiàn)相似。右圖顯示了一個非平穩(wěn)過程,其中平均值隨著時間的推移而增加。
介紹了與時間序列數(shù)據(jù)分析相關(guān)的最重要概念后,我們現(xiàn)在可以開始研究預測模型。
ARMA代表自回歸移動平均模型。ARMA模型僅適用于平穩(wěn)過程,并具有兩個參數(shù):
p:自回歸(AR)模型的階數(shù)
q:移動平均(MA)模型的階數(shù)
使用backshift運算符,我們可以通過以下方式制定ARMA模型:
通過定義
和,ARMA模型簡化為。總之,ARIMA模型具有以下三個參數(shù):
p:自回歸(AR)模型的階數(shù)
d:差分階數(shù)
q:移動平均(MA)模型的階數(shù)
在ARIMA模型中,通過將替換差分,將結(jié)果轉(zhuǎn)換為差分yt
然后通過指定模型
在下文中,讓我們考慮ARIMA模型的三個參數(shù)的解釋。
我們可以使用該arima.sim
函數(shù)模擬自回歸過程。通過該函數(shù),可以通過提供要使用的MA和AR項的系數(shù)來指定模型。在下文中,我們將繪制自相關(guān)圖,因為它最適合于發(fā)現(xiàn)自回歸的影響。
第一個例子表明,對于ARIMA(1,0,0)過程,階數(shù)1的pACF非常高,而對于ARIMA(2,0,0)過程,階數(shù)1和階數(shù)2自相關(guān)都很重要。因此,可以根據(jù)pACF顯著的最大滯后來選擇AR項的階數(shù)。
ARIMA(0,1,0)模型簡化為隨機游走模型
以下示例演示了差分對AirPassengers
數(shù)據(jù)集的影響:
雖然第一個圖表顯示數(shù)據(jù)顯然是非平穩(wěn)的,但第二個圖表明差分時間序列是相當平穩(wěn)的。
其中當前估計值取決于先前測量值的殘差。
可以通過繪制自回歸函數(shù)來研究移動平均的影響:
請注意,對于自回歸圖,我們需要注意第一個x軸位置表示滯后為0(即標識向量)。在第一個圖中,只有第一個滯后的自相關(guān)是顯著的,而第二個圖表明前兩個滯后的自相關(guān)是顯著的。為了找到MA的階數(shù),適用與AR類似的規(guī)則:MA的階數(shù)對應于自相關(guān)顯著的最大滯后期。
為了確定哪個更合適,AR或MA,我們需要考慮ACF(自相關(guān)函數(shù))和PACF(偏ACF)。
AR和MA的組合得到以下時間序列數(shù)據(jù):
P:季節(jié)性自回歸(SAR)項的階數(shù)
D:季節(jié)差分階數(shù)
q:季節(jié)性移動平均線(SMA)的階數(shù)
auto.arima
`forecast`
我們將使用數(shù)據(jù)展示ARMA的使用,該數(shù)據(jù)tseries
給出了Nino Region 3.4指數(shù)的海面溫度。讓我們驗證數(shù)據(jù)是否平穩(wěn):
d=0
為了驗證是否存在任何季節(jié)性趨勢,我們將分解數(shù)據(jù):
沒有整體趨勢,這是平穩(wěn)過程的典型趨勢。但是,數(shù)據(jù)存在強烈的季節(jié)性因素。因此,我們肯定希望包含對季節(jié)性影響進行建模的參數(shù)。
對于季節(jié)性模型,我們需要指定額外的參數(shù)參數(shù)(P,D,Q)S。由于季節(jié)性趨勢在時間序列數(shù)據(jù)中不占主導地位,我們將設(shè)置D=0。此外,由于尼諾數(shù)據(jù)中的季節(jié)性趨勢是一種年度趨勢,我們可以設(shè)置S=12個月。為了確定季節(jié)性模型的其他參數(shù),我們考慮季節(jié)性成分的圖。
我們設(shè)置P=2 Q=0
對于非季節(jié)性模型,我們需要找到p和q。為此,我們將繪制ACF和pACF來確定AR和MA參數(shù)的值。
我們可以使用包中的Arima
函數(shù)來擬合模型forecast
。
我們現(xiàn)在可以使用該模型來預測未來Nino 3.4地區(qū)的氣溫如何變化。有兩種方法可以從預測模型中獲得預測。第一種方法依賴于predict
函數(shù),而第二種方法使用包中的forecast
函數(shù)。使用該predict
功能,我們可以通過以下方式預測和可視化結(jié)果:
##
## Attaching package: 'ggplot2'
## The following object is masked from 'package:forecast':
##
## autolayer
如果我們不需要自定義繪圖,我們可以使用以下forecast
函數(shù)輕松地獲取預測和相應的可視化:
# 使用內(nèi)置繪圖功能:
forecast <- forecast(A, h = 60) # 預測未來5年
plot(forecast)
為了演示ARIMA模型對非平穩(wěn)數(shù)據(jù)的使用,我們將使用數(shù)據(jù)集astsa
。該數(shù)據(jù)集提供全球平均陸地 - 海洋溫度偏差的年度測量值。
d=1
p=0q=1
我們現(xiàn)在可以預測未來幾年平均陸地 - 海洋溫度偏差將如何變化:
該模型表明,未來幾年平均陸地 - 海洋溫度偏差將進一步增加。
為了展示ARIMAX模型的使用,我們將使用臭氧數(shù)據(jù)集 。
讓我們加載臭氧數(shù)據(jù)集并將其劃分為測試和訓練集。請注意,我們已確保訓練和測試數(shù)據(jù)包含連續(xù)的時間測量。
為此,我們將在臭氧數(shù)據(jù)集中創(chuàng)建一個新列,該列反映了相對時間點:
現(xiàn)在我們有了時間維度,我們可以繪制臭氧水平:
時間序列數(shù)據(jù)似乎是平穩(wěn)的。讓我們考慮ACF和pACF圖,看看我們應該考慮哪些AR和MA
自相關(guān)圖非常不清楚,這表明數(shù)據(jù)中實際上沒有時間趨勢。因此,我們會選擇ARIMA(0,0,0)模型。由于具有參數(shù)(0,0,0)的ARIMAX模型沒有傳統(tǒng)線性回歸模型的優(yōu)勢,我們可以得出結(jié)論,臭氧數(shù)據(jù)的時間趨勢不足以改善臭氧水平的預測。讓我們驗證一下:
print(Rsquared.linear)
## \[1\] 0.7676977
``````
print(Rsquared.temporal)
``````
## \[1\] 0.7569718
我們可以看到具有負二項式概率線性模型優(yōu)于ARIMAX模型。
要在更合適的數(shù)據(jù)集上演示ARIMAX模型,讓我們加載數(shù)據(jù)集:
該Icecream
數(shù)據(jù)集包含以下變量:
消費:冰淇淋消費量。
收入:平均每周家庭收入。
價格:每個冰淇淋的價格。
temp:華氏溫度的平均溫度。
測量結(jié)果是從1951-03-18到1953-07-11的四周觀測。
我們將模擬消費,冰淇淋消費作為時間序列,并使用_收入_,_價格_和_平均值_作為外生變量。在開始建模之前,我們將從數(shù)據(jù)框中創(chuàng)建一個時間序列對象。
我們現(xiàn)在調(diào)查數(shù)據(jù):
因此,數(shù)據(jù)有兩種趨勢:
總體而言,1951年至1953年間,冰淇淋的消費量大幅增加。
冰淇淋銷售在夏季達到頂峰。
由于季節(jié)性趨勢,我們可能擬合ARIMA(1,0,0)(1,0,0)模型。但是,由于我們知道溫度和外生變量的收入,因此它們可以解釋數(shù)據(jù)的趨勢:
income
解釋了整體趨勢。此外,temp
解釋了季節(jié)性趨勢,我們不需要季節(jié)性模型。因此,我們應該使用ARIMAX(1,0,0)模型進行預測。為了研究這些假設(shè)是否成立,我們將使用以下代碼將ARIMAX(1,0,0)模型與ARIMA(1,0,0)(1,0,0)模型進行比較
ARIMAX(1,0,0)模型的預測顯示為藍色,而ARIMA(1,0,0)(1,0,0)模型的預測顯示為虛線。實際觀察值顯示為黑線。結(jié)果表明,ARIMAX(1,0,0)明顯比ARIMA(1,0,0)(1,0,0)模型更準確。
但請注意,ARIMAX模型在某種程度上不像純ARIMA模型那樣有用于預測。這是因為,ARIMAX模型需要對應該預測的任何新數(shù)據(jù)點進行外部預測。例如,對于冰淇淋數(shù)據(jù)集,我們沒有超出1953-07-11的外生數(shù)據(jù)。因此,我們無法使用ARIMAX模型預測超出此時間點,而ARIMA模型可以實現(xiàn):
如果您有任何疑問,請在下面發(fā)表評論。
聯(lián)系客服