R語(yǔ)言ARMA模型的參數(shù)選擇說(shuō)明
AR(p)模型與MA(q)實(shí)際上是ARMA(p,q)模型的特例。它們都統(tǒng)稱為ARMA模型,而ARMA(p,q)模型的統(tǒng)計(jì)性質(zhì)也是AR(p)與MA(q)模型的統(tǒng)計(jì)性質(zhì)的有機(jī)組合。
平穩(wěn)系列建模
假如某個(gè)觀察值序列通過(guò)序列預(yù)處理可以判定為平穩(wěn)非白噪聲序列,就可以利用ARMA模型對(duì)序列建模。
1.求出該觀察值序列的樣本自相關(guān)系數(shù)(ACF)與偏相關(guān)系數(shù)(PACF的值。
2.根據(jù)根樣本自相關(guān)系數(shù)和偏自相關(guān)系數(shù)的性質(zhì),選擇階數(shù)適當(dāng)?shù)腁RMA(p,q)模型進(jìn)行擬合。
3.估計(jì)模型中未知參數(shù)的值
4.檢驗(yàn)?zāi)P偷挠行?。如果擬合模型未通過(guò)檢驗(yàn),回到步驟(2),重新選擇模型擬合。
5.模型優(yōu)化。如果擬合模型通過(guò)檢驗(yàn),仍然回到步驟(2),充分考慮各種可能,建立多個(gè)擬合模型,從所有通過(guò)檢驗(yàn)的擬合的模型中選擇最優(yōu)模型。
6.利用擬合模型,預(yù)測(cè)序列將來(lái)的走勢(shì)。
選擇合適的模型擬合1950-2008年我國(guó)郵路及農(nóng)村投遞線路每年新增里程數(shù)序列:
白噪聲檢驗(yàn):
for(i in 1:2) print(Box.test(x,type = "Ljung-Box",lag=6*i)) Box-Ljung test data: x X-squared = 37.754, df = 6, p-value = 1.255e-06 Box-Ljung test data: x X-squared = 44.62, df = 12, p-value = 1.197e-05
繪制自相關(guān)圖和偏自相關(guān)圖
acf(x) pacf(x)
補(bǔ)充:關(guān)于ARMA模型的R語(yǔ)言實(shí)現(xiàn)
新手一枚,和大家一起學(xué)習(xí)R,以后基本每周都會(huì)更新1到2篇關(guān)于數(shù)據(jù)預(yù)測(cè)處理的模型和方法,希望和大家一起學(xué)習(xí),一起成長(zhǎng)。
本周首先更新的是用R來(lái)實(shí)現(xiàn)ARMA模型。
時(shí)間序列的模型,基本上都要建立在平穩(wěn)的序列上,這里我們將來(lái)了解下ARMA模型,以及其實(shí)現(xiàn)的R代碼。
ARMA(p,q)模型,全稱移動(dòng)平均自回歸模型,它是由自回歸(AR)部分和移動(dòng)平均(MA)部分組成的,所以稱之為ARMA模型。進(jìn)行ARMA模型的話,要求時(shí)間序列一定要是平穩(wěn)的才行,否則建模無(wú)效。
1.ARMA模型具有如下形式:
2.ARMA模型建模步驟
(1)畫出時(shí)序圖,求出樣本的相關(guān)系數(shù),偏自相關(guān)系數(shù)值
(2)根據(jù)樣本的相關(guān)系數(shù)和偏自相關(guān)系數(shù),選擇適當(dāng)?shù)碾A數(shù),由于這具有一定的主觀性,所以這里我們選用的是最小AIC準(zhǔn)則來(lái)定階
(3)估計(jì)模型中的參數(shù)值
(4)檢驗(yàn)?zāi)P偷挠行?,一般分為殘差的白噪聲檢驗(yàn)和參數(shù)的顯著性檢驗(yàn)。
(5)利用模型進(jìn)行預(yù)測(cè)。
3.建模
我們利用美國(guó)科羅拉多州某一加油站連續(xù)57天的OVERSHOOT序列,來(lái)進(jìn)行本次建模。
(1)首先
讀入數(shù)據(jù),畫出其時(shí)序圖,檢驗(yàn)其平穩(wěn)性。
library(zoo) library(tseries) library(forecast) overshort=read.table("C:/Users/MrDavid/data_TS/A1.9.csv",sep=",",header=T) overshort=ts(overshort) plot(overshort,col=4,lwd=2,pch=8,type="o")
結(jié)果如下:
進(jìn)行一次單位根檢驗(yàn),測(cè)試該序列的平穩(wěn)性:
代碼:adf.test(overshort)
結(jié)果如下圖所示:
由以上單位根檢驗(yàn),我們看到P值為0.01小于0.05,所以該序列平穩(wěn)
(2)對(duì)于平穩(wěn)的時(shí)間序列
我們需要進(jìn)行白噪聲檢驗(yàn),因?yàn)榘自肼暿羌冸S機(jī)序列,對(duì)白噪聲序列進(jìn)行建模毫無(wú)意義。
for(i in 1:3) print(Box.test(overshort,type="Ljung-Box",lag=6*i))
結(jié)果如下圖:
可以看出,該序列非白噪聲序列,可以進(jìn)行建模。
(3)模型的擬合
模型的擬合,我們可以畫出自相關(guān)圖,和偏自相關(guān)圖,對(duì)時(shí)間序列進(jìn)行定階
acf(overshort,col=4,lwd=2) pacf(overshort,col=4,lwd=2)
結(jié)果如下:
自相關(guān)圖除了顯示1階延遲在兩倍標(biāo)準(zhǔn)差之外,其他自相關(guān)系數(shù)都在兩倍標(biāo)準(zhǔn)差之內(nèi),可以認(rèn)為該序列自相關(guān)系數(shù)1階截尾,騙子相關(guān)系數(shù)顯示出非截尾性質(zhì),可以擬合模型為ARMA(0,1),即MA(1)模型。
該模型除了自相關(guān),偏自相關(guān)系數(shù)定階以外,還可以根據(jù)自動(dòng)定階函數(shù)auto.arima來(lái)對(duì)該序列進(jìn)行定階結(jié)果如下:
auto.arima(overshort)
也顯示出該序列的模型為MA(1)模型
接下來(lái)進(jìn)行建模,找出模型的系數(shù):
a=arima(overshort,order=c(0,0,1),include.mean=T) a
得出結(jié)果:
該模型為:
對(duì)模型進(jìn)行顯著性檢驗(yàn):
for(i in 1:3) print(Box.test(a$residual,type="Ljung-Box",lag=6*i))
殘差的白噪聲檢驗(yàn),反映出,該殘差是白噪聲序列,所以殘差白噪聲檢驗(yàn)通過(guò)。
對(duì)參數(shù)進(jìn)行顯著性檢驗(yàn):
t1=-0.8477/0.1206 pt(t1,df=12,lower.tail=T) t2=-4.7945/1.0252 pt(t2,df=12,lower.tail=T)
參數(shù)的顯著性檢驗(yàn)也通過(guò),說(shuō)明該序列建模成功。
(4)利用該模型預(yù)測(cè)未來(lái)5期值。
a.fore=forecast(a,h=5) a.fore
(5)畫出預(yù)測(cè)圖:
L1=a.fore$fitted-1.96*sqrt(a$sigma2) U1=a.fore$fitted+1.96*sqrt(a$sigma2) L2=ts(a.fore$lower[,2]) U2=ts(a.fore$upper[,2]) c1=min(overshort,L1,L2) c2=max(overshort,L2,U2) plot(overshort,type="p",pch=8,ylim=c(c1,c2)) lines(a.fore$fitted,col=2,lwd=2) lines(a.fore$mean,col=2,lwd=2) lines(L1,col=4,lty=2) lines(U1,col=4,lty=2) lines(L2,col=4,lty=2) lines(U2,col=4,lty=2)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
- R語(yǔ)言實(shí)現(xiàn)用cbind合并兩列數(shù)據(jù)
- R語(yǔ)言中na.fail和na.omit的用法
- R語(yǔ)言中if(){}else{}語(yǔ)句和ifelse()函數(shù)的區(qū)別詳解
- R語(yǔ)言中ifelse、which、%in%的用法詳解
- 解決R語(yǔ)言中install_github中無(wú)法安裝遇到的問(wèn)題
- R語(yǔ)言-使用ifelse進(jìn)行數(shù)據(jù)分組
- R語(yǔ)言 實(shí)現(xiàn)選取某一行的最大值
- R語(yǔ)言-生成頻數(shù)表和列聯(lián)表crosstable函數(shù)介紹
相關(guān)文章
R語(yǔ)言如何畫豎線、橫線、添加標(biāo)簽以及畫固定長(zhǎng)度的線段
R語(yǔ)言繪圖的能力非常強(qiáng)大,有時(shí)看似繁復(fù)的圖形不過(guò)寥寥數(shù)行代碼就搞定,下面這篇文章主要給大家介紹了關(guān)于R語(yǔ)言如何畫豎線、橫線、添加標(biāo)簽以及畫固定長(zhǎng)度的線段的相關(guān)資料,需要的朋友可以參考下2022-11-11R語(yǔ)言中quantile()函數(shù)的用法說(shuō)明
這篇文章主要介紹了R語(yǔ)言中quantile()函數(shù)的用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04R語(yǔ)言關(guān)于變量的知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家整理了一篇關(guān)于R語(yǔ)言關(guān)于變量的知識(shí)點(diǎn)總結(jié)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。2021-03-03R語(yǔ)言作圖之density plot(密度圖)的制作步驟
這篇文章主要介紹了R語(yǔ)言作圖之density plot(密度圖)的制作步驟,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03解決R語(yǔ)言報(bào)錯(cuò):Error?in?y?+?1:non-numeric?argument?to?binary
R語(yǔ)言編程中的常見(jiàn)錯(cuò)誤有一些錯(cuò)誤是R的初學(xué)者和經(jīng)驗(yàn)豐富的R程序員都可能常犯的,下面這篇文章主要給大家介紹了關(guān)于解決R語(yǔ)言報(bào)錯(cuò):Error?in?y?+?1:non-numeric?argument?to?binary?operator的相關(guān)資料,需要的朋友可以參考下2022-11-11