第二十四章时间序列模型 时间序列是按时间顺序排列的、随时间变化且相互关联的数据序列。分析时间序 列的方法构成数据分析的一个重要领域,即时间序列分析 时间序列根据所研究的依据不同,可有不同的分类 1.按所研究的对象的多少分,有一元时间序列和多元时间序列 2.按时间的连续性可将时间序列分为离散时间序列和连续时间序列两种。 3.按序列的统计特性分,有平稳时间序列和非平稳时间序列。如果一个时间序列 的概率分布与时间t无关,则称该序列为严格的(狭义的)平稳时间序列。如果序列的 、二阶矩存在,而且对任意时刻t满足: (1)均值为常数 2)协方差为时间间隔r的函数 则称该序列为宽平稳时间序列,也叫广义平稳时间序列。我们以后所研究的时间序列主 要是宽平稳时间序列。 4.按时间序列的分布规律来分,有高斯型时间序列和非高斯型时间序列 §1确定性时间序列分析方法概述 时间序列预测技术就是通过对预测目标自身时间序列的处理,来研究其变化趋势 的。一个时间序列往往是以下几类变化形式的叠加或耦合 (1)长期趋势变动。它是指时间序列朝着一定的方向持续上升或下降,或停留在 某一水平上的倾向,它反映了客观事物的主要变化趋势 (2)季节变动。 (3)循环变动。通常是指周期为一年以上,由非季节因素引起的涨落起伏波形相 似的波动。 (4)不规则变动。通常它分为突然变动和随机变动。 通常用T表示长期趋势项,S,表示季节变动趋势项,C表示循环变动趋势项,R 表示随机干扰项。常见的确定性时间序列模型有以下几种类型: (1)加法模型 ,=T+S+C+r (2)乘法模型 y1=T·S…·C1R (3)混合模型 y=T·S+R y1=S1+T1·C1·R1 其中y,是观测目标的观测记录,E(R)=0,E(R2)=σ 如果在预测时间范围以内,无突然变动且随机变动的方差σ2较小,并且有理由认 为过去和现在的演变趋势将继续发展到未来时,可用一些经验方法进行预测 §2移动平均法 移动平均法是根据时间序列资料逐渐推移,依次计算包含一定项数的时序平均数 以反映长期趋势的方法。当时间序列的数值由于受周期变动和不规则变动的影响,起伏 较大,不易显示出发展趋势时,可用移动平均法,消除这些因素的影响,分析、预测序 280
-280- 第二十四章 时间序列模型 时间序列是按时间顺序排列的、随时间变化且相互关联的数据序列。分析时间序 列的方法构成数据分析的一个重要领域,即时间序列分析。 时间序列根据所研究的依据不同,可有不同的分类。 1.按所研究的对象的多少分,有一元时间序列和多元时间序列。 2.按时间的连续性可将时间序列分为离散时间序列和连续时间序列两种。 3.按序列的统计特性分,有平稳时间序列和非平稳时间序列。如果一个时间序列 的概率分布与时间t 无关,则称该序列为严格的(狭义的)平稳时间序列。如果序列的 一、二阶矩存在,而且对任意时刻t 满足: (1)均值为常数 (2)协方差为时间间隔τ 的函数。 则称该序列为宽平稳时间序列,也叫广义平稳时间序列。我们以后所研究的时间序列主 要是宽平稳时间序列。 4.按时间序列的分布规律来分,有高斯型时间序列和非高斯型时间序列。 §1 确定性时间序列分析方法概述 时间序列预测技术就是通过对预测目标自身时间序列的处理,来研究其变化趋势 的。一个时间序列往往是以下几类变化形式的叠加或耦合。 (1)长期趋势变动。它是指时间序列朝着一定的方向持续上升或下降,或停留在 某一水平上的倾向,它反映了客观事物的主要变化趋势。 (2)季节变动。 (3)循环变动。通常是指周期为一年以上,由非季节因素引起的涨落起伏波形相 似的波动。 (4)不规则变动。通常它分为突然变动和随机变动。 通常用Tt 表示长期趋势项,St 表示季节变动趋势项,Ct 表示循环变动趋势项,Rt 表示随机干扰项。常见的确定性时间序列模型有以下几种类型: (1)加法模型 t Tt St Ct Rt y = + + + (2)乘法模型 t Tt St Ct Rt y = ⋅ ⋅ ⋅ (3)混合模型 t Tt St Rt y = ⋅ + t St Tt Ct Rt y = + ⋅ ⋅ 其中 t y 是观测目标的观测记录, E(Rt ) = 0 , 2 2 E(Rt ) = σ 。 如果在预测时间范围以内,无突然变动且随机变动的方差 2 σ 较小,并且有理由认 为过去和现在的演变趋势将继续发展到未来时,可用一些经验方法进行预测。 §2 移动平均法 移动平均法是根据时间序列资料逐渐推移,依次计算包含一定项数的时序平均数, 以反映长期趋势的方法。当时间序列的数值由于受周期变动和不规则变动的影响,起伏 较大,不易显示出发展趋势时,可用移动平均法,消除这些因素的影响,分析、预测序
列的长期趋势 移动平均法有简单移动平均法,加杈移动平均法,趋势移动平均法等 2.1简单移动平均法 设观测序列为y1,…,yr,取移动平均的项数N<T。一次简单移动平均值计算公 式为: M y t-N+1 (y21+…+yN)+(y )=M+(y2-y-) 当预测目标的基本趋势是在某一水平上下波动时,可用一次简单移动平均方法建 立预测模型: jm=M=(,+…+jN),【=N,N+ 其预测标准误差为: (,-y,)2 S= T-N 最近N期序列值的平均值作为未来各期的预测结果。一般N取值范围: 5≤N≤200。当历史序列的基本趋势变化不大且序列中随机变动成分较多时,N的 取值应较大一些。否则N的取值应小一些。在有确定的季节变动周期的资料中,移动 平均的项数应取周期长度。选择最佳N值的一个有效方法是,比较若干模型的预测误 差。预测标准误差最小者为好 例1某企业1月~11月份的销售收入时间序列如表1示。试用一次简单滑动平 均法预测第12月份的销售收入 表1企业销售收入 月份t 销售收入y|53385 06.9 649.8 705.1 月份t 9 10 销售收入y,81648927%63910151107 解:分别取N=4,N=5的预测公式 =yy1y=2=3,t=45…1 y2+y-3+y,t=5,…1 当N=4时,预测值=9936,预测的标准误差为 ∑(P-y) 150.5 l1-4 当N=5时,预测值12=1824,预测的标准误差为
-281- 列的长期趋势。 移动平均法有简单移动平均法,加权移动平均法,趋势移动平均法等。 2.1 简单移动平均法 设观测序列为 T y , , y 1 L ,取移动平均的项数 N < T 。一次简单移动平均值计算公 式为: ( ) 1 1 1 (1) t = t + t− + + t−N+ y y y N M L ( ) 1 ( ) 1 ( ) 1 (1) t 1 t N t t N t 1 t t N y y N y y M N y y N = − +L+ − + − − = − + − − (1) 当预测目标的基本趋势是在某一水平上下波动时,可用一次简单移动平均方法建 立预测模型: ( ˆ ˆ ) 1 ˆ 1 (1) t+1 = t = t + + t−N+ y y N y M L ,t = N, N +1,L, (2) 其预测标准误差为: T N y y S T t N t t − − = ∑= +1 2 ( ˆ ) , (3) 最近 N 期序列值的平均值作为未来各期的预测结果。一般 N 取值范围: 5 ≤ N ≤ 200 。当历史序列的基本趋势变化不大且序列中随机变动成分较多时, N 的 取值应较大一些。否则 N 的取值应小一些。在有确定的季节变动周期的资料中,移动 平均的项数应取周期长度。选择最佳 N 值的一个有效方法是,比较若干模型的预测误 差。预测标准误差最小者为好。 例 1 某企业 1 月~11 月份的销售收入时间序列如表 1 示。试用一次简单滑动平 均法预测第 12 月份的销售收入。 表 1 企业销售收入 月份t 1 2 3 4 5 6 销售收入 t y 533.8 574.6 606.9 649.8 705.1 772.0 月份t 7 8 9 10 11 销售收入 t y 816.4 892.7 963.9 1015.1 1102.7 解: 分别取 N = 4, N = 5的预测公式 4 ˆ(1) 1 2 3 1 − − − + + + + = t t t t t y y y y y ,t = 4,5,L,11 5 ˆ(2) 1 2 3 4 1 − − − − + + + + + = t t t t t t y y y y y y ,t = 5,L,11 当 N = 4 时,预测值 ˆ 993.6 (1) y12 = ,预测的标准误差为 150.5 11 4 ( ˆ ) 11 5 (1) 2 1 = − − = ∑t= t t y y S 当 N = 5时,预测值 ˆ 182.4 (2) y12 = ,预测的标准误差为
S =958.2 11-5 计算结果表明,N=4时,预测的标准误差较小,所以选取N=4。预测第12月份的 销售收入为993.6。 计算的 Matlab程序如下 cIc. clear y=533.857466069649.8705177208164892796391015.1 11027] m=length(y) n=[4,5;,%an为移动平均的项数 for F=1: length(n) %由于n的取值不同,yhat的长度不一致,下面使用了细胞数组 for j=l m-n(i+I yhat(10=sum(y(: j+n(i-D)/n(i) y12(i)=yhat(1(end) s(i=sqrt( mean((y(n(i)+1 m)-yhat(1(1: end-1)). 2); d 简单移动平均法只适合做近期预测,而且是预测目标的发展趋势变化不大的情况 如果目标的发展趋势存在其它的变化,采用简单移动平均法就会产生较大的预测偏差和 滞后。 22加权移动平均法 在简单移动平均公式中,每期数据在求平均时的作用是等同的。但是,每期数据 所包含的信息量不一样,近期数据包含着更多关于未来情况的信心。因此,把各期数据 等同看待是不尽合理的,应考虑各期数据的重要性,对近期数据给予较大的权重,这就 是加权移动平均法的基本思想 设时间序列为y,y2…,y1…;加权移动平均公式为 M=当"y+ny2t+yN,t≥N (4) v1+,+…+ 式中Mm为t期加权移动平均数;w1为y的权数,它体现了相应的y在加权平均数 中的重要性。 利用加权移动平均数来做预测,其预测公式为 即以第t期加权移动平均数作为第t+1期的预测值。 例2我国1979~1988年原煤产量如表2所示,试用加权移动平均法预测1989年 的产量。 我国原煤产量统计数据及加权移动平均预测值表 197919801911982198319841985198619871988 原煤产量y 年加权移动平均预测值 6235643676831774383818178691790733
-282- 958.2 11 5 ( ˆ ) 11 6 (2) 2 2 = − − = ∑t= t t y y S 计算结果表明, N = 4 时,预测的标准误差较小,所以选取 N = 4 。预测第 12 月份的 销售收入为 993.6。 计算的 Matlab 程序如下: clc,clear y=[533.8 574.6 606.9 649.8 705.1 772.0 816.4 892.7 963.9 1015.1 1102.7]; m=length(y); n=[4,5]; %n 为移动平均的项数 for i=1:length(n) %由于 n 的取值不同,yhat 的长度不一致,下面使用了细胞数组 for j=1:m-n(i)+1 yhat{i}(j)=sum(y(j:j+n(i)-1))/n(i); end y12(i)=yhat{i}(end); s(i)=sqrt(mean((y(n(i)+1:m)-yhat{i}(1:end-1)).^2)); end y12,s 简单移动平均法只适合做近期预测,而且是预测目标的发展趋势变化不大的情况。 如果目标的发展趋势存在其它的变化,采用简单移动平均法就会产生较大的预测偏差和 滞后。 2.2 加权移动平均法 在简单移动平均公式中,每期数据在求平均时的作用是等同的。但是,每期数据 所包含的信息量不一样,近期数据包含着更多关于未来情况的信心。因此,把各期数据 等同看待是不尽合理的,应考虑各期数据的重要性,对近期数据给予较大的权重,这就 是加权移动平均法的基本思想。 设时间序列为 y1, y2 ,L, yt ,L;加权移动平均公式为 N t N t N tw w w w w y w y w y M + + + + + + = − + L L 1 2 1 2 2 1 ,t ≥ N (4) 式中 Mtw 为t 期加权移动平均数;wi 为 t−i+1 y 的权数,它体现了相应的 t y 在加权平均数 中的重要性。 利用加权移动平均数来做预测,其预测公式为 t Mtw yˆ +1 = (5) 即以第t 期加权移动平均数作为第t +1期的预测值。 例 2 我国 1979~1988 年原煤产量如表 2 所示,试用加权移动平均法预测 1989 年 的产量。 表 2 我国原煤产量统计数据及加权移动平均预测值表 年份 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 原煤产量 t y 6.35 6.20 6.22 6.66 7.15 7.89 8.72 8.94 9.28 9.8 三年加权移动平均预测值 6.235 6.4367 6.8317 7.4383 8.1817 8.6917 9.0733
相对误差 (%)。63898134114784863474 解取v1=3,w2=2,w3=1,按预测公式 +2y1+y 计算三年加权移动平均预测值,其结果列于表2中。1989年我国原煤产量的预测 值为(亿吨) 3×98+2×9.28+894 这个预测值偏低,可以修正。其方法是:先计算各年预测值与实际值的相对误差,例如 1982年为 6.66-6.235 6.38% 6.66 将相对误差列于表2中,再计算总的平均相对误差。 12 52.89 ×100%=(1 ∑ s84)×100%=95% 由于总预测值的平均值比实际值低9.5%,所以可将1989年的预测值修正为 948 104788 1-9.5% 计算的 MATLAB程序如下: 356.2 6.226.667.157.898.728.949.2 W=[1/6;2/6;3/6]; m=length(y)in=3 for i=1: m-n+1 t(i)=y(i:i+n-1) err=abs(y(n+1: m)-yhat(1: end-1))./y(n+1: m) T err=l-sum(yhat(1: end-1))/sum(y(n+1: m)) y1989=yhat(end)/(1-T err) 在加权移动平均法中,w的选择,同样具有一定的经验性。一般的原则是:近期 数据的权数大,远期数据的权数小。至于大到什么程度和小到什么程度,则需要按照预 测者对序列的了解和分析来确定。 2.3趋势移动平均法 简单移动平均法和加权移动平均法,在时间序列没有明显的趋势变动时,能够准确 反映实际情况。但当时间序列出现直线增加或减少的变动趋势时,用简单移动平均法和 加权移动平均法来预测就会出现滞后偏差。因此,需要进行修正,修正的方法是作二次 移动平均,利用移动平均滞后偏差的规律来建立直线趋势的预测模型。这就是趋势移动 平均法。 次移动的平均数为 283
-283- 相对误差(%) 6.38 9.98 13.41 14.7 8.48 6.34 7.41 解 取 w1 = 3,w2 = 2,w3 = 1,按预测公式 3 2 1 3 2 ˆ 1 2 1 + + + + = − − + t t t t y y y y 计算三年加权移动平均预测值,其结果列于表 2 中。1989 年我国原煤产量的预测 值为(亿吨) 9.48 6 3 9.8 2 9.28 8.94 ˆ1989 = × + × + y = 这个预测值偏低,可以修正。其方法是:先计算各年预测值与实际值的相对误差,例如 1982 年为 6.38% 6.66 6.66 6.235 = − 将相对误差列于表 2 中,再计算总的平均相对误差。 ) 100% 9.5% 58.44 52.89 100% (1 ˆ 1 × = − × = ⎟ ⎟ ⎠ ⎞ ⎜ ⎜ ⎝ ⎛ − ∑ ∑ t t y y 由于总预测值的平均值比实际值低9.5%,所以可将 1989 年的预测值修正为 10.4788 1 9.5% 9.48 = − 计算的 MATLAB 程序如下: y=[6.35 6.20 6.22 6.66 7.15 7.89 8.72 8.94 9.28 9.8]; w=[1/6;2/6;3/6]; m=length(y);n=3; for i=1:m-n+1 yhat(i)=y(i:i+n-1)*w; end yhat err=abs(y(n+1:m)-yhat(1:end-1))./y(n+1:m) T_err=1-sum(yhat(1:end-1))/sum(y(n+1:m)) y1989=yhat(end)/(1-T_err) 在加权移动平均法中, wt 的选择,同样具有一定的经验性。一般的原则是:近期 数据的权数大,远期数据的权数小。至于大到什么程度和小到什么程度,则需要按照预 测者对序列的了解和分析来确定。 2.3 趋势移动平均法 简单移动平均法和加权移动平均法,在时间序列没有明显的趋势变动时,能够准确 反映实际情况。但当时间序列出现直线增加或减少的变动趋势时,用简单移动平均法和 加权移动平均法来预测就会出现滞后偏差。因此,需要进行修正,修正的方法是作二次 移动平均,利用移动平均滞后偏差的规律来建立直线趋势的预测模型。这就是趋势移动 平均法。 一次移动的平均数为
M0=(y2+y21+…+y2N) 在一次移动平均的基础上再进行一次移动平均就是二次移动平均,其计算公式为 (6) 下面讨论如何利用移动平均的滞后偏差建立直线趋势预测模型。 设时间序列{υ}从某时期开始具有直线趋势,且认为未来时期也按此直线趋势变 化,则可设此直线趋势预测模型为 y+x=a1+bT,T=1,2 (7) 其中t为当前时期数;T为由t至预测期的时期数;a1为截距;b为斜率。两者又称为 平滑系数。 现在,我们根据移动平均值来确定平滑系数。由模型(7)可知 y-1=y,-b y-(N-1)b 所以 M)=y+y=+…+y-My+(y-b)+…+[y-(N-1)b N Ny2-[+2+…+(N-1)b 因此 N-1 2 由式(7),类似式(8)的推导,可得 N 所以 y,-y=M-M=b (10) 类似式(8)的推导,可得 于是,由式(8)和式(11)可得平滑系数的计算公式为 a,=2M( 2 (12) -1(M-M2) 例3我国1965~1985年的发电总量如表3所示,试预测1986年和1987年的发 电总量
-284- ( ) 1 1 1 (1) t = t + t− + + t−N+ y y y N M L 在一次移动平均的基础上再进行一次移动平均就是二次移动平均,其计算公式为 ( ) 1 ( ) 1 (2) (1) (1) 1 (1) 1 (2) (1) t t t N t Mt Mt N N M M M N M = +L+ − + = − + − − (6) 下面讨论如何利用移动平均的滞后偏差建立直线趋势预测模型。 设时间序列{ }t y 从某时期开始具有直线趋势,且认为未来时期也按此直线趋势变 化,则可设此直线趋势预测模型为 yˆt+T = at + bt T ,T = 1,2,L (7) 其中t 为当前时期数;T 为由t 至预测期的时期数;at 为截距;bt 为斜率。两者又称为 平滑系数。 现在,我们根据移动平均值来确定平滑系数。由模型(7)可知 t t a = y t t bt y −1 = y − t t bt y −2 = y − 2 … t N t N bt y y ( 1) − +1 = − − 所以 t t t t t t t N t t t t t t b N y N Ny N b N y y b y N b N y y y M 2 [1 2 ( 1)] 1 ( ) [ ( 1) ] (1) 1 1 − = − − + + + − = + − + + − − = + + + = − − + L L L 因此 t t bt N y M 2 (1) −1 − = (8) 由式(7),类似式(8)的推导,可得 t t bt N y M 2 (1) 1 1 1 − − − − = (9) 所以 t t Mt Mt bt y − y − = − − = (1) 1 (1) 1 (10) 类似式(8)的推导,可得 t t bt N M M 2 (1) (2) −1 − = (11) 于是,由式(8)和式(11)可得平滑系数的计算公式为 ⎪ ⎩ ⎪ ⎨ ⎧ − − = = − ( ) 1 2 2 (1) (2) (1) (2) t t t t t t M M N b a M M (12) 例 3 我国 1965~1985 年的发电总量如表 3 所示,试预测 1986 年和 1987 年的发 电总量
表3我国发电量及一、二次移动平均值计算表 发电总量y 次移动平均,N=6二次移动平均,N=6 1970 1159 8483 1384 1688 1958 1563.5 l181.1 24.5 4606 1981 5678 2143.4 28327 23307 1985 4107 3461.2 2941.2 解由散点图1可以看出,发电总量基本呈直线上升趋势,可用趋势移动平均法 来预测 图1原始数据散点图 取N=6,分别计算一次和二次移动平均值并列于表3中。 M2=34612,M23=291.2 再由公式(12),得 2M2-M2)=3981.1 b2 )=208 于是,得t=21时直线趋势预测模型为 j21r=3981+2087 预测1986年和1987年的发电总量为 y9=y2=y2+1=41921 y9y3=y23=y21+2=43971 计算的 MATLAB程序如下:
-285- 表 3 我国发电量及一、二次移动平均值计算表 年份 t 发电总量 yt 一次移动平均,N=6 二次移动平均,N=6 1965 1 676 1966 2 825 1967 3 774 1968 4 716 1969 5 940 1970 6 1159 848.3 1971 7 1384 966.3 1972 8 1524 1082.8 1973 9 1668 1231.8 1974 10 1688 1393.8 1975 11 1958 1563.5 1181.1 1976 12 2031 1708.8 1324.5 1977 13 2234 1850.5 1471.9 1978 14 2566 2024.2 1628.8 1979 15 2820 2216.2 1792.8 1980 16 3006 2435.8 1966.5 1981 17 3093 2625 2143.4 1982 18 3277 2832.7 2330.7 1983 19 3514 3046 2530 1984 20 3770 3246.7 2733.7 1985 21 4107 3461.2 2941.2 解 由散点图 1 可以看出,发电总量基本呈直线上升趋势,可用趋势移动平均法 来预测。 0 5 10 15 20 25 500 1000 1500 2000 2500 3000 3500 4000 4500 图 1 原始数据散点图 取 N = 6 ,分别计算一次和二次移动平均值并列于表 3 中。 3461.2 (1) M21 = , 2941.2 (2) M21 = 再由公式(12),得 2 3981.1 (2) 21 (1) a21 = M21 − M = ( ) 208 6 1 2 (2) 21 (1) 21 21 − = − b = M M 于是,得t = 21时直线趋势预测模型为 yˆ21+T = 3981.1+ 208T 预测 1986 年和 1987 年的发电总量为 yˆ1986 = yˆ22 = yˆ21+1 = 4192.1 yˆ1987 = yˆ23 = yˆ21+2 = 4397.1 计算的 MATLAB 程序如下:
load y. txt%把原始数据保存在纯文本文件ytxt中 n=6,%n为移动平均的项数 yhatI(=sum(y(ii+n-1))/n th(yhat 1 ); for i=l: m2-n+I end yhat2(-sum(yhat l(r i+n-1)/n, hat plot(1:21y,*) 121=2 yhatl(end)-yhat2(end) y1986=a21+b2 yl987=a21+2*b21 趋势移动平均法对于同时存在直线趋势与周期波动的序列,是一种既能反映趋势变 化,又可以有效地分离出来周期变动的方法。 §3指数平滑法 次移动平均实际上认为最近N期数据对未来值影响相同,都加权亠;而N期 以前的数据对未来值没有影响,加权为0。但是,二次及更高次移动平均数的权数却不 是一,且次数越高,权数的结构越复杂,但永远保持对称的权数,即两端项权数小, 中间项权数大,不符合一般系统的动态性。一般说来历史数据对未来值的影响是随时间 间隔的增长而递减的。所以,更切合实际的方法应是对各期观测值依时间顺序进行加权 平均作为预测值。指数平滑法可满足这一要求,而且具有简单的递推形式。 指数平滑法根据平滑次数的不同,又分为一次指数平滑法、二次指数平滑法和三 次指数平滑法等,分别介绍如下 3.1一次指数平滑法 1.预测模型 设时间序列为y1,y2…,y…,a为加权系数,0<a<1,一次指数平滑公式为: S;=a;+(1-a)S=S(+a(y-S() 式(13)是由移动平均公式改进而来的。由式(1)知,移动平均数的递推公式为 M=M(+y-y=△ N 以M作为y的最佳估计,则有 M=MB+-2=2+(1-12 N
-286- clc,clear load y.txt %把原始数据保存在纯文本文件 y.txt 中 m1=length(y); n=6; %n 为移动平均的项数 for i=1:m1-n+1 yhat1(i)=sum(y(i:i+n-1))/n; end yhat1 m2=length(yhat1); for i=1:m2-n+1 yhat2(i)=sum(yhat1(i:i+n-1))/n; end yhat2 plot(1:21,y,'*') a21=2*yhat1(end)-yhat2(end) b21=2*(yhat1(end)-yhat2(end))/(n-1) y1986=a21+b21 y1987=a21+2*b21 趋势移动平均法对于同时存在直线趋势与周期波动的序列,是一种既能反映趋势变 化,又可以有效地分离出来周期变动的方法。 §3 指数平滑法 一次移动平均实际上认为最近 N 期数据对未来值影响相同,都加权 N 1 ;而 N 期 以前的数据对未来值没有影响,加权为 0。但是,二次及更高次移动平均数的权数却不 是 N 1 ,且次数越高,权数的结构越复杂,但永远保持对称的权数,即两端项权数小, 中间项权数大,不符合一般系统的动态性。一般说来历史数据对未来值的影响是随时间 间隔的增长而递减的。所以,更切合实际的方法应是对各期观测值依时间顺序进行加权 平均作为预测值。指数平滑法可满足这一要求,而且具有简单的递推形式。 指数平滑法根据平滑次数的不同,又分为一次指数平滑法、二次指数平滑法和三 次指数平滑法等,分别介绍如下。 3.1 一次指数平滑法 1.预测模型 设时间序列为 y1, y2 ,L, yt ,L,α 为加权系数,0 < α < 1,一次指数平滑公式为: (1 ) ( ) (1) 1 (1) 1 (1) 1 (1) t = t + − t− = t− + t − St− S αy α S S α y (13) 式(13)是由移动平均公式改进而来的。由式(1)知,移动平均数的递推公式为 N y y M M t t N t t − − − = + (1) 1 (1) 以 (1) Mt−1作为 t N y − 的最佳估计,则有 (1) 1 (1) (1) 1 1 (1) 1 1 − − − ⎟ ⎠ ⎞ ⎜ ⎝ ⎛ = + − − = + t t t t t t M N N y N y M M M
今= 以S代替M,),即得式(13) 为进一步理解指数平滑的实质,把式(13)依次展开,有 =a;+(1-aa-+(1-a)S1=…=a∑(1-a)y (14) (14)式表明S是全部历史数据的加权平均,加权系数分别为 a,a(1-a),a(1-a) 显然有 a(1-a) 由于加权系数符合指数规律,又具有平滑数据的功能,故称为指数平滑。 以这种平滑值进行预测,就是一次指数平滑法。预测模型为 y (15) 也就是以第t期指数平滑值作为t+1期预测值。 2.加权系数的选择 在进行指数平滑时,加权系数的选择是很重要的。由式(15)可以看出,a的大 小规定了在新预测值中新数据和原预测值所占的比重。a值越大,新数据所占的比重 就愈大,原预测值所占的比重就愈小,反之亦然。若把式(15)改写为 =2+a(y (16) 则从上式可看出,新预测值是根据预测误差对原预测值进行修正而得到的。a的大小 则体现了修正的幅度,a值愈大,修正幅度愈大;a值愈小,修正幅度也愈小。 若选取a=0,则1=,即下期预测值就等于本期预测值,在预测过程中不考 虑任何新信息;若选取α=1,则=y,即下期预测值就等于本期观测值,完全不 相信过去的信息。这两种极端情况很难做出正确的预测。因此,a值应根据时间序列 的具体性质在0~1之间选择。具体如何选择一般可遵循下列原则:①如果时间序列波 动不大,比较平稳,则α应取小一点,如(0.1~0.5)。以减少修正幅度,使预测模型 能包含较长时间序列的信息;②如果时间序列具有迅速且明显的变动倾向,则α应取 大一点,如(0.6~0.8)。使预测模型灵敏度高一些,以便迅速跟上数据的变化, 在实用上,类似移动平均法,多取几个a值进行试算,看哪个预测误差小,就采 用哪个 3.初始值的确定 用一次指数平滑法进行预测,除了选择合适的a外,还要确定初始值S0。初始值 是由预测者估计或指定的。当时间序列的数据较多,比如在20个以上时,初始值对以 后的预测值影响很少,可选用第一期数据为初始值。如果时间序列的数据较少,在20 个以下时,初始值对以后的预测值影响很大,这时,就必须认真研究如何正确确定初始 值。一般以最初几期实际值的平均值作为初始值 例4某市1976~1987年某种电器销售额如表4所示。试预测1988年该电器销售 额 287
-287- 令 N 1 α = ,以 St 代替 (1) Mt ,即得式(13) (1) 1 (1) (1 ) t = t + − St− S αy α 为进一步理解指数平滑的实质,把式(13)依次展开,有 ∑ ∞ = = + − − + − − = = − − 0 (1) 1 2 (1) (1 )[ (1 ) ] (1 ) j t j j t t t t S αy α αy α S L α α y (14) ( 14 )式表明 (1) St 是全部历史数据的加权平均,加权系数分别为 α,α(1−α),α(1−α) 2 ,L;显然有 ∑ ∞ = = − − − = 0 1 1 (1 ) (1 ) j j α α α α 由于加权系数符合指数规律,又具有平滑数据的功能,故称为指数平滑。 以这种平滑值进行预测,就是一次指数平滑法。预测模型为 (1) 1 ˆt St y + = 即 t t t yˆ y (1 ) yˆ +1 = α + −α (15) 也就是以第t 期指数平滑值作为t +1期预测值。 2.加权系数的选择 在进行指数平滑时,加权系数的选择是很重要的。由式(15)可以看出,α 的大 小规定了在新预测值中新数据和原预测值所占的比重。α 值越大,新数据所占的比重 就愈大,原预测值所占的比重就愈小,反之亦然。若把式(15)改写为 ˆ ˆ ( ˆ ) t 1 t t t y = y + y − y + α (16) 则从上式可看出,新预测值是根据预测误差对原预测值进行修正而得到的。α 的大小 则体现了修正的幅度,α 值愈大,修正幅度愈大;α 值愈小,修正幅度也愈小。 若选取α = 0 ,则 t t yˆ yˆ +1 = ,即下期预测值就等于本期预测值,在预测过程中不考 虑任何新信息;若选取α = 1,则 t t y = y +1 ˆ ,即下期预测值就等于本期观测值,完全不 相信过去的信息。这两种极端情况很难做出正确的预测。因此,α 值应根据时间序列 的具体性质在 0~1 之间选择。具体如何选择一般可遵循下列原则:①如果时间序列波 动不大,比较平稳,则α 应取小一点,如(0.1~0.5)。以减少修正幅度,使预测模型 能包含较长时间序列的信息;②如果时间序列具有迅速且明显的变动倾向,则α 应取 大一点,如(0.6~0.8)。使预测模型灵敏度高一些,以便迅速跟上数据的变化。 在实用上,类似移动平均法,多取几个α 值进行试算,看哪个预测误差小,就采 用哪个。 3.初始值的确定 用一次指数平滑法进行预测,除了选择合适的α 外,还要确定初始值 (1) 0 s 。初始值 是由预测者估计或指定的。当时间序列的数据较多,比如在 20 个以上时,初始值对以 后的预测值影响很少,可选用第一期数据为初始值。如果时间序列的数据较少,在 20 个以下时,初始值对以后的预测值影响很大,这时,就必须认真研究如何正确确定初始 值。一般以最初几期实际值的平均值作为初始值。 例 4 某市 1976~1987 年某种电器销售额如表 4 所示。试预测 1988 年该电器销售 额
解采用指数平滑法,并分别取a=0.2,0.5和08进行计算,初始值 Vi t y2 =S0=51 按预测模型 y1=ay1+(1-a)y 计算各期预测值,列于表4中 表4某种电器销售额及指数平滑预测值计算表(单位:万元) 年份 实际销售额y 预测值,预测值 预测值y 1980 0271810821 0100 49.13 50.39 1981 49.28 1982 4969 48.77 48.26 1983 5678901 49 49.88 5045 46.47 1986 1987 50.12 从表4可以看出,α=0.2,0.5和08时,预测值是很不相同的。究竟α取何值为好, 可通过计算它们的预测标准误差S,选取使S较小的那个a值。预测的标准误差见表5。 表5预测的标准误差 计算结果表明:a=0.2时,S较小,故选取a=0.2,预测1988年该电器销售额 为y9s8=51.1754。 计算的 MATLAB程序如下 clc. clear load dianqi. txt%原始数据以列向量的方式存放在纯文本文件中 tianqi; n=length(yt); alpha=[0.20.50. 8]; m=length(alpha) yhat(1,1m)=(yt(1)yt(2)2 for i=2: n yhat(, )=alphayt(i-1)+(l-alpha).yhat(i-1, ) r=sqrt( mean((repmat(yt, 1,m)-yhat). 2) xlswrite('dianqixls', yhat) yhat1988=alpha*yt(n)+(l-alpha). *yhat(n
-288- 解 采用指数平滑法,并分别取α = 0.2,0.5和0.8进行计算,初始值 (1) 1 2 0 51 2 y y S + = = 即 (1) 1 0 y S ˆ = = 51 按预测模型 1 ˆ ˆ (1 ) tt t y + =α y y + −α 计算各期预测值,列于表 4 中。 表 4 某种电器销售额及指数平滑预测值计算表 (单位:万元) 年份 t 实际销售额 t y 预测值 ˆ t y α = 0.2 预测值 ˆ t y α = 0.5 预测值 ˆ t y α = 0.8 1976 1 50 51 51 51 1977 2 52 50.8 50.5 50.2 1978 3 47 51.04 51.25 51.64 1979 4 51 50.23 49.13 47.93 1980 5 49 50.39 50.06 50.39 1981 6 48 50.11 49.53 49.28 1982 7 51 49.69 48.77 48.26 1983 8 40 49.95 49.88 50.45 1984 9 48 47.96 44.94 42.09 1985 10 52 47.97 46.47 46.82 1986 11 51 48.77 49.24 50.96 1987 12 59 49.22 50.12 50.99 从表 4 可以看出,α = 0.2,0.5和0.8时,预测值是很不相同的。究竟α 取何值为好, 可通过计算它们的预测标准误差 S ,选取使 S 较小的那个α 值。预测的标准误差见表 5。 表 5 预测的标准误差 α 0.2 0.5 0.8 S 4.5029 4.5908 4.8426 计算结果表明:α = 0.2 时,S 较小,故选取α = 0.2 ,预测 1988 年该电器销售额 为 yˆ1988 = 51.1754。 计算的 MATLAB 程序如下: clc,clear load dianqi.txt %原始数据以列向量的方式存放在纯文本文件中 yt=dianqi; n=length(yt); alpha=[0.2 0.5 0.8];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 err=sqrt(mean((repmat(yt,1,m)-yhat).^2)) xlswrite('dianqi.xls',yhat) yhat1988=alpha*yt(n)+(1-alpha).*yhat(n,:)
3.2二次指数平滑法 次指数平滑法虽然克服了移动平均法的缺点。但当时间序列的变动出现直线趋 势时,用一次指数平滑法进行预测,仍存在明显的滞后偏差。因此,也必须加以修正 修正的方法与趋势移动平均法相同,即再作二次指数平滑,利用滞后偏差的规律建立直 线趋势模型。这就是二次指数平滑法。其计算公式为 (17) 式中S为一次指数的平滑值:S()为二次指数的平滑值。当时间序列{y},从某时 期开始具有直线趋势时,类似趋势移动平均法,可用直线趋势模型 yr=a1+bT,T=1,2, (18) a.=2S-S2) (19) b=,-(S"-S) 进行预测 例5仍以例3我国1965~1985年的发电总量资料为例,试用二次指数平滑法预 测1986年和1987年的发电总量 表6我国发电总量及一、二次指数平滑值计算表 (单位:亿度) 发电总量y 次平滑值 二次平滑值y+1的估计值 730.5 7117 784.0 7933 7574 9030 10699 1974 l688 14399 1183.6 05.0 1958 15954 1806.1 1980 2515.5 2082.5 28886 1981 3093 2688.8 2264.4 327 解取a=0.3,初始值S和S(2都取序列的首项数值,即S)=S0=676 计算S 列于表6。得到 S2)=3523,1,S2)=30326 由公式(19),可得t=21时
-289- 3.2 二次指数平滑法 一次指数平滑法虽然克服了移动平均法的缺点。但当时间序列的变动出现直线趋 势时,用一次指数平滑法进行预测,仍存在明显的滞后偏差。因此,也必须加以修正。 修正的方法与趋势移动平均法相同,即再作二次指数平滑,利用滞后偏差的规律建立直 线趋势模型。这就是二次指数平滑法。其计算公式为 (1) 1 (1) (1 ) t = t + − St− S αy α (2) 1 (2) (1) (1 ) St = αSt + −α St− (17) 式中 (1) St 为一次指数的平滑值; (2) St 为二次指数的平滑值。当时间序列{ }t y ,从某时 期开始具有直线趋势时,类似趋势移动平均法,可用直线趋势模型 yˆt+T = at + bt T ,T = 1,2,L (18) ⎪ ⎩ ⎪ ⎨ ⎧ − − = = − ( ) 1 2 (1) (2) (1) (2) t t t t t t b S S a S S α α (19) 进行预测。 例 5 仍以例 3 我国 1965~1985 年的发电总量资料为例,试用二次指数平滑法预 测 1986 年和 1987 年的发电总量。 表 6 我国发电总量及一、二次指数平滑值计算表 (单位:亿度) 年份 t 发电总量 yt 一次平滑值 二次平滑值 yt+1的估计值 1965 1 676 676 676 1966 2 825 720.7 689.4 676 1967 3 774 736.7 703.6 765.4 1968 4 716 730.5 711.7 784.0 1969 5 940 793.3 736.2 757.4 1970 6 1159 903.0 786.2 875.0 1971 7 1384 1047.3 864.6 1069.9 1972 8 1524 1190.3 962.3 1308.4 1973 9 1668 1333.6 1073.7 1516.1 1974 10 1688 1439.9 1183.6 1705.0 1975 11 1958 1595.4 1307.1 1806.1 1976 12 2031 1726.1 1432.8 2007.2 1977 13 2234 1878.4 1566.5 2145.0 1978 14 2566 2084.7 1722.0 2324.1 1979 15 2820 2305.3 1897.0 2602.9 1980 16 3006 2515.5 2082.5 2888.6 1981 17 3093 2688.8 2264.4 3134.1 1982 18 3277 2865.2 2444.6 3295.0 1983 19 3514 3059.9 2629.2 3466.1 1984 20 3770 3272.9 2822.3 3675.1 1985 21 4107 3523.1 3032.6 3916.6 解 取α = 0.3 ,初始值 (1) S0 和 (2) S0 都取序列的首项数值,即 676 (0) 0 (1) S0 = S = 。 计算 (1) (2) , St St ,列于表 6。得到 3523.1 (1) S21 = , 3032.6 (2) S21 = 由公式(19),可得t = 21时