我是靠谱客的博主 动听过客,这篇文章主要介绍疏系数模型的R实现,现在分享给大家,希望可以做个参考。

疏系数模型是ARIMA模型的一种特殊情况,原来ARIMA模型中有一部分系数缺失了,那么这个模型就是疏系数模型。
1.模型简介
如果是自回归部分有缺失的系数,那么该疏系数模型就可以记为:
ARIMA((p1,…pm),d,q)
如果只是是移动平均部分有缺失的系数,那么该疏系数模型就可以简记为:
ARIMA(p,d,(q1,…1n))
如果自回归和移动平均部分都有系数缺失的话,该模型就可以简记为:
ARIMA((p1,…,pm),d,(q1,…,qn))
2.建模过程
(1)画出时序图,偏自相关图,自相关图(或者根据单位根检验)来判别时间序列的平稳性
(2)对非平稳时间序列进行差分处理,使其平稳化
(3)对差分处理之后的序列进行白噪声检验,若是白噪声序列就停止建模,若是非白噪声序列就对该序列进行建模
(4)疏系数模型和ARIMA模型有点不同的地方就在于,疏系数模型在定阶的过程中,不能让系统根据模型的最高阶数自动完成所有的参数估计,需要指定疏系数的位置(计算各参数值)
(5)对模型进行参数的显著性检验和残差的白噪声检验
3.建立模型
数据采用美国1917年到1975年妇女人均生育率序列建模
(1)画出其时序图,和利用单位根检验来判断其平稳性。

复制代码
1
2
3
4
5
6
7
8
library(tseries) library(forecast) library(zoo) a=read.table("C:/Users/MrDavid/data_TS/A1.18.csv",sep=",",header=T) x=ts(a$fertility,start=1917) plot(x,col=4,lwd=2,type="o",pch=8) adf.test(x)

在这里插入图片描述
单位根检验如下:
在这里插入图片描述
从上述结果看,p=0.9628,远大于0.05,所以该序列非平稳。
(2)对其序列进行差分处理,然后对其差分序列进行平稳性检验。发现其一阶差分依旧非平稳,接着进行二阶差分,画出其时序图和进行平稳性检验

复制代码
1
2
3
4
x.dif=diff(x,difference=2) plot(x.dif,type="o",lwd=2,pch=8,col=4) adf.test(x.dif)

在这里插入图片描述
在这里插入图片描述
二阶差分是个平稳序列
对其二阶差分序列进行白噪声检验

复制代码
1
2
for (i in 1:3) print(Box.test(x.dif,lag=6*i))

在这里插入图片描述
非白噪声序列,可以进行建模
(3)画出其自相关图,偏自相关图

复制代码
1
2
3
acf(x.dif,col=4,lwd=2) pacf(x.dif,col=4,lwd=2)

在这里插入图片描述
在这里插入图片描述
(4)模型的定阶
自相关系数在1,4,5超出两倍标准差,偏自相关系数在1,4超出两倍标准差,所以拟合的模型为:
ARIMA((1,4),2,(1,4,5)).但是由于第一个参数不显著,我们将第一个参数也指定为0

复制代码
1
2
3
x.fit=arima(x,order=c(4,2,5),transform.pars=F,fixed=c(0,0,0,NA,NA,0,0,NA,NA)) x.fit

在这里插入图片描述

(5)对模型进行显著性检验
对该模型残差进行白噪声检验:

复制代码
1
2
for (i in 1:3) print(Box.test(x.fit$residual,lag=6*i))

在这里插入图片描述
残差序列为白噪声序列。
对参数进行显著性检验:

复制代码
1
2
3
4
5
6
7
8
9
10
t2=-0.4931/0.1365 pt(t2,df=53,lower.tail=T) t3=-0.9074/0.0803 pt(t3,df=53,lower.tail=T) t4=1.0605/0.1595 pt(t4,df=53,lower.tail=F) t5=-0.7986/0.1428 pt(t5,df=53,lower.tail=T)

在这里插入图片描述
现在所有参数都显著有效,所以模型拟合成功。
该模型为:
在这里插入图片描述
4.用模型来预测
预测未来5年的值

复制代码
1
2
3
x.fore=forecast(x.fit,h=5) x.fore

在这里插入图片描述
画出预测图:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
L1=x.fore$fitted-1.96*sqrt(x.fit$sigma2) U1=x.fore$fitted+1.96*sqrt(x.fit$sigma2) L2=ts(x.fore$lower[,2],start=1917) U2=ts(x.fore$upper[,2],start=1917) c1=min(x,L1,L2) c2=max(x,L1,L2) plot(x,type="p",pch=8,xlim=c(1917,1975),ylim=c(c1,c2)) lines(x.fore$fitted,col=2,lwd=2) lines(x.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)

在这里插入图片描述

最后

以上就是动听过客最近收集整理的关于疏系数模型的R实现的全部内容,更多相关疏系数模型内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(84)

评论列表共有 0 条评论

立即
投稿
返回
顶部