ARIMA模型的R实现
1.模型简介
ARIMA模型,全称差分自回归移动平均模型。可以看作是差分运算和ARMA模型的结合。主要是针对具有线性趋势的非平稳的时间序列,来进行建模预测。
ARIMA模型的形式如下:
Φ(B)∇??? = Θ(?)??
E(??) = 0,???(??) = ?? 2,?(????) = 0,? ≠ ?
E(????) = 0,∀? < ?
式中,Φ(B) = 1 − ?1? − ⋯− φ???,为平稳可逆 ARIMA 模型的自回 归系数多项式;Θ(B) = 1 − ?1? − ⋯− ????,为平稳可逆 ARMA(p,q)模型的移动平滑系数多项式。
2.建模步骤
(1)画出时序图,自相关,偏自相关图,利用这些图形(或者利用单位根检验判别)判断序列的平稳性。
(2)将非平稳的时间序列进行差分运算,一般一个时间序列进行一到两次差分运算,就应该会平稳下来,否则,就可以认为该时间序列不适合用ARIMA模型来进行建模。
(3)对差分后的时间序列进行平稳性检验,以及白噪声序列,有时会出现差分后序列平稳下来,但是差分后的序列为白噪声,那么这时候该时间序列同样不适合ARIMA模型的建模处理。
(4)画出差分后时间序列的时序图,自相关,偏自相关图,来对该ARIMA模型进行定阶。(或者利用最小AIC准则来定阶也可以)
(5)求出模型的各项参数
(6)对模型的残差进行白噪声检验和参数进行显著性检验。
(7)利用模型进行预测。
3.建立模型
(1)画出时序图,进行单位根检验
library(tseries)
library(forecast)
library(zoo)
x=read.table("C:/Users/MrDavid/data_TS/A1.17.csv",sep=",",header=T)
x.fit=ts(x$index,start=1952)
plot(x.fit,col=4,pch=8,lwd=2,type="o")
adf.test(x.fit)
得到时序图:
单位根检验结果为:
发现P值远大于0.05,所以该序列为非平稳时间序列。
(2)进行差分运算,去除时间序列的趋势因素
进行一阶差分
x.dif1=diff(x.fit,difference=1)
plot(x.dif1,col=4,pch=8,lwd=2,type="o")
adf.test(x.dif1)
进行单位根检验:
adf.test(x.dif1)
检验结果显示,一阶差分平稳
对一阶差分后的平稳序列进行白噪声检验
for(i in 1:3) print(Box.test(x.dif1,type="Ljung-Box",lag=6*i))
结果显示,异界差分非白噪声序列
(3)画出自相关图,偏自相关图,然后对模型进行定阶:
acf(x.dif1,lwd=2,col=4)
pacf(x.dif1,lwd=2,col=4)
建立ARIMA(0,1,1)模型
x.fit2=arima(x.fit,order=c(0,1,1))
x.fit2
残差白噪声检验
for(i in 1:3) print(Box.test(x.fit2$residual,lag=6*i))
残差检验通过
对参数的显著性进行检验:
t1=0.7355/0.1545
pt(t1,df=36,lower.tail=F)
参数检验显著
该模型拟合成功
(4)对未来三期值进行预测
x.fore=forecast(x.fit2,h=3)
x.fore
画出预测图
L1=x.fore$fitted-1.96*sqrt(x.fit2$sigma2)
U1=x.fore$fitted+1.96*sqrt(x.fit2$sigma2)
L2=ts(x.fore$lower[,2],start=1952)
U2=ts(x.fore$upper[,2],start=1952)
c1=min(x.fit,L1,L2)
c2=max(x.fit,L2,U2)
plot(x.fit,type="p",pch=8,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)
ARIMA模型的R实现相关推荐
- arima 数据预处理_时间序列分析|ARIMA模型分步骤解析及R中实践
你是否想要做时间序列分析,但却不知道代码怎么写? 你是否不清楚时间序列分析各种模型该在什么情况下使用? 本文将针对以上两个问题,带你入门时间序列分析~ 等等! 不止'入门' 读完这篇,你立即就能在R中 ...
- R语言时间序列(time series)分析实战:使用ARIMA模型预测时间序列
R语言时间序列(time series)分析实战:使用ARIMA模型预测时间序列 目录
- r语言没有forecast这个函数_R语言学习日记——时间序列分析之ARIMA模型预测
指数平滑法对于预测来说是非常有帮助的,而且它对时间序列上面连续的值之间相关性没有要求.但是,如果你想使用指数平滑法计算出预测区间,那么预测误差必须是不相关的, 而且必须是服从零均值. 方差不变的正态分 ...
- R语言 时间序列arima模型
基本理论知识 ARMA模型称为自回归移动平均模型,是时间序列里常用的模型之一.ARMA模型是对不含季节变动的平稳序列进行建模.它将序列值表示为过去值和过去扰动项的加权和.模型形式如下: yt=c ...
- R语言与数据分析练习:使用ARIMA模型预测网站访问量
R语言与数据分析练习:使用ARIMA模型预测网站访问量 使用ARIMA模型预测网站访问量 一.实验背景: 随着流量的增大,某网站的数据信息量也在以一定的幅度增长 基于该网站2016年9月~2017年2 ...
- R时间序列分析|SP500股指的ARIMA模型预测与残差ARCH效应分析
R时间序列分析|S&P500股指的ARIMA模型预测与残差ARCH效应分析 前言 一.数据及分析目的 二.数据探索 三.ARIMA模型构建 四.残差分析 五.模型预测 前言 由于R语言对新手并 ...
- R语言时间序列分析之ARIMA模型预测
R语言时间序列分析之ARIMA模型预测 今天学习ARIMA预测时间序列. 指数平滑法对于预测来说是非常有帮助的,而且它对时间序列上面连续的值之间相关性没有要求.但是,如果你想使用指数平滑法计算出预测区 ...
- R语言使用ARIMA模型预测股票收益时间序列
"预测非常困难,特别是关于未来".丹麦物理学家尼尔斯·波尔(Neils Bohr),最近我们被要求撰写关于arima的研究报告,包括一些图形和统计输出. 很多人都会看到这句名言.预 ...
- R语言拟合ARIMA模型:使用forecast包中的auto.arima函数自动搜索最佳参数组合、模型阶数(p,d,q)、设置seasonal参数指定在模型中是否包含季节信息
R语言拟合ARIMA模型:使用forecast包中的auto.arima函数自动搜索最佳参数组合.模型阶数(p,d,q).设置seasonal参数指定在模型中是否包含季节信息 目录
最新文章
- 老年痴呆 数字化_设计老年人愉快数字体验的5条原则
- 角色与网站地图的结合
- 【python】并行化的又一种思路
- From Hero to Zero
- 使用最新版mysql 8.0.11会出现的一些问题
- python引入自己写的文件_python引入自己写的Py文件
- IntelliJ IDEA for Mac 在eclipse(MacOS)模式下的快捷键
- twisted系列教程七–小插曲,延迟对象
- 确定一个整数是否是2的幂
- struts2无法调用类静态方法的解决办法
- pringMVC上传图片
- 分区桌面背景制作方法-EXCEL
- matlab中3乘4魔方阵,小代码3 魔方矩阵
- JS实现关闭网页广告弹窗特效
- matlab fsolve fzero,Matlab中的fzero和fsolve函数
- 数字逻辑·逻辑代数【运算、函数】
- 毕业两年,工作三年Java程序员的一点点体会与建议
- ubuntu cron 定时任务
- 位置定位LocationManager
- 基于Flink的实时数据消费应用、功能质量保障方法