指数平滑

指数平滑法是生产预测中常用的一种方法。也用于中短期经济发展趋势预测,所有预测方法中,指数平滑是用得最多的一种。简单的全期平均法是对时间数列的过去数据一个不漏地全部加以同等利用;移动平均法则不考虑较远期的数据,并在加权移动平均法中给予近期资料更大的权重;而指数平滑法则兼容了全期平均和移动平均所长,不舍弃过去的数据,但是仅给予逐渐减弱的影响程度,即随着数据的远离,赋予逐渐收敛为零的权数。

如下表为2005年北京市家庭汽车数量。对家庭汽车数量进行预测。

时间 家庭汽车数量(万量)
2005 212.4
2006 229.6
2007 258.3
2008 287.6
2009 312.8
2010 350.4
2011 360
2012 374.4
2013 387.29
2014 407.5
2015 437.2

用matlab画出时序图

Matlab程序如下:
clc,clear all
%一次平滑预测%
yx=[212.4
229.6
258.3
287.6
312.8
350.4
360
374.4
387.29
407.5
437.2 ];
plot(2005:2015,yx)
xlabel(‘年份’)
ylabel(‘家庭汽车数量’)
yt=yx;
n=length(yt);
alpha=[0.1 0.3 0.9 ]; %平滑系数
m=length(alpha);
yhat(1,1:m)=(yt(1)+yt(2))/2;
for i=2:n
yhat(i,:)=alpha*yt(i-1)+(1-alpha).*yhat(i-1);
end
yhat
repmat(yt,1,m);
err=sqrt(mean((repmat(yt,1,m)-yhat).^2))
yhat114=alpha*yt(n)+(1-alpha).*yhat(n,:)
运行结果为
预测值
yhat =

221.0000 221.0000 221.0000
220.1400 218.4200 213.2600
221.0860 222.9780 228.6540
224.8074 232.2502 254.5786
231.0867 243.6452 281.3207
239.2580 255.6007 304.6287
250.3722 272.6006 339.2858
261.3350 283.2605 349.0372
272.6415 295.2545 363.0935
284.1063 307.0360 375.8251
296.4457 321.1244 395.1606

误差总和:
err =

94.1492 77.6130 29.8856

预测下一时刻值:
yhat114 =

310.5211 355.9471 432.9961
由结果可以看出一次指数平滑预测误差较大。
我们采取二次平滑预测:
线性二次指数平滑法的公式为:
     (1)
式中: 分别为t期和t–1期的二次指数平滑值;a为平滑系数。在 和 已知的条件下,二次指数平滑法的预测模型为:
     (2)
  
     (3)
T为预测超前期数
预测误差为:

Matlab程序如下:

clc,clear all
%二次平滑预测%
yx=[212.4
229.6
258.3
287.6
312.8
350.4
360
374.4
387.29
407.5
437.2 ];
plot(2005:2015,yx)
xlabel(‘年份’)
ylabel(‘家庭汽车数量’)
yt=yx;
n=length(yt);
alpha=0.9;
st1(1)=yt(1);
st2(2)=yt(1);

for i=2:n
st1(i)=alpha*yt(i)+(1-alpha).*st1(i-1);
st2(i)=alpha*st1(i)+(1-alpha).*st2(i-1);
end
a=2*st1-st2
b=alpha/(1-alpha)*(st1-st2)
yhat=a+b
yhat=yhat’
str=char([‘C’,int2str(n+2)]);
得预测值为:
yhat =

1.0e+03 *

2.3364
0.4558
0.3054
0.3185
0.3390
0.3857
0.3748
0.3886
0.4004
0.4263
0.4648

三次指数平滑法:
若时间序列的变动呈现出二次曲线趋势,则需要用三次指数平滑法。三次指数平滑是在二次指数平滑的基础上再进行一次平滑,其计算公式为:

三次指数平滑法的预测模型为: 

其中: 

Matlab程序如下:

clc,clear all
%三次平滑预测%
yx=[212.4
229.6
258.3
287.6
312.8
350.4
360
374.4
387.29
407.5
437.2 ];

yt=yx;
n=length(yt);
alpha=0.9;
st1_0=mean(yt(1:3));
st2_0=st1_0;
st3_0=st1_0;
st1(1)=alpha*yt(1)+(1-alpha)*st1_0;
st2(1)=alpha*st1(1)+(1-alpha)*st2_0;
st3(1)=alpha*st2(1)+(1-alpha)*st3_0;

for i=2:n
st1(i)=alpha*yt(i)+(1-alpha).*st1(i-1);
st2(i)=alpha*st1(i)+(1-alpha).*st2(i-1);
st3(i)=alpha*st2(i)+(1-alpha).*st3(i-1);
end
st1=[st1_0,st1];
st2=[st2_0,st2];
st3=[st3_0,st3];
a=3*st1-3*st2+st3
b=0.5*alpha/(1-alpha)^2*((6-5*alpha)st1-2(5-4*alpha)*st2+(4-3*alpha)*st3)
c=0.5*alpha/(1-alpha)^2*(st1-2*st2+st3)
yhat=a+b+c;

yhat=yhat’
plot(2005:2015,yx,2005:2016,yhat,’r*’)
legend(‘家庭汽车数量’,’预测值’,2)
xlabel(‘年份’)
ylabel(‘家庭汽车数量’)

运行程序,得预测值为;
yhat =

233.4333
175.7915
269.8082
304.0535
322.0613
336.0302
396.3299
351.8053
385.9117
398.9095
432.7681
475.7011

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值