作者:arit Maitra
編譯:1+1=6
前言
時間序列由四個主要成分組成: 季節變化、趨勢變化、周期變化和隨機變化。在今天的推文中,我們將使用狀態空間模型對單變量時間序列數據進行預測分析。該模型具有連續的隱狀態和觀測狀態。
1
狀態空間模型
基於狀態空間模型對問題進行了結構分析。該系列是由不同的組成部分,如趨勢、季節、周期、變化以及解釋變量和幹預分別建模,然後放在狀態空間模型中。
數據基於1986年以來的Schlumberger Limited歷史數據。
在這裡,為了方便計算,我採用了月(12個月)頻率,你也可以嘗試天(252天/年)的頻率。
下面由密度和正態 QQ 圖組成的分布圖清楚地顯示了數據分布的非正態性。
描述性統計:
2
平穩性檢驗(ADF)
數據歸一化:
3
自相關函數(ACF)
確定不同時間lags的相關性是否趨近於0!
平穩性=高斯噪聲和一個趨勢=累積高斯噪聲之和。
在這裡,我們將通過查看每個信號的自相關函數來檢查每個信號的平穩性特徵。我們期望對於一個平穩信號,ACF 在每個時間 lag (τ) 時變為0,因為我們期望不依賴於時間。
我們在這裡看到,平穩信號有很少的lags超過ACF的 CI。這種趨勢導致幾乎所有的lags時間都超過了置信區間。結果表明,ACF 信號是平穩的。但是,趨勢信號並不是平穩的。平穩序列在均值水平附近有較好的方差,峰值是原始序列幹預的證據。
我們將進一步分解時間序列,它通常涉及水平、趨勢、季節性和噪聲成分的組合。分解有助於在分析和預測期間更好地理解問題。
4
時間序列分解
對時間序列進行分解意味著將其分解為組成成分,這些成分通常是趨勢成分和隨機成分,如果數據是季節性的,則是季節性成分。分解涉及到將時間序列分離到這些單獨的成分中。
我們可以對數據進行差分或對數變換來消除趨勢和季節性。在許多統計和計量經濟學應用的背景下,這些成分的知識具有潛在的重要性。趨勢和季節的估計可以通過最大化殘差均方差從差分序列中恢復,但是這並不像直接對分量建模那樣吸引人。我們要記住,真實的時序從來都不是靜止的。
在這裡,我們將使用簡單的時間序列移動平均平滑法來估計趨勢分量。
我們看到,估計的趨勢部分顯示,從1997年的約9小幅下降到1999年的約7,然後從那時起穩步上升到2019年的12。
經季節性調整
結構模型
結構時間序列模型是(單變量)時間序列的(線性高斯)狀態空間模型。在考慮狀態空間架構時,通常我們感興趣的有三個主要方面:
預測,預測狀態的後續值
濾波,根據過去和現在的觀測值來估計狀態的當前值
平滑,根據觀測值估計狀態的過去值
我們將使用卡爾曼濾波器來執行上述各種類型的推理。
過濾幫助我們在每次觀察時更新系統的知識。平滑可以幫助我們根據整個樣本來估計感興趣的數量。
然而,你可能會問為什麼我們不使用比結構模型更流行的ETS(指數平滑)模型。
ETS模型更具有一般性,因為它允許非線性(乘法成分)。
由於模型空間較大,ETS允許自動預測。
附加的ETS模型幾乎等同於相應的結構模型。
ETS模型具有較大的參數空間。
結構模型參數總是非負的(方差)。
結構模型更容易推廣(例如,添加協變量)。
使用結構模型更容易處理缺失的值。
5
基本結構模型(BSM)
結構模型具有使用簡單、可靠性高等優點。給出了用極大似然法擬合時間序列結構模型的主要工具。
結構時間序列狀態空間模型是將序列分解為若干個分量。它們由一組誤差方差指定,其中一些可能是零。我們將使用一個基本的結構模型來擬合隨機水平模型進行預測。構成狀態空間模型的兩個主要部分是:(1)可觀測數據和(2)不可觀測狀態。
最簡單的模型:
我們需要看到觀測結果,因為狀態被系統噪聲隱藏起來了。觀測結果是當前狀態和一些額外的隨機變化(稱為測量噪聲)的線性組合。觀察結果是:
它實際上是一個ARIMA(0,1,1)模型,但對參數集有一定的限制。
局部線性趨勢模型具有相同的測量方程,但在 t的動態性中具有時變斜率:
有三個方差參數。這裡εt、ξt和ζt是獨立的高斯白噪聲過程。基本結構模型,是一個附加季節成分的局部趨勢模型。因此,測量方程為:
其中 t 是具有動態性的季節性成分
訓練、測試
模型擬合和預測
最好的做法是檢查結構程序的收斂性。與任何結構化過程一樣,我們需要有合適的初始點,以確保算法收斂到正確的最大值。
交叉驗證
交叉驗證是時間序列分析的重要步驟。
Fit model to data y1, . . . , yt
Generate 1-step ahead forecast yt+1
Compute forecast error e t+1 = yt+1 y t+1
Repeat steps 1–3 for t = m, . . . , n 1 where m is minimum number of observations to fit model
Compute forecast MSE from e m+1, . . . , e
Ljung-Box殘差檢驗的p值為0.2131015>顯著水平(0.05);因此,不建議使用交叉驗證的結果,因為模型顯然不適合數據。
6
基本診斷
對任何統計分析進行的第一個診斷是檢查殘差是否與假定的錯誤結構相符。在單變量狀態空間模型中,我們有兩種類型的誤差:過程誤差(wt)和觀測誤差(vt)。它們不應該有時間趨勢。
model.residuals
vt是t:vt = yt - Zxt - a時的數據與預測數據的差值
在狀態空間模型中,xt是隨機的,模型殘差是隨機變量。yt也是隨機的,雖然與xt不同。模型殘差隨機變量為:Vt = Yt ZXt a
Vt的無條件均值和方差為0和R
7
卡爾曼濾波器
卡爾曼濾波算法使用了一系列隨時間變化的觀測數據,其中包含了噪聲和其他誤差,並產生了對未知變量的估計。這一估計往往比僅基於單一測量的估計更準確。使用卡爾曼濾波器並不假設誤差是高斯的;然而,在所有誤差均為高斯分布的特殊情況下,該濾波器給出了準確的條件概率估計。
預測
可以看出,BSM模型能夠很好的提取季節成分。你可以在這裡試驗基於SMA的分解(如前面所示),並比較預測精度。
8
動態線性模型與卡爾曼濾波
動態線性模型(dlm)是狀態空間模型的一個特例,其中狀態誤差和觀測分量是正態分布的。這裡,卡爾曼濾波將用於:
狀態向量的過濾值。
平滑狀態向量的值和終值。
預報提供了未來觀測和狀態的平均值和方差。
我們必須在擬合dlm模型之前定義參數。參數分別為V、W(分別為測量和狀態方程的協方差矩陣)、FF和GG(分別為測量方程矩陣和過渡矩陣)、m0、C0(狀態向量的先驗均值和協方差矩陣)。
然而,在這裡,我們開始dlm模型寫一個小函數如下:
我們考慮了一個帶有dlm的局部水平模型一個多項式dlm(一個局部線性趨勢是一個二階多項式dlm)和一個季節分量12。檢查MLE過程的收斂性是很好的實踐,而不是最佳實踐的一部分。
我們還應用了卡爾曼濾波和平滑器。
由此可見,dlm模型的預測精度相當好。過濾和平滑在時序中幾乎是一起移動的,彼此之間的差別不大。這裡忽略了季節因素。預測時序和原始時序非常接近。
在這裡公眾號普及一下R中的dlm包:它是模塊化的,因此你可以自由地構建具有多個組件的模型,例如,你可以指定具有季節性組件的線性趨勢模型。
9
總結
狀態空間模型有多種形式,是處理大量時間序列模型的一種靈活方法,並提供了處理缺失值、似然估計、平滑、預測等的框架。單變量和多變量數據均可用於狀態空間模型的擬合。
參考資料
1、Durbin, J., & Koopman, S. J. (2012). Time series analysis by state space methods. Oxford university press.
2、Giovanni Petris & Sonia Petrone (2011), State Space Models in R, Journal of Statistical Software
3、G Petris, S Petrone, and P Campagnoli (2009). Dynamic Linear Models with R. Springer
4、Hyndman, R. J., & Athanasopoulos, G. (2018). Forecasting: principles and practice. OTexts.
2020年第14篇文章
你點的每個「在看」,都是對我們最大的鼓勵