熱線電話:13121318867

登錄
首頁精彩閱讀R語言實現金融數據的時間序列分析及建模
R語言實現金融數據的時間序列分析及建模
2017-12-16
收藏

R語言實現金融數據的時間序列分析及建模

一 移動平均

?? 移動平均能消除數據中的季節變動和不規則變動。若序列中存在周期變動,則通常以周期為移動平均項數。移動平均法可以通過數據顯示出數據長期趨勢的變動規律。
?? R可用filter()函數做移動平均。用法:filter(data,filter,sides)

1、簡單移動平均

??簡單移動平均就是將n個觀測值的平均數作為第(n+1)/2個的擬合值。當n為偶數時,需進行二次移動平均。簡單移動平均假設序列長期趨勢的斜率不變。
?? 以我國1992到2014年的季度GDP數據為例。

data<-read.csv("gdpq.csv")
tdata<-ts(data,start=1992,freq=4)
m1<-filter(tdata,filter=c(rep(1/4,4)))
plot(tdata,xlab="時間",ylab="gdp")
lines(m1,col="red",cex=1.5)

?? 代碼運行結果如上圖,紅色表示擬合值,黑色表示真實值。
2、二次移動平均

?? 二次移動平均即在一次移動平均的基礎上再進行一次移動平均。一般兩次移動平均的項數是一致的。二次移動平均假設序列長期趨勢的斜率是隨時間的變化而變化的。
?? 二次移動平均長期趨勢的擬合公式為:at=2M1t?M2t,其中M1t 表示第一次移動平均的擬合值,M2t表示二次移動平均的擬合值。
?? 同樣以上述數據為例,進行二次移動平均。代碼如下:

plot(tdata,type="l",xlab="時間",ylab="季度GDP")
m2<-filter(m1,filter=c(rep(1/4,4)),sides=1)

lines(2*m1-m2,col="red",cex=2)

?? 代碼運行結果如上圖所示,紅色為二次移動的擬合值。
二 指數平滑

?? 指數平滑的思想與移動平均是一樣的,只是隨著時間間隔的增加,加權的權重會呈指數衰減。它認為時間間隔越遠的數據對當期數據的影響越小。R調用的函數為
HoltWinters(data, alpha=, beta=, gamma=,seasonal=c(“additive”,”multiple”)…)

1、簡單指數平滑

?? 簡單指數平滑假設序列中不存在季節變動和系統的趨勢變化。模型公式為:
Xt=axt+(1?a)Xt?1,0<a<1
a為平滑系數,Xt 為擬合值,xt 為真實值。一般指定X0=x1 ,并且a越大,平滑程度越弱。R語言中有函數可以通過最小化一步預測誤差平方和的方法估計出a。以2010年到2014年消費者新心指數為例,并預測2015年前6個月的值。代碼如下:

> data<-read.csv("consumer_cf.csv")
> newdata<-ts(data[,2],start=c(2010,1),freq=12)
> plot(newdata,type="o",cex.axis=1.5,cex.lab=1.5,
+      xlab="時間",ylab="消費者信心指數")
> a<-HoltWinters(newdata,beta=F,gamma=F)
> b<-HoltWinters(newdata,alpha=0.5,beta=F,gamma=F) #估計參數a
> b
Holt-Winters exponential smoothing without trend and without seasonal component.

Call:
HoltWinters(x = newdata, alpha = 0.5, beta = F, gamma = F)

Smoothing parameters:
 alpha: 0.5
 beta : FALSE
 gamma: FALSE

Coefficients:
      [,1]
a 105.2898
> pdata<-predict(a,6,prediction.interval = T)

> plot(a,pdata,type="o",xlab="時間",ylab="消費者信心指數")

?? 代碼運行結果如上所示。用HoltWinters()函數估計出來的a=0.78,且向后預測值為圖中紅色部分,黑色為真實值。這種預測方法預測出的值往往不夠精確,因為它沒有考慮序列中存在的其他變動。
2、Holt_Winters指數平滑

?? Holt_Winters指數平滑考慮了序列中存在的季節變動,這種方法對存在季節變動的經濟數據有較好的擬合效果,可以用來進行向后預測。
?? 加法季節模型:
Xt=a?(xt?st)+(1?a)(at?1+bt?1
bt=β?(Xt?Xt?1)+(1?β)bt?1
st=γ?(xt?Xt)+(1?γ)st?p

其中p為季節變動的周期長度。其他含義同上。以上述的GDP數據為例,用HoltWinters指數平滑法分解GDP的水平,斜率及季節變動水平,并預測未來5年的值。代碼如下:

> data<-read.csv("gdpq.csv")
> tdata<-ts(data,start=1992,freq=4)
> gdp.hw<-HoltWinters(tdata,seasonal="multi")
> plot(gdp.hw$fitted,type="o",main="分解圖")
> plot(gdp.hw,type="o")
> pdata<-predict(gdp.hw,n.ahead=4*5)
> pdata
         Qtr1     Qtr2     Qtr3     Qtr4
2015 149826.6 168126.7 176640.3 192627.9
2016 161252.4 180708.2 189616.2 206523.1
2017 172678.2 193289.7 202592.1 220418.2
2018 184104.1 205871.2 215568.0 234313.4
2019 195529.9 218452.8 228543.8 248208.5
> ts.plot(tdata,pdata,type="o",lty=1:2,col=c("red","black"))



?? 代碼中采用了加法模型。序列的分解圖如上圖所示。第二個圖為模型對數據的擬合圖,第三個圖的虛線部分為后5年的預測。

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢