销售额预测分析报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
销售额预测分析报告
一、模型选择
预测是重要的统计技术,对于领导层进行科学决策具有不可替代的支撑作用。
常用的预测方法包括定性预测法、传统时间序列预测(如移动平均预测、指数平滑预测)、现代时间序列预测(如ARIMA模型)、灰色预测(GM)、线性回归预测、非线性曲线预测、马尔可夫预测等方法。
综合考量方法简捷性、科学性原则,我选择ARIMA模型预测、GM(1,1)模型预测两种方法进行预测,并将结果相互比对,权衡取舍,从而选择最佳的预测结果。
二ARIMA模型预测
(一)预测软件选择----R软件
ARIMA模型预测,可实现的软件较多,如SPSS、SAS、Eviews、R等。
使用R 软件建模预测的优点是:第一,R是世最强大、最有前景的软件,已经成为美国的主流。
第二,R是免费软件。
而SPSS、SAS、Eviews正版软件极为昂贵,盗版存在侵权问题,可以引起法律纠纷。
第三、R软件可以将程序保存为一个程序文件,略加修改便可用于其它数据的建模预测,便于方法的推广。
(二)指标和数据
指标是销售量(x),样本区间是1964-2013年,保存文本文件data.txt中。
(三)预测的具体步骤
1、准备工作
(1)下载安装R软件
目前最新版本是R3.1.2,发布日期是2014-10-31,下载地址是/。
我使用的是R3.1.1。
(2)把数据文件data.txt文件复制“我的文档”①。
(3)把data.txt文件读入R软件,并起个名字。
具体操作是:打开R软件,输入(输入每一行后,回车):
data=read.table("data.txt",header=T)
①我的文档是默认的工作目录,也可以修改自定义工作目录。
data #查看数据①
回车表示执行。
完成上面操作后,R窗口会显示:
(4)把销售额(x)转化为时间序列格式
x=ts(x,start=1964)
x
结果:
2、对x进行平稳性检验
ARMA模型的一个前提条件是,要求数列是平稳时间序列。
所以,要先对数列x进行平稳性检验。
先做时间序列图:
①#后的提示语句是给自己看的,并不影响R运行
从时间序列图可以看出,销售量x 不具有上升的趋势,也不具有起降的趋势,初步判断,销售量x 是平稳时间序列。
但观察时间序列图是不精确的,更严格的办法是进行单位根检验。
单位根检验是通行的检验数列平稳性的工具,常用的有ADF 单位根检验、PP 单位根检验和KPSS 单位根检验三种方法。
单位根检验的准备工作是,安装tseries 程序包。
安装方法:在联网状态下,点菜单“Packages —Install packages ”,在弹出的对话框中,选择一个镜像,如China(Beijing1),确定。
然后弹出附加包列表,选择tseries ,确定即可。
安装完附加包后,执行下面操作: library(tseries) #加载tseries 包 adf.test(x) #ADF 检验 pp.test(x) #PP 检验 kpss.test(x) #KPSS 检验 结果:
Time
x
19701980199020002010
020********
600008000
上面分别给出了ADF检验、PP检验和KPSS检验的结果。
其中,ADF检验显示x是不平稳的(P值=0.99>0.05),而PP检验①和KPSS检验②则表明x是平稳时间序列。
再结合时间序列图的判断,我们认为x是平稳时间序列,因而符合建立ARMA模型的前提条件。
3、选择模型
做x的自相关图(左图)和偏自相关图(右图):
acf(x) #做自相关图
pacf(x) #做偏自相关图
无论是自相关系数图(左),还是偏自相关系数图(右),都显著第4阶的系数突破了虚线,表明相关性显著。
因此,我们建立4阶AR模型,写作AR(4)。
4、估计模型参数
fit=arima(xse,order=c(4,0,0)) #把估计结果取名为fit
fit #查看fit
①PP检验的原假设是不平稳,P值=0.01,小于0.05,拒绝原假设,表明序列是平稳的。
②KPSS检验与PP检验和ADF检验不同,它的原假设是平稳的。
P值=0.1,大于0.05,接受原假设,表明序列是平稳序列。
上面给出了AR模型的回归系数的估计值,其中,截距为44079.31,1到4阶自回归系数分别是0.0344,-0.0174,-0.2002和0.4560。
5、模型效果的检验
模型效果的检验非常重要,因为只有通过检验,才证明是可靠、有效的模型,才能进行后续的预测分析。
主要的检验工具有两个,一是对回归系数的显著性检验。
四个自回归系数中,第4个回归系数的T统计值=0.4560/0.1241=3.67,大于2,因此,通过了显著性检验,表明确实存在四阶自相关。
这与前面看自相关图和偏自相关系数图的结论相吻合。
第二个检验是残差的白噪声检验(Ljung-Box检验),这个最主要、最关键。
一般来说,只要通过了残差的白噪声检验,则表明模型是有效的。
残差白噪声检验的R代码:
tsdiag(fit)
结果:
上边是残差的自相关图,图形显示,除了0阶以外,各阶自相关系数都很小,
基本在0左右。
表明残差中已经没有多少有用的信息,残差是纯随机序列,即白噪声。
换个角度说,时间序列的有价值信息绝大部分都已经被模型提取了,建模获得了成功。
下边是更为精确的Ljung-Box检验结果,所有小圈都在虚线之上(虚线值为0.05),表明在0.05的显著性水平上,各阶自相关系数和零的差别不显著,残差为白噪声序列,模型效果优良。
这与上面的残差的自相关图相吻合。
6、ARIMA模型预测
R软件代码:
predict(fit,n.ahead=3) #预测下三年(2014-2016)的数值
若想预测后五年,就把3改成5,依此类推。
结果:
pred即predict(预测)的前四个字母,下面是时间2014-2016,表明要预测2014-2016年三年的。
结果在最后一行,2014年销售额预测值为61768.02,2015年为36563.83,2016年为45464.87。
(四)模型的再检验—用AIC准则寻找更优
上面建模预测,通过的显著性检验和残差的白噪声检验,证明模型优良,可以进行预测。
一般的预测报告就到此结束了。
但考虑到预测对于企业家的决策重要,而决策的失误将会产生很大的不良后果。
因此,更严谨起见,我们建立了24个可能的ARMA模型,一个一个比较,想看一看还有没有比前面我们建立的模型拟合效果更好的。
挑选标准是国际通行的AIC准则。
AIC是日本统计学家Akaike于1973年提出的。
其基本思想是,变量越多,一般来说模型的拟合优度会越高。
但是我们又不能单纯地以拟合的准确度的衡量模型的好坏,因为自变量的增多会导致未知参数的增多,而参数越多,参数估计的难度就越大,估计的精度也越差。
因此,应该寻求在拟合优度和参数个数之间
的一个平衡,AIC达到最小时的模型被认为是最优的模型。
这就是说,我们所建立的预测模型,经过Ljung-Box检验,表明是优良的模型。
但是,如果有好多模型通过检验,证明优良呢?这时,就可以比较AIC的大小,达到优中选优的目的。
统计界的经验表明,ARMA模型最常见的4阶之内。
这样会产生24个ARMA 模型。
分别是AR(1)、AR(2)、AR(3)、AR(4)、MA(1)、MA(2)、MA(3) 、MA(4)、ARMA(1,1) 、ARMA(2,1) 、ARMA3,1) 、ARMA(4,1) 、ARMA(1,2) 、ARMA(2,2) 、ARMA(3,2) 、ARMA(4,2) 、ARMA(1,3) 、ARMA(2,3) 、ARMA(3,3) 、ARMA(4,3) 、ARMA(1,4) 、ARMA(2,4) 、ARMA(3,4) 、ARMA(4,4)。
R代码:
fit=arima(x,c(1,0,0));fit #ar(1)
fit=arima(x,c(2,0,0));fit #ar(2)
fit=arima(x,c(3,0,0));fit #ar(3)
fit=arima(x,c(4,0,0));fit #ar(4)
fit=arima(x,c(0,0,1));fit #ma(1)
fit=arima(x,c(0,0,2));fit #ma(2)
fit=arima(x,c(0,0,3));fit #ma(3)
fit=arima(x,c(0,0,4));fit #ma(4)
fit=arima(x,c(1,0,1));fit #arma(1,1)
fit=arima(x,c(2,0,1));fit #arma(2,1)
fit=arima(x,c(3,0,1));fit #arma(3,1)
fit=arima(x,c(4,0,1));fit #arma(4,1)
fit=arima(x,c(1,0,2));fit #arma(1,2)
fit=arima(x,c(2,0,2));fit #arma(2,2)
fit=arima(x,c(3,0,2));fit #arma(3,2)
fit=arima(x,c(4,0,2));fit #arma(4,2)
fit=arima(x,c(1,0,3));fit #arma(1,3)
fit=arima(x,c(2,0,3));fit #arma(2,3)
fit=arima(x,c(3,0,3));fit #arma(3,3)
fit=arima(x,c(4,0,3));fit #arma(4,3)
fit=arima(x,c(1,0,4));fit #arma(1,4)
fit=arima(x,c(2,0,4));fit #arma(2,4)
fit=arima(x,c(3,0,4));fit #arma(3,4)
fit=arima(x,c(4,0,4));fit #arma(4,4)
结果计算出每个模型的AIC值,如下:AR(4):aic = 1151.31
AR(1):aic = 1159.14
AR(2):aic = 1161.08
AR(3):aic = 1160.73
MA(1):aic = 1159.13
MA(2):aic = 1161.05
MA(3):aic =1160.06
MA(4):aic =1151.49
ARMA(1,1):aic =1155.99
ARMA(2,1):aic = 1157.59
ARMA(3,1):aic = 1154.97
ARMA(4,1):aic = 1152.97
ARMA(1,2):aic = 1156.66
ARMA(2,2):aic = 1156.67
ARMA(3,2):aic = 1155.4
ARMA(4,2):aic = 1154.38
ARMA(1,3):aic = 1155.68
ARMA(2,3):aic = 1157.67
ARMA(3,3):aic = 1156.19
ARMA(4,3):aic = 1153.55
ARMA(1,4):aic = 1153.09
ARMA(2,4):aic = 1155.29
ARMA(3,4):aic = 1152.25
ARMA(4,4):aic = 1153.63
第一行是我们前面建立的四阶自回归模型AR(4)的AIC值,为1151.31。
经一一对比可以发现,所有其它模型的AIC值都大于115.31。
就是说,我们前面建立的模型是所有可能模型中的最优模型。
三、GM(1,1)预测
(一)方法简介
灰色系统理论是由华中理工大学邓聚龙教授于1982年提出并加以发展的。
二十几年来,引起了不少国内外学者的关注,得到了长足的发展。
目前,在我国已经成为社会、经济、科学技术在等诸多领域进行预测、决策、评估、规划控制、系统分析与建模的重要方法之一。
而其精华在于GM(1,1)模型,GM(1,1)被广泛应用于预测,并且预测效果很好,其使用限制条件是:原始数据单调,预测背景呈现稳定发展趋势;其优势是:适用于观测数据较少的预测问题,算法简单易行,预测精度相对较高。
鉴于GM(1,1)预测适合于数据较少情况,我们选择2008-2013年的近期数据,进行预测尝试。
(二)R软件操作
1、把脚本文件GM11.R和data2.txt复制到“我的文档”;
2、R窗口输入命令:
source("GM11.R")
data2=read.table("data2.txt",header=T)
x=data2$x
x
GM11(x,length(x)+1) #预测后1期值
预测结果:2014年销售量分别为28385.3。
在R显示结果中,是x(0)的模拟值的最后1个数。
(三)模型检验
利用R 软件进行操作处理结果显示如下: 平均相对误差= 22.11903% 相对精度= 77.88097% 可见,GM(1,1)模型预测的误差较大,相对精度不高。
再进行后验差比值检验。
原始序列的方差:
215970035633
S = 残差序列e 的方差: 22192438750
S =
后验差比值为:
C 值=S2/S1= 0.7108341
按照灰色预测理论,C 值大于0.65,表明GM(1,1)预测精度等级为:不合格(标准见下表)。
说明该模型的预测结果不太可靠。
1
234567
时间序列
小误差概率检验:
R软件给出了小误差概率值,p= 4 / 6 = 0.6666667。
属于(0.7,0.8],GM(1,1)模型预测精度等级为:勉强合格(标准见上表)。
综合来看,对于我公司的数据,GM(1,1)模型效果并不理想。
四简要结论
前面用ARIMA模型和GM(1,1)模型,对我公司的销售量进行了预测。
检验表明,GM(1,1)模型的精度较低,而ARIMA模型则通过Ljung-Box检验,表明模型优良。
而且,我们进行了全方位的24个模型的一一比对,发现我们建立的模型在所有可能模型中最优。
因而,建立重点参照ARIMA模型的预测结果。
作为统计人员,基于对统计工作的经验认识,明白任何预测,都是根据过往的历史信息进行的。
如果历史条件不变,预测结果可靠。
一旦历史条件改变,则预测结果不一定准确。
而且,只要是预测,无论方法多么科学,分析多么严谨,都没有百分百的准确,都会有预测误差。
五进一步建议
单变量时间预测,是依据单一变量—销售量的历史信息进行预测,并没有考虑其它因素。
结果仅具有参考意义。
建议领导层根据自己的经验、销售部门根据其经验,尤其是对未来经济形势的变化特点,修正前面的预测结果,使预测结果更加完善。
附录:GM(1,1)基本理论
G表示Grey(灰),M表示Model(模型),前一个“1”表示一阶,后一个“1”表示一个变量,GM(1, 1)则是一阶,一个变量的微分方程模型。
给定等时间间隔的数据列,且设数据列单调:
{}),n ( ),2( ),1()(,n 21x x x k x k ⋯⋯=,
k 表示时刻,k x k x =)(表示t =k 时刻某量的观测值,不妨设1+<k k x x ,
1,,2,1-=n k Λ,将数据列记成:
{}
n 030201)0(,,x x x x x ⋯⋯=
)0(x 表示原始数据序列。
比如:
{}697.3,390.3,337.3,278.3,874.2)0(=x 。
对原始数据作一次累加生成:即令
()n k x x
k
i i k
,,2,11
)
0()1(Λ==∑=
得一次累加生成数序列为:
{}
)
1()1(21(1)1(,,,n x x x x Λ)=
在此,{}
)
1(k x ={2.874, 6.152, 9.489, 12.879, 16.558}
给定的原始数据序列{}
)
0(k x 已经是单增序列,经一次累加后生成的累加数序列具有更强
烈的单调性。
我们知道指数序列是单调的,但是,单调序列却不一定是指数型的,不过强烈的单调序列可近似看做是指数的,即可用指数型曲线进行弥合。
如果用指数曲线来弥合一次累加生成序列,那么,这条指数曲线一定是某个一阶线性常系数微分方程
u ax dt
dx =+)1()
1( (6)
的满足某个初始条件的一条积分曲线:
a u e a u x x at +⎪⎭⎫ ⎝
⎛
-=-)1()1()1(
即
a u e a u x x at +⎪⎭⎫ ⎝
⎛
-=-)1()0()1(
(7)
其中a ,u 是待确定的未知参数,该微分方程中的导数dt
dx )
1(可用差商近似表示。
()()t
k x t k x dt dx t ∆-∆+=→∆)1()1(0)1(lim
t ∆为时间间隔,将时间间隔t ∆看做是单位时间间隔,并且认为时间被充分细化(秒,
毫秒。
微秒……事实上只要单位时间内函数的增量相对很小,这个单位时间间隔也可以是日,
月,年等。
)
此时有
()()k x k x dt
dx )1()1()
1(1-+≈ 注意到一次累加生成数)()
1(t x 在时刻t =k +1与t =k 时的差为:
()()()11)0()1()1(+=-+k x k x k x
而)
1(dt dx 是在[k , k +1]上某一点取值,既然是近似,索性将dt
dx )1(的值取在点k +1,即 ()()()11)0()1()1(1
)
1(+=-+≈+=k x k x k x dt
dx k t
于是,一阶线性常系数微分方程
u ax dt
dx =+)1()
1( 可近似化为:
()()()11)1()0(+≤≤≈++k t k u
t ax k x
注意到函数)
1(x
(t )在区间[k , k +1]上取值,当以中值近似时有:
()()()()
12
1)1()
1()1(++-
≈k x k x t x 则微分方程近似转化为:
()1)0(+k x ()()()u k x k x a +⎥⎦
⎤
⎢⎣⎡++≈121)1()1(
这是一个关于参数a 与u 的线性近似表达式。
与数据点()i i y x ,近似满足
b ax y i i +≈
比较知,按最小二乘原理,线性回归系数a ,b 满足:
()
N T T
Y B B B b a ⋅⋅=⎪⎪⎭
⎫ ⎝⎛-1
其中
()()
(
)()()()
()()()
⎪
⎪
⎪⎪⎪⎪⎪⎭
⎫
⎝⎛+--+-+-=112
11322
112121)
1()1()1()1()
1()1(n x n x x x x x B M
M ,()()()
()()()⎪⎪⎪⎪⎪
⎭⎫ ⎝⎛=n x x x Y N
00032M 具体到上面给定的数据且用N X 替代N Y ,则上式化作:
()()
(
)()()()
()()()
⎪⎪⎪⎪⎪⎭⎫
⎝⎛----=⎪⎪⎪⎪⎪⎪⎪
⎭
⎫
⎝⎛+--+-+-=17185.141184.111820.71513.4112
11322
112121)
1()1()1()1()
1()1(n x n x x x x x B M M , ()()()()()()⎪⎪⎪⎪
⎪⎭⎫ ⎝⎛=⎪⎪⎪⎪⎪⎭
⎫ ⎝⎛=679.3390.3337.3278.332000n x x x X N M 由此看出,若原始数据有n 个,则一次累加生成的数据有n -1个。
计算()
1
-B
B T
由 ⎪⎪⎪⎪⎪⎭
⎫
⎝
⎛----⎪⎪⎭⎫ ⎝⎛----=1718.141184.111820.71513
.411117185.14184.1182.7513.4B B T
得
⎪⎪⎭
⎫ ⎝⎛--=4236.38236.38243.423B B T ,
()
⎪⎪⎭
⎫
⎝⎛=-03296.116553652.016553652.001341734.01
B B T
计算()
N T T X B B
B 1
-得
()
N T
T
X B B B 1
-⎪⎪⎭
⎫
⎝⎛-=06536.303720.0
即a =–0.03720,u =3.06536
这样,所求的微分方程模型为:
06536.303720.0)1()
1(=-x dt
dx (10)
其解为: ()1)
1(+k x ()a
u e a u x ak +⎥⎦
⎤⎢⎣
⎡-=-1)
0(
即解可表示为:
()392535.822665.8510372.0)1(-=+k e k x
(11)
(11)式就是最后得到的预测模型,该模型称作GM (1, 1)预测模型。
由(11)式可求)6()
1(x ,即为t =6时的预测值,也可求)7()
1(x ,)8()
1(x 等等。
即用观测值()1x 去检验由模型(11)算出的模型值()
1ˆx。