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

熱線電話:13121318867

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

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

一 移動(dòng)平均

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

1、簡(jiǎn)單移動(dòng)平均

??簡(jiǎn)單移動(dòng)平均就是將n個(gè)觀測(cè)值的平均數(shù)作為第(n+1)/2個(gè)的擬合值。當(dāng)n為偶數(shù)時(shí),需進(jìn)行二次移動(dòng)平均。簡(jiǎn)單移動(dòng)平均假設(shè)序列長(zhǎng)期趨勢(shì)的斜率不變。
?? 以我國(guó)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="時(shí)間",ylab="gdp")
lines(m1,col="red",cex=1.5)

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

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

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

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

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

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

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

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

> 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="時(shí)間",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="時(shí)間",ylab="消費(fèi)者信心指數(shù)")

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

?? Holt_Winters指數(shù)平滑考慮了序列中存在的季節(jié)變動(dòng),這種方法對(duì)存在季節(jié)變動(dòng)的經(jīng)濟(jì)數(shù)據(jù)有較好的擬合效果,可以用來進(jìn)行向后預(yù)測(cè)。
?? 加法季節(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é)變動(dòng)的周期長(zhǎng)度。其他含義同上。以上述的GDP數(shù)據(jù)為例,用HoltWinters指數(shù)平滑法分解GDP的水平,斜率及季節(jié)變動(dòng)水平,并預(yù)測(cè)未來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"))



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

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

若不方便掃碼,搜微信號(hào):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)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請(qǐng)參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".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 = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+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); }