数学建模社区-数学中国

标题: 时间序列模型 (三):指数平滑法 [打印本页]

作者: 浅夏110    时间: 2020-5-30 15:06
标题: 时间序列模型 (三):指数平滑法
一次移动平均实际上认为近 N 期数据对未来值影响相同,都加权;而 N 期以前的数据对未来值没有影响,加权为 0。但是,二次及更高次移动平均数的权数却不是 ,且次数越高,权数的结构越复杂,但永远保持对称的权数,即两端项权数小,! H; B! s' C9 `0 _1 D4 I
中间项权数大,不符合一般系统的动态性。一般说来历史数据对未来值的影响是随时间间隔的增长而递减的。所以,更切合实际的方法应是对各期观测值依时间顺序进行加权平均作为预测值。指数平滑法可满足这一要求,而且具有简单的递推形式。
( v- r6 l( l* W6 y/ w2 |& ?0 M6 T4 ~: {- r3 B0 k4 x
指数平滑法根据平滑次数的不同,又分为一次指数平滑法、二次指数平滑法和三 次指数平滑法等,分别介绍如下。( Z) ?# b: a, @: I8 G6 g

  P) O, P0 a0 d" g) k0 X一次指数平滑法1.预测模型

2.加权系数的选择

3.初始值的确定

例 4  某市 1976~1987 年某种电器销售额如表 4 所示。试预测 1988 年该电器销售 额。


/ o- a! x& z( S& y7 V' Q3 {+ O5 lclc,clear 0 Y' S% n3 x$ x4 |
load dianqi.txt   %原始数据以列向量的方式存放在纯文本文件中 6 a( m! `+ f6 Q
yt=dianqi;
1 F4 d$ I9 X! c7 r2 Y6 ln=length(yt); - i, G3 E) E( h- q
alpha=[0.2 0.5 0.8];
2 v8 c1 M$ p. x* k' u, o% Tm=length(alpha); ' w1 |. \* _- _" U, w( `
yhat(1,1:m)=(yt(1)+yt(2))/2; & b' @# t6 g) c$ b7 y
for i=2:n     
" c- P3 p, L4 V2 L* o0 o2 l    yhat(i,=alpha*yt(i-1)+(1-alpha).*yhat(i-1,; , b. m9 H1 K  \9 c* I
end ! {1 I7 M1 b: J3 q5 Z
yhat 1 t( G1 }: C" t4 o7 H/ y& c3 N2 [
err=sqrt(mean((repmat(yt,1,m)-yhat).^2))
8 o) w9 ?! W3 Q1 m$ T+ Sxlswrite('dianqi.xls',yhat) 8 ]9 ?  V$ w3 D) \) Z" V
yhat1988=alpha*yt(n)+(1-alpha).*yhat(n, 3 ~- C& o3 x6 M+ r$ q/ s
0 a9 ]! w/ p  b' h0 T* U7 W
二次指数平滑法

例 5  仍以例 3 我国 1965~1985 年的发电总量资料为例,试用二次指数平滑法预 测 1986 年和 1987 年的发电总量

0 |, o3 }3 N. g
! A3 Y& \0 B1 h& C3 e
clc,clear % y2 j. s8 g+ a$ f: ]6 @+ p
load fadian.txt   %原始数据以列向量的方式存放在纯文本文件中 / z( `- F3 }2 l  |7 B
yt=fadian;
% m. }& r- S- O9 hn=length(yt);
6 H- p( r! G5 S! D8 ^2 _5 S) talpha=0.3;
, @0 }* d. W+ C" Z. p+ }+ R. E- `st1(1)=yt(1); 2 A: |5 |* i. h1 _) ]
st2(1)=yt(1); 3 x0 d3 {1 c$ G: W  l+ {
for i=2:n     8 ?- O/ u7 P1 @; V5 A9 V0 k
    st1(i)=alpha*yt(i)+(1-alpha)*st1(i-1);    - G2 a/ W, c1 S" l8 G& m) v6 ^; o$ L
    st2(i)=alpha*st1(i)+(1-alpha)*st2(i-1);
6 |# Y# P7 I. F- k7 C4 j" u9 ^( Tend
* w/ @( h( u) @$ F7 G. y" B- Cxlswrite('fadian.xls',[st1',st2'])
  h2 N6 B5 w" C/ L2 V0 fa=2*st1-st2 b=alpha/(1-alpha)*(st1-st2) $ m/ T* ]* k9 ~. l0 P& U. [
yhat=a+b;
. S; z, f5 ^, S0 ^! L  g: sxlswrite('fadian.xls',yhat','Sheet1','C2') % Q1 h& P6 A" ?6 n
str=char(['C',int2str(n+2)]);
' G+ g/ J, t4 q/ e- Yxlswrite('fadian.xls',a(n)+2*b(n),'Sheet1',str)
: \6 H' z. l( @0 `( }
" I) C1 @  L! X) w, r三 次指数平滑法

例 6  某省 1978~1988 年全民所有制单位固定资产投资总额如表 7 所示,试预测 1989 年和 1990 年固定资产投资总额。


2 T5 t  t' h' z- n& Y; p; X5 s

计算的 MATLAB 程序如下:


7 p% ^' W' N6 E  o0 U2 K+ D1 T8 }8 a# pclc,clear
. ^4 ^2 w% k3 @, P2 D2 s  l5 Iload touzi.txt   %原始数据以列向量的方式存放在纯文本文件中
/ W& }7 [5 _* R( wyt=touzi;
& p' x3 E' b! e0 }( q. u" M8 l+ v! En=length(yt); 7 W, U+ m5 c7 l
alpha=0.3; - x# b7 B  z4 _: j: K7 C3 e' Q
st1_0=mean(yt(1:3)); & i2 `; b8 B) x, t% q. u5 W% i
st2_0=st1_0;
* B9 f% Y8 _+ `. Est3_0=st1_0;
2 N; S* w" m3 Z& pst1(1)=alpha*yt(1)+(1-alpha)*st1_0;
, Z+ w- r3 j9 N# sst2(1)=alpha*st1(1)+(1-alpha)*st2_0; 1 ?. R7 a* [. B& u' [  C: ^. h
st3(1)=alpha*st2(1)+(1-alpha)*st3_0; ; F. O9 [* u8 V' J) t
for i=2:n     
4 p! j3 i3 y& c9 _+ z1 t    st1(i)=alpha*yt(i)+(1-alpha)*st1(i-1);     3 A' o, Z* r3 t) H# t
    st2(i)=alpha*st1(i)+(1-alpha)*st2(i-1);     / m) z$ Q, B# r  y. {+ P+ H
    st3(i)=alpha*st2(i)+(1-alpha)*st3(i-1);
! W1 ~: A6 X7 z# W4 J8 S- Z( x, Pend 4 S+ |, \- V% `( \1 v# X0 }
xlswrite('touzi.xls',[st1',st2',st3'])
0 i; x5 l# n% h3 K# _st1=[st1_0,st1];- t3 v1 h2 n- q( c7 l7 L
st2=[st2_0,st2];
$ h! M+ }& T7 qst3=[st3_0,st3];
/ x  f$ B& v7 O$ s9 K, v. Wa=3*st1-3*st2+st3; 8 o, ^/ {  a8 }+ ~6 j: q* M2 t
b=0.5*alpha/(1-alpha)^2*((6-5*alpha)*st1-2*(5-4*alpha)*st2+(4-3*alpha)*st3); c=0.5*alpha^2/(1-alpha)^2*(st1-2*st2+st3);
. c, K$ {0 W. d9 X0 O; L: ~9 qyhat=a+b+c;
6 {: S) w  m' O2 N( f: Uxlswrite('touzi.xls',yhat','Sheet1','D1') : n6 a' f; ~. M6 F) r( L- T
plot(1:n,yt,'*',1:n,yhat(1:n),'O')
+ b1 U  a- x  d" Q; ^& ^' {$ ulegend('实际值','预测值',2)
/ ]$ t) i: L1 |+ z* p  I4 e  ^xishu=[c(n+1),b(n+1),a(n+1)]; 1 A1 ?, M' U- z1 a
yhat1990=polyval(xishu,2)
9 i$ c: b# X0 f/ w1 w- [: ^* l0 y
. k3 [2 G  g9 K- O: [指数平滑预测模型的评价
% Z" ], W4 ?) I! T指数平滑预测模型是以时刻t为起点,综合历史序列的信息,对未来进行预测的。 选择合适的加权系数 α 是提高预测精度的关键环节。根据实践经验, α 的取值范围一 般以 0.1~0.3 为宜。 α 值愈大,加权系数序列衰减速度愈快,所以实际上 α 取值大小 起着控制参加平均的历史数据的个数的作用。 α 值愈大意味着采用的数据愈少。因此, 可以得到选择 α 值的一些基本准则。
; `/ b  K. G, _& x* ~$ P
4 \: d) G% ]9 M+ a  \(1)如果序列的基本趋势比较稳,预测偏差由随机因素造成,则 α 值应取小一些, 以减少修正幅度,使预测模型能包含更多历史数据的信息。: |6 a# [4 J! a" l# c
& M  @, H" j6 |% U1 X- k
(2)如果预测目标的基本趋势已发生系统地变化,则 α 值应取得大一些。这样, 可以偏重新数据的信息对原模型进行大幅度修正,以使预测模型适应预测目标的新变 化。 + a, z% N9 D8 K- g  D2 _; Y4 a" i0 f
/ |* U) h, f# u; H3 w

3 E7 O1 L; J: ?4 X4 P/ e3 @
& p) n4 P" A! y# \1 U/ i
- A) ^) L  n1 M/ j/ S————————————————4 S# |* |3 |1 ^. e7 M5 i# O
版权声明:本文为CSDN博主「wamg潇潇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。) t' S/ D! w7 M6 b5 l+ _
原文链接:https://blog.csdn.net/qq_29831163/article/details/894410851 C9 p( t  w) g4 J3 p2 c
8 b* j5 c  @7 j$ W& B. }0 K
6 S/ \0 f; T0 x. B7 L, n$ u* v' ]





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5