原文鏈接:http:///?p=6762 時間序列預測,,ARIMA等傳統(tǒng)模型通常是一種流行的選擇,。雖然這些模型可以證明具有高度的準確性,但它們有一個主要缺點 - 它們通常不會解釋“沖擊”或時間序列的突然變化,。讓我們看看我們如何使用稱為卡爾曼濾波器的模型來潛在地解決這個問題,。 時間序列 我們以貨幣市場為例。貨幣對可能會有整體上升趨勢,,然后在拋售期間大幅下跌,。傳統(tǒng)的時間序列模型不一定能夠立即解決這個問題,并且在考慮到趨勢的突然變化之前可能需要幾個時期,。 因此,,我們希望使用一個確實能夠解釋這種沖擊的時間序列模型。讓我們來看一個稱為卡爾曼濾波器的模型,。 卡爾曼濾波器是一種狀態(tài)空間模型,,可以更快地調整沖擊到時間序列。讓我們看一下例子,。 2015年1月,,當瑞士國家銀行決定取消瑞士法郎時,貨幣市場遭受了歷史上最大的沖擊之一,。結果,,瑞士法郎飆升,而其他主要貨幣則暴跌,。 讓我們看看卡爾曼濾波器如何調整這種沖擊,。 卡爾曼濾波器:USD / CHF首先,,讓我們下載2015年1月的USD / CHF數(shù)據(jù),。
> currency = Quandl("FRED/DEXSZUS", start_date="2010-01-01",end_date="2018-09-29",type="xts")
> currency=data.frame(currency)
> currency=(log(currency$currency))
現(xiàn)在,我們將嘗試使用KFAS庫使用卡爾曼濾波器對此時間序列進行建模,。
繪制時間序列:
> ts.plot(ts(exp(currency[1232:1274]), exp(out$a[1232:1274]), exp(out$att[1232:1274]), exp(out$alpha[1232:1274])
為了進行比較,,我們還將計算10天移動平均值,以比較平滑性能與卡爾曼濾波器的平滑性能,。
data.frame(SMA(exp(currency),n=10))
現(xiàn)在讓我們將上面的內容與我們的原始序列結合起來,,看看我們得到了什么:
這是生成的數(shù)據(jù)框:
在某些情況下,高頻數(shù)據(jù) - 或過濾從噪聲信號中提取信息并預測未來狀態(tài),,是卡爾曼濾波器最合適的用途,。另一方面,平滑更依賴于過去的數(shù)據(jù),,因為在某些情況下,,平均最近的測量可能比使用最近的測量更準確。 這在直覺上是有道理的,,因為貨幣在一個月之前的交易價格為0.9658,。在這方面,,平滑估計器允許比使用濾波估計a更好地預測信號,濾波估計a直到時間段33才調整沖擊,。 例子:英鎊/美元因此,,我們已經(jīng)看到卡爾曼濾波器如何擬合美元/瑞士法郎的突然變動。讓我們再舉一個貨幣沖擊的例子,。當英國在2016年6月投票支持“英國退歐”時,,我們看到英鎊/美元隨后暴跌。 如在USD / CHF的例子中,,我們從Quandl下載我們的GBP / USD數(shù)據(jù)并運行卡爾曼濾波器: 這是我們的數(shù)據(jù)圖,。同樣,我們看到alpha在t = 22時的震蕩前一天向下調整到1.438的水平: 以下是a,,att和alpha統(tǒng)計信息: 同樣,,我們看到10天SMA需要將近10天才能完全調整震蕩,再次表明平滑參數(shù)α在調整貨幣水平的巨大變化時是不錯的,。 結論
|