指数平滑_一次指数平滑法预测值如何求

(5) 2024-05-29 09:23

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说指数平滑_一次指数平滑法预测值如何求,希望能够帮助你!!!。

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

如下表为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

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

上一篇

已是最后文章

下一篇

已是最新文章

发表回复