时间序列的指数平滑预测法

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

3.2时间序列的指数平滑预测法指数平滑法(Expinentialsmoothingmethod)的思想也是对时间序列进行修匀以消除不规则和随机的扰动。该方法是建立在如下基础上的加权平均法:即认为时间序列中的近期数据对未来值的影响比早期数据对未来值得影响更大。于是通过对时间序列的数据进行加权处理,越是近期的数据,其权数越大;反之,权数就越小。这样就将数据修匀了,并反映出时间序列中对预测时点值的影响程度。根据修匀的要求,可以有一次、二次甚至三次指数平滑。3.3.1一次指数平滑法1.一次指数平滑法的计算公式及平滑系数a的讨论设时间序列为Nxxxx,,,321,一次指数平滑数列的递推公式为:,1,10,)1(110111xSNtaSaaxSttt(3-6)式中,1tS表示第t时点的一次指数平滑值,a称为平滑系数。递推公式(3-6)中,初始值10S常用时间序列的首项1x(适用于历史数据个数较多,如50个历史数据及以上),如果历史数据个数较少,如在15或20个数据及以下时,可以选用最初几期历-史数据的平均值作为初始值10S,这些选择都有一定的经验性和主观性。下面讨论平滑系数a。将递推公式(3-6)展开可得:10112211221121111)1()1()1()1()1()1()1()1()1(SaxaaxaaxaaaxSaxaaaxSaaxaaxSaaxStttttttttttttt容易看出,由于10a,ix的系数iaa)1(随着i的增加而递减。注意到这些系数之和为1,即:1)1()1(1)1(1)1()1(11tttitiaaaaaaa于是,递推公式(3-6)中的1tS就是样本值txxx,,,21的一个加权平均。当用递推公式(3-6)来进行预测时,我们将用1tS作为第1t时点的预测值。从上面的讨论可以看到,离预测时点1t最近的时点t的值tx,其权为a,最大,其次为1tx的权1,),1(xaa的权最小。可见,公式(3-6)是在认为新近数据对未来影响大,远期数据对未来影响小的情况下对原时间序列的加权平均(修匀)。若平滑系数0a,此时有)(110111xSSStt,这表明确定)(110xS后,每个时点的平滑值皆等于10S,此时,每个时点i的观察值ix不起任何作用。若平滑系数1a,此时有ttxS1。说明平滑后数列1tS就是原时间序列,即没有对原时间序列进行任何处理和修匀。对于平滑系数a来说,除了上述两种极端情况外,不可能出现ix与jx)(ji系数相等的情况。综上所述,不难看到,10a且比较接近1时,计算得到的一次指数平滑值对原历史数据的修匀程度将较小,平滑后的数列值1tS能够比较快地反映出原时间序列的实际变化,因此,对于变化较大或趋势性较强的时间序列适合选择比较靠近1的数据作为平滑系数,比如取90.0,95.0a等。若10a且取值比较靠近0时,计算得到的一次指数平滑值对原历史数据的修匀程度将较大,平滑后的数列对原时间序列的变化反应较迟钝。因此,对于变化较小的、或接近平稳的时间序列,应选择比较靠近0的平滑系数使得平滑过程中的各数据的权数比较接近。【例3-7】某电器销售企业1992-2003年某种电器销售额(万元)及其一次指数平滑数列计算列表如表3-2所示。表3-2一次指数平滑值计算表(单位:万元)年份199219931994199519961997199819992000200120022003销售额505247514948514048515159.205150.851.0450.2350.3850.1049.6849.9447.9547.9648.5749.06.505150.5051.2549.1350.0749.5448.7749.8944.9546.4848.7449.87.805150.2051.6447.9350.3949.2848.2650.4542.0946.8250.1650.83本例中选择第一、第二期的历史数据平均值作为一次指数平滑的初始值10S。从表3-2中可以看到,原时间序列变动较大,稍具周期性。若想指数平滑后数列敏感地反映出最新的一些观察值的变动,则应取较大的平滑系数a,如8.0a。若想消除其周期性变动,施加较大程度的修匀,以反映其长期趋势,则可取较小的a,如2.0a。2.检验及预测一次指数平滑法适用于对变化比较平稳的时间序列作短期的预测。第1t时点的预测值1ty等于按递推公式(3-6)计算的第t时点的一次指数平滑值1tS,即:11ttSy(3-7)类似于移动平均法,同一个问题随着平滑系数的不同可以有若干个一次指数平滑预测值。因此,应该在一个合适的评价标准基础上选择一个合理的平滑系数a。其方法是:首先计算与在原则上合理的多个平滑系数a相对应的平滑数列,然后分别计算其均方差MSE(见公式(3-7))或计算其平均绝对误差MAD(见公式(3-8)),以MSE或MAD最小者对应的平滑系数及其预测值为最合理的。NtteNMAD11,而tttttyxSxe11(3-8)公式(3-8)中的tttttyxSxe11反映了各个时点的平滑值11tS与实际值tx之间的误差。根据公式(3-2),计算误差数列te的自相关系数tr,若统计量)1()1(212mrNQmtt则说明误差数列具有随机性,可以认为此时的预测是有效的(可以利用前面的Matlab程序funcoef.m判断)。一次指数平滑法的计算、检验及预测的Matlab程序如下(文件名funesm1.m)。【例3-8】某商品2004年各月的销售量tx如表3-3所示,试预测2005年1月的销售量。利用funesm1.m计算的部分结果如下,其他部分数据如表3-3所示。程序中令423110xS,取10.00L,05.01L,95.03L,7m,05.0,对应的误差值te,也列于表3-3中。表3-3历史数据、一次指数平滑值及误差值月0123456789101112序号t0123456789101112tx423358434445527429426502480385427446)1.0(1tS423423416.5418.8420.9431.5431.3430.8437.9442.1436.4435.5436.5)1.0(te0-6517.526.7106.1-2.5-5.371.242.1-57.1-9.410.5)2.0(1tS423423410414.8420.8442439.4436.7449.8455.8441.6438.7420.2)2.0(te0-652430.2106.2-13-13.465.330.2-70.8-14.67.3)3.0(1tS423423403.5412.7422.4453.8446.4440.3458.8465.2441.1436.9439.8)3.0(te0-6530.532.3104.6-24.8-20.461.721.2-80.2-14.19.1这就是说,取平滑系数0.10是合适的,此时预测值为2005年1月的销售量将是y=436.4976。funesm1.m%一次指数平滑预测,文件名为funesm1.m%输入时间序列想,平滑系数初值L0,步长L1,终值L2%输入判断误差是否为随机误差时需要计算的自相关系数个数m,显著性水平alphafunctionESM1=funesm1(x,L0,L1,L2,m,alpha)s=zeros(round((L2-L0)/L1),length(x));e=zeros(1,length(x));MAD=zeros(1,round((L2-L0)/L1));k=0;fora=L0:L1:L2k=k+1s(k,1)=x(1);fori=2:length(x)s(k,i)=a*x(i)+(1-a)*s(k,i-1);e(i)=x(i)-s(k,i-1);ends(k,:),efuncoef(e,m,alpha);MAD(k)=mean(abs(e));enddisp('ThesmallestMADandthecorrespondingaandforecast')MAD,[MAD,k]=min(MAD);a=L0+L1*(k-1),y=s(k,length(x))end利用上述程序计算得到的一次指数平滑预测值是在多个平滑系数(可自己确定)中计算、比较得到的。3.3.2二次指数平滑法对于呈现出线性趋势的时间序列,在一次指数平滑数列的基础上用同一个平滑系数a再进行一次指数平滑,就是二次指数平滑。构成二次指数平滑数列2tS的递推公式如下:令初始值11020xSS(也可取其他值作为初始值),则有:2112111)1()1(ttttttSaaSSSaaxS(3-9)二次指数平滑的目的是对原时间序列进行两次修匀,使得其不规则变动或周期变动尽量消除掉,让时间序列的长期趋势性更能显示出来。对于平滑系数,同样有一个合理选区的问题。其方法与一次指数平滑法一样,先选取原则上较合理的多个a值分别计算,得到不同的数列1tS和2tS,再根据均方差MSE或MAD最小原则确定较为合理的a值,并得到相应的二次指数平滑值。由于二次指数平滑的目的,二次指数平滑法较适用于具有线性趋势的时间序列,线性趋势预测模型为:TbayttTt(3-10)上式中,T表示自T时点起向前预测的时点数;ta,tb满足:212112)(ttttttSSSSSa,)(121tttSSaab(3-11)预测模型的有效性检验方法与一次指数平滑法一样。即通过自相关系数或2检验方法进行检验。利用二次指数平滑法预测具有线性趋势性的时间序列的基本步骤为:1.根据历史数据(时间序列)x按照公式(3-6)计算一次指数平滑值;2.根据公式(3-9)计算二次指数平滑值;3.由公式(3-11)计算ttba,,并由(3-10)计算自t时点起先前T时期的预测值Tty。据此,编写的Matlab程序如下(文件名funesm2.m)。其中,程序中的s1,s2分别表示一次、二次指数平滑值,a2,b2表示相对于每个平滑系数的ttba,(公式(3-11)),y表示线性趋势的预测值。平滑系数从2L(步长1L),然后,从众多平滑系数计算的结果中挑选最小的MAD所对应的平滑系数并最后得到预测值,自t时点起先前的时期数T由预测值确定并输入。funesm2.m%二次指数平滑,线性趋势预测模型%输入时间序列x,平滑系数初值L0,步长L1,终值L2%输入判断误差是否为随机误差时必须计算的自相关系数个数m,显著性水平alphafunctionESM2=funesm2(x,L0,L1,L2,m,alpha)T=input('T=')s1=zeros(round((L2-L0)/L1),length(x));s2=zeros(round((L2-L0)/L1),length(x));a2=zeros(round((L2-L0)/L1),length(x));b2=zeros(round((L2-L0)/L1),length(x));y=zeros(round((L2-L0)/L1),length(x)+T);e2=zeros(round((L2-L0)/L1),length(x));MAD2=zeros(1,round((L2-L0)/L1));k=0;fora=L0:L1:L2k=k+1;s1(k,1)=x(1);s2(k,1)=x(1);fori=2:length(x)s1(k,i)=a*x(i)+(1-a)*s1(k,i-1);s2(k,i)=a*s1(k,i)+(1-a)*s2(k,i-1);a2(k,i)=2*s1(k,i)-s2(k,i);b2(k,i)=(s1(k,i)-s2(k,

1 / 10
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功