一、時序分析知識點
參考Youtube視頻。
時間序列的大綱

時間序列的應用以及滯后

滯后的意思是后面的y值總是依賴于前面的y值,也就是比如存錢加上利息的收入總是與你前一段時間的存額有關,所以要分析y和時間的關系就要把滯后lag也考慮進去,否則會把滯后的影響也當成了自變量對因變量造成的影響。
white noise

樣本點圍繞著均值有一個方差恒定的均值波動,AR自回歸和MA移動平均回歸模型是為了違反white noise進行修正的,消除兩種偏差。
什么是ARIMA模型?
ARIMA全稱是Auto Regression Integrated Moving Average,是為了能夠在時間序列分析當中更好地理解數(shù)據(jù),以及使得數(shù)據(jù)更好的能夠被我們的模型所擬合,這樣我們就可以在未來某個節(jié)點預測因變量(GDP,Price等等),它由三部分含義構(gòu)成,各自有各自的作用。
ARIMA由自回歸模型和移動平均值模型構(gòu)成,接下來分別介紹它們的作用。
自回歸模型是用來根據(jù)以往的數(shù)據(jù)來回歸擬合變量,移動平均值模型對誤差項進行建模,認為誤差項是同期的誤差項和以往不同時間的誤差項的線性組合,這里的integrated意思是數(shù)據(jù)被替換成了原數(shù)據(jù)的后一個與前一個的差分。
我們看一下ARIMA的表示方法,以下是維基百科的內(nèi)容。

對于ARIMA,表示方法是[圖片上傳失敗...(image-d246ad-1520994262000)]),p,d,q都是非零參數(shù),它們都是方程的階數(shù)。其中p是時間滯后的數(shù)目,d是幾次差分,q是移動平均模型的階數(shù)。

前面一項是在考慮變量值,后面一項是考慮誤差項,總的來說就是這個模型認為當前的變量值和誤差都是跟前面的變量值和誤差有關的,都是前面的變量值和誤差項的線性組合,我們可以自己定要多少個滯后(也就是要考慮前面多少個值的組合)。
不變性

什么是不變性,不變性就是均值和方差不會隨著時間的推移而發(fā)生改變,整個過程沒有上升或者下降的趨勢,如果有趨勢的話,那么均值肯定是要改變的。
在這里要保證stationary的話就要保證[圖片上傳失敗...(image-b16711-1520994262000)](這里有點不明白)
Dicky-Fuller檢測不變性

(這里有兩個輸入錯誤,如果[圖片上傳失敗...(image-781f3f-1520994262000)]應該是不變性過程,跟上面的是對應的;另外一處是如果檢測是顯著的話,應該是說明是不變性的(stationary))
解釋Dicky-Fuller檢測不變性是基于一階自回歸模型,也就是只考慮一階自回歸方程的系數(shù),看它是否等于1,如果系數(shù)[圖片上傳失敗...(image-5c2182-1520994262000)]的話,那么就會有[圖片上傳失敗...(image-3463e9-1520994262000)],也就是說明這個過程是一個random walk,說明不具有不變性。接著往下推導的話,指定[圖片上傳失敗...(image-7d4997-1520994262000)],也就是當[圖片上傳失敗...(image-fff1aa-1520994262000)]的時候(實際上是判斷為0的顯著性如何),一階差分是一個random walk的過程。如果不為不變性過程的話,就應該繼續(xù)進行二階差分直到gamma具有顯著意義上的小于0,這樣才是stationary。
自問自答
為什么叫自回歸+移動平均?
回歸我們都知道是怎么一回事,[圖片上傳失敗...(image-7b3aa0-1520994262000)],這就是一個關于用自變量x來預測因變量y的值的回歸方程,這里有兩個變量,所以不是單個變量自己內(nèi)部有關系,是兩個變量之間有關系(類比與國內(nèi)關系和國外關系)。而自回歸,那就是只有一個變量了,就是數(shù)據(jù)點yt(當前時間節(jié)點為t的值),這里的時間t其實嚴格意義來說不是自變量,你可以認為只是1,2,3……這樣的索引符號而已。我們看一下上面ARMA模型的自回歸項,我們就更加清晰了。
[圖片上傳失敗...(image-5e675c-1520994262000)]
在這里u是常數(shù),后面那項是時間節(jié)點t前面的p個時間節(jié)點的數(shù)據(jù)值的加權組合,所以在這里可以看到由始至終都實際上都是只有一個變量--數(shù)據(jù)點yi,是這個變量內(nèi)部之間有關系,這個關系可以通過線性組合的方式來回歸預測出來,所以叫做自回歸。
移動平均更好理解一些,移動平均實際上是在預測ARMA的后面一項。
[圖片上傳失敗...(image-7cad47-1520994262000)]這一項是對均值以及上下波動的誤差進行擬合的模型,跟自回歸模型沒有關系,只是ARMA模型將兩者統(tǒng)一起來了。這個模型的思想是,如果沒有誤差,那么某個時間節(jié)點t的值應該是,但真實情況是有誤差,真實值是隨著平均值上下波動的,并且這個模型認為殘差的大小是當前殘差與前面的時間節(jié)點的殘差是存在回歸關系的(對,這里也是認為殘差這貨也是有滯后的,也就是自相關的)
什么是random walk
去除趨勢的影響

去除趨勢的影響,可以通過變量值對時間t擬合回歸,那么殘差就是真實值和回歸值之間的差。
差分

通過差分的方式可以把非靜態(tài)的過程轉(zhuǎn)化為靜態(tài)的過程。途中是一階差分,二階差分是指在一階差分基礎上再進行多一次一階差分。
自問自答
問題:為什么差分的方式可以把非靜態(tài)的過程轉(zhuǎn)化為靜態(tài)的過程?
差分
上圖中第一列假設是原始數(shù)據(jù)點的值,這些數(shù)據(jù)點并不是stationary的,原因是數(shù)據(jù)點有上升的趨勢。說到這里,可能有不太理解的地方,為什么一定要處理靜態(tài)的數(shù)據(jù)呢?得出靜態(tài)數(shù)據(jù)擬合后的模型,以后我們要預測的時候是怎么辦的呢?
自相關
自相關是衡量在特定的一個時間點上的數(shù)據(jù)值
與其他滯后時間點的數(shù)據(jù)值的相關性強弱,通俗地講,就是比如我當前這個數(shù)據(jù)點是不是跟前面時間的數(shù)據(jù)點是有關的,相關性有多強?(越弱說明我們忽略掉這種相關性之后造成的影響就會越弱,你可以想象親戚越遠房那種是不是越不相關,忽略他們是不是越?jīng)]有影響?而如果是越親近,比如你父母,對你的影響就會越大)相關性強弱可以從-1到+1不等,我們可以畫出橫坐標為滯后時間的個數(shù)(相當于某個具體節(jié)點最遠可以對之后的第幾個節(jié)點起作用,你可以認為是多米洛骨牌,我推倒一塊,最遠是第幾塊被影響推倒,后面就不受影響)

我們看一下歐洲股票交易率的自相關系數(shù)與滯后的時間節(jié)點數(shù)p的關系,紅線是置信水平,這里是0.025。我們可以認為如果圖中對應柱狀圖如果高于了紅線,就說明對應的lag值下自相關效應是顯著的(也就是當前l(fā)ag值下對應的這個自相關系數(shù)值這種情況比較不太可能出現(xiàn),那么如果一種不太可能出現(xiàn)的情況出現(xiàn)了,說明這種效應應該是顯著的,我們只有0.025的可能性會犯錯)。
Ljung-Box q (LBQ) 統(tǒng)計量檢驗自相關性
Ljung-Box q (LBQ) 統(tǒng)計量用于檢驗在一段時間內(nèi)觀測的變量值是否是獨立的隨機變量,也就是變量之間是否有自相關。自相關會降低預測模型的準確性,原因是我們認為的是預測模型與時間有關,但實際上跟前面的時間變量有關,預測結(jié)果就會差很多。比如季節(jié)性的影響,我們想要預測商場月銷售額,但每逢年過節(jié)銷售額都會猛漲,所以在時間上可能存在著一個滯后為12的影響。Ljung-Box q (LBQ) 統(tǒng)計測試則是假設k個滯后值內(nèi)不存在自相關(原假設),假如說求出來的統(tǒng)計量p-value在顯著性水平以下的話,那么就會認為統(tǒng)計量不顯著為0,也就是有顯著差別,那么就可以判定是存在著自相關性的。Ljung-Box q (LBQ) 統(tǒng)計量會用在擬合模型后面檢驗殘差是否有相關性。
二、R語言實現(xiàn)金融數(shù)據(jù)的時間序列分析和建模

加載數(shù)據(jù)
首先是加載相應的數(shù)據(jù)包zoo, xts, TTR
library(zoo)
library(xts)
library(TTR)
加載數(shù)據(jù),選用的是42位英國國王去世的年齡,用scan函數(shù)來加載數(shù)據(jù)。
kings<-scan('http://robjhyndman.com/tsdldata/misc/kings.dat', skip=3)#skip=3表示忽略掉前3行的數(shù)據(jù)
head(kings)
輸出結(jié)果

可以看到前幾行都是數(shù)字,代表著去世國王的年齡。接下來要轉(zhuǎn)換成時序數(shù)據(jù),用ts函數(shù)。
kingstimeseries<-ts(kings)
#繪制時序圖看看
plot.ts(kingstimeseries)

數(shù)據(jù)差分
接下來是數(shù)據(jù)差分,先取一階
kingsdifferences<-diff(kingstimeseries, diff=1)
plot.ts(kingsdifferences)

可以看到,確實波動性減小了。如果不平穩(wěn)的話就要繼續(xù)差分,所以我們用ARIMA(p, 1, q)這個模型。
尋找ARIMA(p, 1, q)這個模型里面合適的p和q
什么是自相關和偏相關

自相關的計算公式展開來是以下的形式:

也就是從h+1號的值開始,求出t時間與前面的t-h時間的協(xié)方差占t時間方差的比例。
關于自相關的公式,實際上是y
t和它前面k個時間節(jié)點前的y_{t-k}的協(xié)方差占yt方差的比例,偏相關可以認為是yt和y_{t-k}的關系,但是yt也會受到其他滯后項的影響,所以減去這一部分滯后項的影響。(實際上這里沒有真正搞懂,準備回頭再仔細研讀一下資料)
繪制自相關圖acf和偏相關圖pacf以確定存在自相關和偏相關的滯后時間個數(shù)。
自相關
acf<-acf(kingsdifferences, lag.max=20)
acf<-acf(kingsdifferences, lag,max=20, plot=False)


從圖中可以看出1-20個滯后不存在著顯著的自相關性,因此p定義為1。
偏相關
pacf(kingsdifferences, lag.max=20)
pacf(kingsdifferences, lag.max=20, plot=FALSE)


從圖中可以看出,在滯后項3-20就沒有顯著的偏相關性,取q=3。
因此最終模型定為ARIMA(1, 1, 3)。
建立ARIMA模型
先擬合ARIMA(1, 1, 3)模型
kings.arima<-arima(kingstimeseries, order=c(1, 1, 3))
summary(kings.arima)
kingsarimaforecast<-forecast(kings.arima, h=5)
#畫出未來五位國王的年齡


在這里藍線是預測值,藍色區(qū)域是80%的置信區(qū)間,灰色部分是95%的置信區(qū)間。
模型誤差檢驗
我們檢查下預測值殘差的相關性,繪制自相關圖。
acf(kingsarimaforecast$residuals, lag.max=20)

可以看到殘差之間已經(jīng)沒有明顯的相關性了。
用Ljung-Box q (LBQ) 統(tǒng)計測試方法檢查下自相關的顯著性。
Box.test(kingsarimaforecast$residuals, lag=20, type='Ljung-Box')

Ljung-Box q (LBQ) 統(tǒng)計顯示p值為0.9515,說明在95%的置信水平內(nèi),沒有充分證據(jù)表明殘差滯后值之間存在著非零相關性,因此應該接受零假設(殘差之間沒有相關性)。
建立自動化ARIMA模型
如果我們直接把時序數(shù)據(jù)傳入到自動化的ARIMA模型的話,就可以得出自動擬合后的p, d, q值。
kings.arima1<-auto.arima(kingstimeseries)
summary(kings.arima1)

最后得出的結(jié)果是ARIMA(0, 1, 1),接下來我們嘗試根據(jù)這個自動模型去預測未來五位國王的情況。
kingsarimaforecast1<-forecast(kings.arima1, h=5)
kingsarimaforecast1
plot(kingsarimaforecast1)


誤差檢驗
acf(kingsarimaforecast1$residuals, lag.max=20)
box.test(kingsarimaforecast1$residuals, lag=20, , type='Ljung-Box')


最后結(jié)果表明,1-20的滯后的殘差都不存在非零相關性。
自問自答
為什么最后要檢驗殘差的相關性?
這個問題待回答。
- Introduction To Stationary And Non-Stationary Processes(關于靜態(tài)過程和非靜態(tài)過程的入門解釋)
- Random walk model(杜克大學比較詳細的參考資料)
- Youtube TimeSeries ARIMA Model(上面有完整的解釋的視頻)
- Quora關于ARIMA模型的一個很好解釋
- 維基百科關于stationary process
- 維基百科關于Autoregressive integrated moving average
- 什么是 Ljung-Box q (LBQ) 統(tǒng)計量
- 關于為什么不能分析非靜止的數(shù)據(jù)
- 關于自相關和偏相關的解釋