如何用arima arima模型预测步骤gdp

数学建模·中国GDP趋势分析与预测_中华文本库
第1页/共17页
中国GDP增长的分析与预测
仿作于中南大学国家级精品教程
《中国GDP上涨空间的合理性分析》
1978 年11月,中国经济开始改革开放,之后中国经济持续高速发展达30年之久,让全世界瞩目。这30年中,中国经济增长成为世界第三大经济体。
国内生产总值(GDP)是现代国民经济核算体系的核心指标,是衡量一个国家综合国力的重要指标。
本文就1978年到2008年的生产总值(GDP)等相关统计数据,先建立了关于GDP增长
的回归预测模型.通过MATLAB编程计算, 本文判断出
234^?1?x?x?x?95.8665x
567?4.0x?0.0007x对现实数据的拟合效果最好,从而预测了2014年
到2018年的GDP总量,但是预测值与实际极度不符。
为了得到更好的预测结果 ,本文建立了ARIMA模型。 通过计算自相关函数和偏相关函数,确定取d=2。利用AIC准则定阶,取ARIMA(1,2,2)模型。计算得到2014年到2018年的GDP总量,通过与的GDP总量比较,发现该模型短期预测精度是比较高的。
选取ARIMA模型预测的结果进行分析,预计中国GDP将继续保持增长,不过增长率缓慢下降。猜想:GDP年增长率最后将趋于稳定。
关键词:GDP;回归预测模型;ARIMA模型
第1页/共17页
寻找更多 ""【ARIMA模型GDP例程序】-学网-中国IT综合门户网站-提供健康,养生,留学,移民,创业,汽车等信息
【ARIMA模型GDP例程序】
来源:互联网 更新时间: 11:19:14 责任编辑:李志喜字体:
本文由hssx2008120贡献
/** arima 模型 GDP 事例程序 在 SAS/EST 软件中有一个综合软件包―PROC ARIMA,只需输简洁的命令就可以 得到包括模型识别、参数估计、相对优化模型选择、短期预测等丰富的分析结果。 实际上,一个完整的 ARIMA 程序由 identify(模型识别)、estimate(估计)、forecast(估计) 组成。他们涵盖了平稳序列建模的每个步骤,可以联合使用,也可分开使用。**/ ARIMA 过程的语法格式如下: Proc arima data = &时间序列数据集&; Identify var = &分析变量& [ststionarity = (&检验方法& = &阶数&)] nlag = k [minic p = (0: n) q = (0: m)]; Estimate [method = 参数估计方法] p = n Run 说明: 1) Identify 命令输出 5 方面的信息:分析变量的描述性统计、样本自相关图、样本逆自相关图、 样本偏自相关图和纯随机检验结果; 如果增加可选项 minic 短语,则可以得到一定范围内的最优模型定阶。 如果增加可选项 ststionarity 短语,则可以得到单位根检验的结果。 2) Estimate 命令输出 5 方面的信息:未知参数的估计值、拟合统计量的值、系数相关阵、残差 自相关检验结果和拟合模型的具体形式; 如果增加可选项 method 短语,则可以选择参数估计的方法:ML(极大似然法) 、ULS(最小 二乘法) 、CLS(条件最小二乘法――系统默认) 。 3) Forecast 命令输出模型对序列的短期预测值,包括预测值的标准差、95%的置信下限、95% 的置信上限等; 利用存储在临时数据集 results 中的数据,可以绘制拟合、预测图。 1. 时序图及平稳性检验
plot gdp*year=1 ; symbol c=red i=join v= 注 symbol常用参数
/* C―图形颜色,red_红色,black_黑色,green_绿色,blue_蓝色,pink_洋红等 */ /* V―观测值的图形,star_*, dot_., cicle_圆圈,diamond_菱形,none_不标 */ /* I―观察值的链接方式,join_线连,spline_光滑连接,needle_作观察值到横轴悬垂线,none_不连 */
q = m [noint];
Forecast lead = u id = 时间变量 out =
/** 原始数据散点图 **/ proc gplot data=gdp.
proc arima data= gdp. identify var=gdp stationarity =(adf=3) nlag=12; /* stationarity 支持sdf、pp和rw三种检验方法,adf=3为adf的3阶延迟检验(缺省=2) */ 结果详解见王燕P234 2.平稳变换再做时序图 set gdp. /** 原始数据对数、差分变换 **/
loggdp=log(gdp); cfloggdp=dif(loggdp); /**对数数据散点图**/ plot loggdp*year=1 ; symbol c=black i=join v= /* 一阶差分对数数据散点图*/ plot cfloggdp*year=1; symbol c=green v=dot i=
3.平稳性检验
/* 一阶差分对数数据的自相关图、偏自相关图、纯随机性检验、单位根检验 */ proc arima data= identify var=loggdp(1) stationarity =(adf=3) nlag=12; /* loggdp(1)这里的数1为差分阶数 */ 4.定阶
/** 定阶 **/ proc arima data= identify var=loggdp(1) nlag=6 minic p=(0:7) q=(0:7); /* minic为一定范围模型定阶――相对最优模型识别 */ /** 参数估计 **/ proc arima data=
5.参数估计
identify var=loggdp(1); estimate p=1 q=0; /* SAS支持三种估计,默认为条件最小二乘估计,要制定可增加选项: METHOD=ML 极大似然估计 METHOD=ULS 最小二乘估计 METHOD=CLS 条件最小二乘估计 输出项的含义见王燕 P104*/;
6.模型预测
/**参数估计及预测**/ proc arima data= identify var=loggdp(1) nlag=16; estimate p=1 q=0; forecast lead=4 id=year out=
7.绘制预测图
y=exp(loggdp);
/**绘制预测图**/
estimate1=exp(forecast); el95=exp(l95); eu95=exp(u95); proc gplot data= plot y*year=1 estimate1*year=2 el95*year=3 eu95*year=3/ symbol1 c=black i=none v= symbol2 c=red i=join v= symbol3 c=green i=join v=none l=2;
注:1)SAS 白噪声自相关检验结果:
To lag―延迟阶数
Chi-Squre―是 QLB 统计量,服从卡方分布 Df―是 QLB 统计量服从的卡方分布的自由度
Pr&Chisq―该 QLB 统计量得 P 值 2)自相关函数图中:
Lag―延迟阶数 Covariance―延迟阶数给定后的自协方差函数 Correlation―延迟阶数给定后的自相关函数 Std Error―自相关函数的标准差 “.”―2 倍标注差范围
3)单位根检验结果详解见王燕P234,主要检查哪个p值小于显著水平α:
类型1 类型2 类型3 无常数均值、无趋势的p阶自回归过程: 有常数均值、无趋势的p阶自回归过程:
xt = ?1 xt ?1 + ?? p xt ? p + ε t xt = μ + ?1 xt ?1 + ?? p xt ? p + ε t xt = μ + β t + ?1 xt ?1 + ?? p xt ? p + ε t
有常数均值、又有趋势的p阶自回归过程:
相关文章:
上一篇文章:下一篇文章:
最新添加资讯
24小时热门资讯
Copyright © 2004- All Rights Reserved. 学网 版权所有
京ICP备号-1 京公网安备02号需求预测我喜欢用ARIMA模型 - 简书
需求预测我喜欢用ARIMA模型
本文结构:
时间序列分析?
什么是ARIMA?
ARIMA数学模型?
input,output 是什么?
怎么用?-代码实例
常见问题?
时间序列分析?
时间序列,就是按时间顺序排列的,随时间变化的数据序列。生活中各领域各行业太多时间序列的数据了,销售额,顾客数,访问量,股价,油价,GDP,气温。。。
随机过程的特征有均值、方差、协方差等。如果随机过程的特征随着时间变化,则此过程是非平稳的;相反,如果随机过程的特征不随时间而变化,就称此过程是平稳的。下图所示,左边非稳定,右边稳定。
非平稳时间序列分析时,若导致非平稳的原因是确定的,可以用的方法主要有趋势拟合模型、季节调整模型、移动平均、指数平滑等方法。若导致非平稳的原因是随机的,方法主要有ARIMA(autoregressive integrated moving average)及自回归条件异方差模型等。
什么是ARIMA?
ARIMA (Auto Regressive Integrated Moving Average) 可以用来对时间序列进行预测,常被用于需求预测和规划中。
可以用来对付 ‘随机过程的特征随着时间变化而非固定’ 且 ‘导致时间序列非平稳的原因是随机而非确定’ 的问题。不过,如果是从一个非平稳的时间序列开始, 首先需要做差分,直到得到一个平稳的序列。
模型的思想就是从历史的数据中学习到随时间变化的模式,学到了就用这个规律去预测未来。
ARIMA(p,d,q)模型,其中 d 是差分的阶数,用来得到平稳序列。
AR是自回归, p为相应的自回归项。
MA为移动平均,q为相应的移动平均项数。
ARIMA数学模型?
ARIMA(p,d,q)模型是ARMA(p,q)模型的扩展。
ARIMA(p,d,q)模型可以表示为:
其中L 是滞后算子(Lag operator),d in Z, d&0。
AR:当前值只是过去值的加权求和。
MA:过去的白噪音的移动平均。
ARMA:AR和MA的综合。
ARIMA:和ARMA的区别,就是公式左边的x变成差分算子,保证数据的稳定性。
差分算子就是:
令 wt 为:
则 ARIMA 就可以写成:
input,output 是什么?
输入历史数据,预测未来时间点的数据。
怎么用?-代码实例
本文参考了:另外推荐大家看这篇,36大数据上有一个python版讲的不错,里面对稳定性的定量检验的讲解比较详细:
ARIMA模型运用的基本流程有几下几步:
数据可视化,识别平稳性。
对非平稳的时间序列数据,做差分,得到平稳序列。
建立合适的模型。平稳化处理后,若偏自相关函数是截尾的,而自相关函数是拖尾的,则建立AR模型;若偏自相关函数是拖尾的,而自相关函数是截尾的,则建立MA模型;若偏自相关函数和自相关函数均是拖尾的,则序列适合ARMA模型。
模型的阶数在确定之后,对ARMA模型进行参数估计,比较常用是最小二乘法进行参数估计。
假设检验,判断(诊断)残差序列是否为白噪声序列。
利用已通过检验的模型进行预测。
使用ARIMA模型对裙子长度预测
1、加载数据
skirts &- scan("/tsdldata/roberts/skirts.dat", skip=5)
str(skirts)
head(skirts)
boxplot(skirts)
length(skirts)
2、把数据转化为是时间序列
skirts_ts &- ts(skirts, start=c(1886), frequency=1)
1)查看时间序列对应的时间
2)画出时间序列图
plot.ts(skirts_ts)
从图可知:女人裙子边缘的直径做成的时间序列数据,从 1866 年到 1911 年在平均值上是不平稳的
3、做差分得到平稳序列
1)做时间序列的一阶差分
skirts_diff &- diff(skirts_ts, differences = 1)
plot.ts(skirts_diff)
从一阶差分的图中可以看出,数据仍是不平稳的,继续差分
2)做时间序列的二阶差分
skirts_diff2 &- diff(skirts_ts, differences = 2)
plot.ts(skirts_diff2)
二次差分后的时间序列在均值和方差上看起来是平稳了
4、找到合适的ARIMA模型
寻找 ARIMA(p,d,q)中合适的 p 值和 q
1)自相关图ACF
acf(skirts_diff2, lag.max = 20)
acf(skirts_diff2, lag.max = 20, plot = F)
自相关图显示滞后1阶自相关值基本没有超过边界值,虽然5阶自相关值超出边界,那么很可能属于偶然出现的,而自相关值在其他上都没有超出显著边界, 而且我们可以期望 1 到 20 之间的会偶尔超出 95%的置信边界。 自相关图5阶后结尾
2)偏相关图PACF
pacf(skirts_diff2, lag.max = 20)
pacf(skirts_diff2, lag.max = 20, plot = F)
偏自相关值选1阶后结尾故我们的ARMIA模型为armia(1,2,5
3)使用auto.arima()函数,自动获取最佳的ARIMA模型
library(forecast)
auto.arima(skirts_ts, ic=c("aicc", "aic", "bic"), trace = T)
Best model: ARIMA(1,2,0)
5、建立ARIMA模型:并对比arima(1, 2, 0)与arima(1, 2, 5)模型
1)arima(1, 2, 0)模型
(skirts_arima &- arima(skirts_ts, order = c(1, 2, 0)))
aic = 391.33
2)arima(1, 2, 5)模型
(skirts_arima &- arima(skirts_ts, order = c(1, 2, 5)))
aic = 381.6
AIC是赤池消息准则SC是施瓦茨准则,当两个数值最小时,则是最优滞后分布的长度。我们进行模型选择时,AIC值越小越好。所以arima(1, 2, 5)模型较好
6、预测:预测5年后裙子的边缘直径
(skirts_forecast &- forecast.Arima(skirts_arima, h=5, level = c(99.5)))
plot.forecast(skirts_forecast)
观察 ARIMA 模型的预测误差是否是平均值为 0 且方差为常数的正态分布,同时也要观察连续预测误差是否自相关
1)检验预测误差的自相关性
tsdiag(skirts_arima)
下面第一个图表代表估计模型误差的绘图。图中竖线的长度比较相似,都处在稳定范围之内,即估计的模型没产生不符合要求的误差分布。
第二张绘图,显示估计的模型没造成误差之间的任何关系。这是符合数据生成时每个数据都是独立的这个前提的。由此可见,这ACF图符合检测要求。
第三张图,也就是Ljung-Box 指标。这个指标可对每一个时间序列的延迟进行显著性的评估。判定技巧是,P-value点的高度越高,我们的模型越可信。
acf(skirts_forecast$residuals, lag.max = 20)
Box.test(skirts_forecast$residuals, lag=20, type = "Ljung-Box")
p-value = 0.9871相关图显示出在滞后1-20阶中样本自相关值都没有超出显著置信边界,而且Ljung-Box检验的p值为0.99,所以我们推断在滞后1-20阶(lags1-20)中没明显证据说明预测误差是非零自相关的。
Acf检验说明:残差没有明显的自相关性,Ljung-Box测试显示:所有的P-value&0.05,说明残差为白噪声。
2)判断预测误差是否是平均值为零且方差为常数的正态分布做预测误差的时间曲线图和直方图(具有正态分布曲线)
预测误差的均值是否为0
plot.ts(skirts_forecast$residuals)
自定义判断预测误差的方差是正态分布的函数
plotForecastErrors &- function(forecasterrors){
#画预测误差的直方图
hist(forecasterrors, col="red", freq = F)
#画方差是预测误差数据的方差,平均值是0的正态分布数据的线
mysd &- sd(forecasterrors)
mynorm &- rnorm(10000, mean = 0, sd = mysd)
myhist &- hist(mynorm, plot = F)
points(myhist$mids, myhist$density, type="l", col="blue", lwd=2)
plotForecastErrors(skirts_forecast$residuals)
下图显示时间序列的直方图显示预测误大致是正态分布的且平均值接近于0。因此,把预测误差看作平均值为0方差为服从零均值、方差不变的正态分布是合理的。
既然依次连续的预测误差看起来不是相关,而且服从零均值、方差不变的正态分布,那么对于裙子直径的数据,ARIMA(1,2,5)看起来是可以提供非常合适预测的模型。
常见问题?
1.ARIMA建模的步骤
观察数据是否是时间序列数据,是否有seasonal等因素。
transform:Box-correlation,保证variance是uniform的。如果用box-cor还不能稳定,还要继续深入挖掘。
ACF/PACF 是为了找到 MA 和 AR 的order。
d=0-stationarity,1,2-non stationarity
白噪音check:确定这个模型是optimize的,mean=0,平方差=1.
误差是白噪音的时候,model就ok了,就可以预测了
2.决定ARIMA参数的方法
d是差分的阶数,几阶后就可以保证稳定:
modelfit,计算出来的参数是 1,1,1 ,但可能 2,1,1 预测效果更好,那就用后者。
或者用AIC比较俩模型。
推荐阅读:
这一篇实例也不错:
关于AIC,BIC:
一个课程:
我是 不会停的蜗牛 Alice85后全职主妇喜欢人工智能,行动派创造力,思考力,学习力提升修炼进行中欢迎您的喜欢,关注和评论!

我要回帖

更多关于 arima模型预测步骤 的文章

 

随机推荐