99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀R語言實(shí)現(xiàn)金融數(shù)據(jù)的時間序列分析及建模
R語言實(shí)現(xiàn)金融數(shù)據(jù)的時間序列分析及建模
2017-12-16
收藏

R語言實(shí)現(xiàn)金融數(shù)據(jù)的時間序列分析及建模

一 移動平均

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

1、簡單移動平均

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

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)

?? 代碼運(yùn)行結(jié)果如上圖,紅色表示擬合值,黑色表示真實(shí)值。
2、二次移動平均

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

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)

?? 代碼運(yùn)行結(jié)果如上圖所示,紅色為二次移動的擬合值。
二 指數(shù)平滑

?? 指數(shù)平滑的思想與移動平均是一樣的,只是隨著時間間隔的增加,加權(quán)的權(quán)重會呈指數(shù)衰減。它認(rèn)為時間間隔越遠(yuǎn)的數(shù)據(jù)對當(dāng)期數(shù)據(jù)的影響越小。R調(diào)用的函數(shù)為
HoltWinters(data, alpha=, beta=, gamma=,seasonal=c(“additive”,”multiple”)…)

1、簡單指數(shù)平滑

?? 簡單指數(shù)平滑假設(shè)序列中不存在季節(jié)變動和系統(tǒng)的趨勢變化。模型公式為:
Xt=axt+(1?a)Xt?1,0<a<1
a為平滑系數(shù),Xt 為擬合值,xt 為真實(shí)值。一般指定X0=x1 ,并且a越大,平滑程度越弱。R語言中有函數(shù)可以通過最小化一步預(yù)測誤差平方和的方法估計(jì)出a。以2010年到2014年消費(fèi)者新心指數(shù)為例,并預(yù)測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="消費(fèi)者信心指數(shù)")
> a<-HoltWinters(newdata,beta=F,gamma=F)
> b<-HoltWinters(newdata,alpha=0.5,beta=F,gamma=F) #估計(jì)參數(shù)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="消費(fèi)者信心指數(shù)")

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

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

其中p為季節(jié)變動的周期長度。其他含義同上。以上述的GDP數(shù)據(jù)為例,用HoltWinters指數(shù)平滑法分解GDP的水平,斜率及季節(jié)變動水平,并預(yù)測未來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"))



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

數(shù)據(jù)分析咨詢請掃描二維碼

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

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗(yàn)證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }