天天看點

拓端tecdat|R語言狀态空間模型:卡爾曼濾波器KFAS模組化時間序列5例子:英鎊/美元

原文連結:http://tecdat.cn/?p=6762

原文出處:拓端資料部落公衆号

1 時間序列

時間序列是指同一種現象在不同時間上的相繼觀察值排列而成的一組數字序列。統計學上,一個時間序列即是一個随機過程的實作。時間序列按其統計特性可以分為平穩時間序列和非平穩時間序列兩類。在實際生活中遇到的序列,大多數是不平穩的。

說明:如果一個序列的平均值和方差始終為常數,則它是平穩的。在估計時間序列模型之前需把不平穩的時間序列轉化為平穩序列。判斷一個時間序列的平穩性可通過資料圖和自相關函數圖,如果資料圖呈現線性或二次趨勢形狀,則該時間序列是不平穩的;如果自相關函數在前面少數幾個值後下降趨向于0,則序列是平穩的。如果在前幾個值後,自相關函數沒有下降趨向于0,而是逐次減少,且值的大小超出固定的随機期間,則序列不平穩。

2 狀态空間模型

如前所述,在現實生活中,資料的出現大多數是以非平穩形式,這涉及到動态資料所構成的時間序列的分解。分解時間序列的目的旨在估計和抽取确定性成分Tt(長期趨勢),St(季節項),Ct(循環項),以使殘量It(随機項)是一平穩過程。進而求得關于随機項的合适機率模型,分析它的性質,并連同Tt,St,Ct達到拟合和預報的目的。狀态空間模型即可對時間序列進行分解,将Tt,St,Ct及It從時間序列中分離出來。

2.1 時間序列的狀态空間描述

一般的,一個時間序列{yt}可以直接或經過函數變換後分解為如下的加法模型或乘法模型形式:

拓端tecdat|R語言狀态空間模型:卡爾曼濾波器KFAS模組化時間序列5例子:英鎊/美元

其中,(Tt)表長期趨勢,( St)是季節項,(Ct)是循環項,(It)表不規則項,對于趨勢明顯為指數增長,且季節波動幅度也随時間增加的序列,一般采用乘法模型。

對于一般定常(非時變)的動态系統,假定其具有n維量測向量{yt}和m維狀态向量{xt},量測向量是通過某些實體手段可以觀測到的變量,而狀态向量是用來描述系統動态特征的變量,一般是無法觀測到的變量,隻有狀态向量和量測向量結合起來,才能對系統的動态特征做完整而充分的描述。狀态空間模型即可實作這種動态描述。

2.2 狀态空間模型

拓端tecdat|R語言狀态空間模型:卡爾曼濾波器KFAS模組化時間序列5例子:英鎊/美元

狀态方程描述動态系統的狀态從前一時刻到目前時刻的變化規律,而量測方程描述觀測值和系統的狀态之間的變化關系.Φ稱為狀态轉移矩陣,A為量測矩陣,wt是狀态噪聲,vt是量測噪聲(一般可設為正态白噪聲)。

假定A和Φ中都是不随時間改變的常系數矩陣,狀态空間有以下特點:

  • 狀态空間模型不僅能反映系統内部狀态,而且能揭示系統内部狀态與外部的輸入和輸出變量的聯系;
  • 狀态空間模型将多個變量時間序列處理為向量時間序列,這種從變量到向量的轉變更适合解決多輸入輸出變量情況下的模組化問題。
  • 狀态空間模型能夠用現在和過去的最小資訊形式描述系統的狀态,是以,它不需要大量的曆史資料資料,既省時又省力。

(3)和(4)式中的有關量可以分解為組合形式:

拓端tecdat|R語言狀态空間模型:卡爾曼濾波器KFAS模組化時間序列5例子:英鎊/美元

下标j=1,2,3分别對應于趨勢項、循環項、季節項。即:

  • Φ1,A1,X1t,w1t均對應于趨勢項;
  • Φ2,A2,X2t,w2t均對應于循環項;
  • Φ3,A3,X3t,w3t均對應于季節項。
  • Φj,Aj,Xjt,wjt均可由對應項的相應模型求出,且都為矩陣形式。

隻要确定出趨勢項(趨勢差分數k)、循環項(循環項AR模型的階數p)、季節項(季節階數L,d),就可以友善的寫出相應的狀态空間模型。k=2,p=2,d=1時,例子如下:

拓端tecdat|R語言狀态空間模型:卡爾曼濾波器KFAS模組化時間序列5例子:英鎊/美元
拓端tecdat|R語言狀态空間模型:卡爾曼濾波器KFAS模組化時間序列5例子:英鎊/美元

若采用月度資料(L=12),上式中狀态向量Xr的維數m=15;若采用季度資料(L=4) 則Xt是m=7維向量。相應的噪聲方差矩陣如下:

拓端tecdat|R語言狀态空間模型:卡爾曼濾波器KFAS模組化時間序列5例子:英鎊/美元

(5)式是狀态空間模型的待估參數,一般稱為超參數。α2ϵ,α2η,α2ζ分别是趨勢、循環、季節各部分的狀态噪聲方差,α1,...,αp是拟合循環項的自回歸模型參數。

這些超參數需要使用極大似然估計或EM算法等方法得到。

剩下的工作是要得到狀态向量序列{Xt}。如果估計出{Xt},則時間序列{yt}的分解就完成了。這可以通過Kalman濾波等方法對非平穩時間序列進行外推、内插及平滑,計算出每個時刻的狀态向量。

3 R語言狀态空間模型:卡爾曼濾波器KFAS模組化時間序列

我們以貨币市場為例。貨币對可能會有整體上升趨勢,然後在抛售期間大幅下跌。傳統的時間序列模型不一定能夠立即解決這個問題,并且在考慮到趨勢的突然變化之前可能需要幾個時期。

是以,我們希望使用一個确實能夠解釋這種沖擊的時間序列模型。讓我們來看一個稱為卡爾曼濾波器的模型。

卡爾曼濾波器是一種狀态空間模型,可以更快地調整沖擊到時間序列。讓我們看一下如何使用一個例子。

2015年1月,當瑞士國家銀行決定從瑞士法郎取消瑞士法郎時,貨币市場遭受了曆史上最大的沖擊之一。結果,瑞士法郎飙升,而其他主要貨币則暴跌。

讓我們看看卡爾曼濾波器如何調整這種沖擊。

4卡爾曼濾波器:USD / CHF

首先,讓我們下載下傳2015年1月的USD / CHF資料。

> currency = Quandl("FRED/DEXSZUS", start_date="2010-01-01",end_date="2018-09-29",type="xts")
> currency=data.frame(currency)
> currency=(log(currency$currency))
           

現在,我們将嘗試使用KFAS庫使用卡爾曼濾波器對此時間序列進行模組化。

繪制時間序列:

> ts.plot(ts(exp(currency[1232:1274]), exp(out$a[1232:1274]), exp(out$att[1232:1274]), exp(out$alpha[1232:1274])
           
拓端tecdat|R語言狀态空間模型:卡爾曼濾波器KFAS模組化時間序列5例子:英鎊/美元

為了進行比較,我們還将計算10天移動平均值,以比較平滑性能與卡爾曼濾波器的平滑性能。

data.frame(SMA(exp(currency),n=10))
           

 現在讓我們将上面的内容與我們的原始系列結合起來,看看我們提出了什麼:

 這是生成的資料框:

拓端tecdat|R語言狀态空間模型:卡爾曼濾波器KFAS模組化時間序列5例子:英鎊/美元

在某些情況下,高頻資料 - 或過濾從噪聲信号中提取資訊并預測未來狀态,是卡爾曼濾波器最合适的用途。另一方面,平滑更依賴于過去的資料,因為在某些情況下,平均最近的測量可能比使用最近的測量更準确。

這在直覺上是有道理的,因為貨币在一個月之前的交易價格為0.9658。在這方面,平滑估計器允許比使用濾波估計a更好地預測信号,濾波估計a直到時間段33才調整沖擊。

5例子:英鎊/美元

是以,我們已經看到卡爾曼濾波器如何适應美元/瑞士法郎的突然變動。讓我們再舉一個貨币沖擊的例子。當英國在2016年6月投票支援“英國退歐”時,我們看到英鎊/美元随後暴跌。

如在USD / CHF的例子中,我們從Quandl下載下傳我們的GBP / USD資料并運作卡爾曼濾波器:

這是我們的資料圖。同樣,我們看到alpha在t = 22時的震蕩前一天向下調整到1.438的水準:

拓端tecdat|R語言狀态空間模型:卡爾曼濾波器KFAS模組化時間序列5例子:英鎊/美元

以下是a,att和alpha統計資訊:

拓端tecdat|R語言狀态空間模型:卡爾曼濾波器KFAS模組化時間序列5例子:英鎊/美元

同樣,我們看到10天SMA需要将近10天才能完全調整震蕩,再次表明平滑參數α在調整貨币水準的巨大變化方面仍然證明是優越的。

6結論

  • 調整時間序列沖擊的重要性
  • 如何在R中使用KFAS實作卡爾曼濾波器
  • 如何解釋卡爾曼濾波器的輸出
  • 為什麼卡爾曼濾波器是用于模組化時間序列沖擊的合适模型
拓端tecdat|R語言狀态空間模型:卡爾曼濾波器KFAS模組化時間序列5例子:英鎊/美元

最受歡迎的見解

1.在python中使用lstm和pytorch進行時間序列預測

2.python中利用長短期記憶模型lstm進行時間序列預測分析

3.使用r語言進行時間序列(arima,指數平滑)分析

4.r語言多元copula-garch-模型時間序列預測

5.r語言copulas和金融時間序列案例

6.使用r語言随機波動模型sv處理時間序列中的随機波動

7.r語言時間序列tar門檻值自回歸模型

8.r語言k-shape時間序列聚類方法對股票價格時間序列聚類

9.python3用arima模型進行時間序列預測

繼續閱讀