arima模型_时间序列分析(R)‖ARIMA模型预测实例
背景
十九大报告,对教育方面做出了详细说明。近年来,随着研究生招生规模的逐渐扩大,报名参加硕士研究生考试的人数也逐年增加。大多数关于研究生的文章是以研究生的现状、研究生的教育、研究生的就业等方面为主题。就目前新闻热点而言,全国硕士研究生报名人数的增长问题也是一热门话题。报考人数与录取人数也存在着极大差异。
针对近年来,全国各地硕士研究生报名人数稳增不减的情况,利用R语言以及时间序列相关分析,结合近20年的全国硕士研究生报名人数数据采用ARIMA建立模型进行分析研究。根据实验寻找恰当的ARIMA模型并对未来三年全国硕士研究生报名人数进行预测。
正文
一、数据理解
1、数据来源
本问研究数据资料来源于考研帮以及中研招生信息网,使用的数据资料包括1995—2018年全国硕士研究生报名人数。
2、数据导入
>
3、数据展示
> kaoyandata
二、模型建立与求解
(一)平稳性检验
1、时序图
根据上面的信息,运用R语言中的绘图程序,绘制全国硕士研究生随时间的趋势图。
> kaoyandata1<-kaoyandata[-1]
> kaoyandata2<-ts(kaoyandata1,start=1995)
> dev.off()
> plot(kaoyandata2)
图1 1995—2018年全国硕士研究生报名人数时间序列图
由图1可以得出,1995-2018年全国硕士研究生报名人数总体上呈上升趋势,由1995年的15.5万人上升到2018年的238万人(见上数据展示),年平均增长率为12.1%。所以它有很大可能不是平稳序列。
2、自相关图
根据上面的信息,运用R语言中的绘图程序,绘制全国硕士研究生报名人数时间序列的自相关图(滞后期为24)。
> acf(kaoyandata2,24)
图2 1995—2018年全国硕士研究生报名人数自相关图
从上图可以看出,在5阶后才落入区间内,并且自相关系数长期大于0,显示出很强的自相关性。
3、ADF单位根检验
> install.packages("fUnitRoots")
> library(timeDate,timeSeries,fBasics)
> library(fUnitRoots)
> adfTest(kaoyandata2)
从返回的结果可以看出检验结果的pvalue值即P值显著大于0.05,判断该序列为非平稳序列。
4、总结
从上面三种检验中可以发现,该序列一定为非平稳序列。
(二)差分后的平稳性检验
1、差分运算
为了将非平稳时间序列转化为平稳序列,我们需要对该序列做差分运算。差分运算就是后一时间点减去当前时间如y(t)-y(t-1),用D表示,定义为Dy(t)=y(t) - yt - 1。 那么k阶差分可表示为:y(t)-y(t-k)=D(k)*y(t)=(1-L^k)*y(t)=y(t)-(L^k)*y(t),L为滞后算子,定义为L*y(t)=y(t-1),则k阶之后算子定 义为(L^k)*y(t)= y(t-k)。
进行差分遵循从小到大这一特点,故现对该时间序列进行 1阶差分运算,得出如下图所示的趋势图。
> kaoyandata2.dif<-diff(kaoyandata2)
> plot(kaoyandata2.dif)
图3 全国硕士研究生报名人数1阶差分时间序列图
上图显示,1阶差分处理后的数据增减趋势较为平稳,但是依据数据最优化及准确性原则,需要对1阶差分后的时间序列再做一次差分运算。 故现对该序列进行2阶差分运算。
> kaoyandata2.dif2<-diff(kaoyandata2,1,2)
> plot(kaoyandata2.dif2)
图4 全国硕士研究生报名人数2阶差分时间序列图
在理论上,足够多的差分运算可以充分提取原时间序列中的非平稳确定性信息。但进行差分运算需要注意的是,差分运算的阶数不是越多越好。差分是对信息的提取、加工的过程,每次差分都会有信息的损失,所以差分的阶数需要适当,以免过度差分。差分后的时间序列是否平稳,可以通过对差分后的时间序列进行单位根检验以此来判断差分的阶数是否最优。
> adfTest(kaoyandata2.dif)
> adfTest(kaoyandata2.dif2)
通过上面可以迅速得出,报名人数在1阶差分有常数均值下和2阶差分下ADF检验P值均小于0.05,则差分两次后的时间序列均为平稳序列,参数d的选取需要考虑1与2两个值。
2、自相关图和偏自相关图
以上是对差分阶数d的选择,而在ARIMA模型中参数p与 q也需要进行选择。时间序列的自相关系数(ACF)与偏自相关系数(PACF)可以判断参数p与q。 对平稳后的时间序列,即对1阶与2阶差分处理后的时间序列绘制自相关图与偏自相关图。
①1阶差分后的时间序列:
> par(mfrow=c(1,2))
> acf(kaoyandata2.dif,lag.max=20)
> pacf(kaoyandata2.dif,lag.max=20)
图5 d=1下的自相关与偏自相关图
一阶差分后的自相关图显示滞自相关值基本没有超过边界值,虽然1阶与3阶自相关值超出边界,那么很可能属于偶然出现的,而自相关值在其他上都没有超出显著边界。偏自相关图显示除去1阶基本上也没有超过边界值。可以考虑p=2,q= 0,即ARIMA(2,1,0)模型。
②2阶差分后的时间序列:
> par(mfrow=c(1,2))
> acf(kaoyandata2.dif2,lag.max=20)
> pacf(kaoyandata2.dif2,lag.max=20)
图6 d=2下的自相关与偏自相关图
二阶差分后的自相关图与偏自相关图显示没有超过边界值。
总结:由上面的检验可知,该序列可以算是平稳序列了。
(三)模型选择与参数估计
此时选择ARIMA(p,d,q)模型进行预测时,参数根据0, 1,2从低阶到高阶选择,根据AIC准则作为选择最优值模型。
> install.packages("zoo")
> install.packages("forecast")
> library(zoo)
> library(forecast)
> am120<-arima(kaoyandata2,order=c(1,2,0))
> am120
> am121<-arima(kaoyandata2,order=c(1,2,1))
> am121
> am220<-arima(kaoyandata2,order=c(2,2,0))
> am220
> am221<-arima(kaoyandata2,order=c(2,2,1))
> am221
将上面的信息整理成下表:
根据比较发现模型ARIMA(2,2,1)的AIC=160.44最小,则此模型最好。
(四)白噪声检验
> Box.test(am221$residual,type="Box-Pierce",lag=5)
对残差序列进行白噪声检验,得出P值=0.9165> 0.05,残差序列白噪声检验说明模型显著成立。ARIMA(2,2,1) 模型对该时间序列拟合成功。
三、模型预测
运用上述得到的 ARIMA(2,2,1)模型对全国硕士研究生报名人数及置信水平分别为80%和90%双层置信区间进行预测,并给出预测表和预测图如下。
> kaoyanpredict.fore<-forecast(am221,h=3)
> kaoyanpredict.fore
> plot(kaoyanpredict.fore)
从上图中可以看出,对于2019年报名人数的预测266万相比前一年只增加了 28万人,而2018年与2017年相差37万,二者相比可能存在不足。增长的速度有所下降。
总结
通过ARIMA模型进行分析,在进行差分处理时,需要考虑多方面因素,选择较好的阶数进行判断。在全国硕士研究生报名人数上的分析可以看出,全国硕士报名已逐渐占据据大四毕业生的选择方式,且有越来越多的学生报名硕士考试。
arima模型_时间序列分析(R)‖ARIMA模型预测实例相关推荐
- python arima模型_时间序列分析 ARIMA模型 Python(2)
最近做了一个时间序列分析的项目.时间序列分析不同于以前的项目--看一下相关的库怎么用,就可以快速上线应用.它是非常需要你的基础知识的,Hamilton关于<时间序列分析>方面的知识,写了厚 ...
- arma模型 java_时间序列分析之 ARIMA 模型的JAVA实现
最近要用ARIMA模型预测用户的数量变化,所以调研了一下ARIMA模型,最后用JAVA实现了ARIMA算法. 一.ARIMA原理 ARIMA的原理主要参考的是ARIMA原理. 二.JAVA实现 弄懂了 ...
- R语言时间序列分析之ARIMA模型预测
R语言时间序列分析之ARIMA模型预测 今天学习ARIMA预测时间序列. 指数平滑法对于预测来说是非常有帮助的,而且它对时间序列上面连续的值之间相关性没有要求.但是,如果你想使用指数平滑法计算出预测区 ...
- 金融时间序列分析: 10. ARMA模型实例(R,Python)
0. 目录 金融时间序列分析:9. ARMA自回归移动平均模型 金融时间序列分析:8. MA模型实例(Python) 金融时间序列分析:7. MA滑动平均模型 金融时间序列分析:6. AR模型实例 金 ...
- 【机器学习】数据挖掘实战:金融贷款分类模型和时间序列分析
今天给大家带来一个企业级数据挖掘实战项目,金融贷款分类模型和时间序列分析,文章较长,建议收藏! 如果本文对你有所帮助,记得文末点赞和在看,也可分享给你需要的朋友- 项目背景 银行和其他金融贷款机构经常 ...
- 《协整理论与波动模型-金融时间序列分析及应用(第二版)》
内容详实的教科书,不过看起来比较累,能用数学公式的就没用汉字,估计作者是为了社会主义节省纸张吧. 不是我这个水平现在看的,先Mark后续需要深入再翻看 <协整理论与波动模型:金融时间序列分析及应 ...
- 回归分析加不加常数项_时间序列分析基础(一)
时间序列分析是量化投资的基础,作为本公众号的开篇,自然要从最基础的讲起.时间序列分析基础将分两个篇幅,第一篇包括时间序列的基本概念.成分与分解.自相关与偏自相关性.以及平稳性.第二篇主要讲一下用于时间 ...
- 时间序列分析 | SVM支持向量机时间序列预测(Matlab完整程序)
时间序列分析 | SVM支持向量机时间序列预测(Matlab完整程序) 目录 时间序列分析 | SVM支持向量机时间序列预测(Matlab完整程序) 预测结果 评价指标 步骤介绍 完整程序 预测结果 ...
- arima 数据预处理_时间序列分析|ARIMA模型分步骤解析及R中实践
你是否想要做时间序列分析,但却不知道代码怎么写? 你是否不清楚时间序列分析各种模型该在什么情况下使用? 本文将针对以上两个问题,带你入门时间序列分析~ 等等! 不止'入门' 读完这篇,你立即就能在R中 ...
最新文章
- Qt解析XML及QTableWidget用法示例
- 如何提高工作效率,拥有自由支配时间?
- CM: word template web service schema number的限制
- 有问有答 | AWS使用精华问答,带您开启 AWS 上的云计算之旅!
- java日历类add方法_Java日历computeFields()方法及示例
- android 暂停音乐播放器,Android仿音乐播放器带进度的播放暂停按钮
- mysql科目成绩百分比_Mysql学习经验总结【2】
- 如何使用JavaScript从字符串中删除空格?
- GDAL使用插件方式编译HDF4、HDF5以及NetCDF的bug修改
- c md5加密 和java不一样_C#的MD5加密为什么和JAVA的加密出来的结果不一样?
- sqoop连接hive和mysql_【数据平台】sqoop支持hive和mysql互导的基本语句格式
- ESX4 安装前的考虑
- 关于EAN13码的设置问题
- dell g7 重装win10
- p1633[进制应用]砝码称重
- CSTC—基于零仲裁证明的价值协议
- OAuth2.0第三方授权原理与实战
- 亲测centos下mysql安装,不行锤我
- python 读取文件去除回车
- 跟涛哥一起学嵌入式 27:一个小故事,让你明白进程、线程和协程的区别
热门文章
- 【C语言-三目运算符】代码学习
- 单元测试与Nunit的基本使用
- mysql 5.6 全文索引_MySql5.6全文索引 及 5.7 中文索引插件ngram
- 【Python】提升DL性能的深度学习技巧
- 脑瘫女孩用嘴唇打字写出20万字小说(图)
- 计算机无法开机如何读u盘启动,电脑开不开机重新安装系统步骤
- python+pyqt5实现RPG游戏角色生成器
- 国美金融贷款进行内存管理,国美金融贷款负责分配和回收
- 京东主图视频用这种方法批量下载速度更快
- python能做什么工作知乎-Python学到什么程度可以面试工作?