时间序列数据灰色模型的拟合与预测预报中的应用 1. 灰色模型简介
一般的数学模型是对原始数列建模,且要求有足够的样本量和特定的分布。(grey
model)不受这些条件的约束,适用性较强。灰色模型的建模过程是将无规律的 原始数列,经过累加及求均值等生成过程,使其成为较有规律的生成数列后再建
模。本节介绍的灰色模型是为1个变量的1个阶微分方程GM(1,1)。以灰色模型
拟合进行预测预报,由于简便易行,在管理工作中有很广泛的应用。 灰色模型的一阶线性微分方程为: dx(t)
??? + ax (t) = u dt
其中a 和 u 为灰色模型的待定参数。 程序中以下列一个语句计算预测值(ext):
COMPUTE ext=((x1-u/a)*EXP(0-(a*t))+u/a) -((x1-u/a) * EXP(0-(a*(t-1)))+u/a).
,. 灰色模型 GM(1,1) 预测实例
以下是某单位“保健开支”占事业经费的比重(xt, %)增长情况的数据(刘作 浚:中国卫生统计,8 (2):25, 1991),请预测该数列往前预测一年(1989 年) 的比重(ext)。
所用的程序文件名为 GM11-Model.sps。
在程序文件的 BEGIN DATA 与 END DATA 间,录入表中第 (2) 列、第 (3) 列 的数据。
表 7-2 某单位“保健开支”占事业经费的比重的增长情况
------------------------------------------------------------------------------
年份 过几年(t) 比重(xt) 预测值(ext) 误差(d)
(1) (2) (3) (4) (5) ------------------------------------------------------------------------------
1979 0 19.36 19.36 .00 1980 1 22.77 26.23 -3.46 1981 2 33.51 29.19 4.32 1982 3 37.96 32.49 5.47 1983 4 38.16 36.16 2.00 1984 5 38.33 40.24 -1.91 1985 6 38.09 44.79 -6.70 1986 7 45.45 49.85 -4.40 1987 8 58.64 55.48 3.16
1988 9 64.99 61.74 3.25 ------------------------------------------------------------------------------
1989 10 68.72
---------------------------------------------------------------------
---------
3.灰色模型预测程序文件的使用方法 打开程序文件后,请注意按如下计算步骤:
? “第一个年份”意为“当年”即“t”为“0”年;“第二个年份”意为“过1年”即“t”为“1”年,余类推。程序文件中有“Note”一句予以说明。
? 利用此程序文件拟合新的时间序列数据时,“COMPUTE First”一句要录入用
1979 年)。 户时间序列的第一年的年份值(本例为
? 先从头运行至 “LIST VARIABLES=D a u” 一句为止, 得到拟合灰色模型所
需参数 D、 a、 和 u 值(实际上仅“a”值与“u”值为灰色模型公式所需的参
数)。可见 D = 915175.92875, a = -.10702, u = 22.77710。 ? 将所得的 D值、 a值、 和u 值对其下的三句赋值(“COMPUTE D”、“COMPUTE a”和“COMPUTE u”),用于灰色模型预测公式的计算。
x(t)的估计值 ext 算式是:
ext=((x1-u/a)*EXP(0-(a*t))+u/a)-((x1-u/a) * EXP(0-(a*(t-1)))+u/a) 要预测该数列往前一年(1989 年)的比重(ext),只要代入 x1 = 19.36 (数 列的第一个数值),u = 22.77710, a = -.10702,t = 10(即 1989 年),即可 ext = 68.72 %。 算得
? 由此再往下计算到最后一句,即可得到表中第 (4) 列的预测值(ext)与第 (5) 列的误差值(d),可见误差合计仅 1.75 %。随后还可得到“向前一步”(one step
“1989” 年的预测值(68.72%)的输出结果。 ahead)的预测值,即 TITLE 'A example of GM(1,1) Model; Filename: GM11-Model.sps'.
*--------------------------------------------------------------------
--.
*1. From CHN J. of Health Statistics. 1991; 8(2):25. *Note: The following value t begins at 0, please!. DATA LIST FREE /t xt.
BEGIN DATA.
0 19.36 1 22.77 2 33.51 3 37.96 4 38.16 5 38.33 6 38.09 7 45.45 8 58.64 9 64.99 END DATA.
COMPUTE First=1979. COMPUTE x1=19.36. COMPUTE n=10. CREATE yk=CSUM(xt). CREATE yk1=LAG(yk,1). COMPUTE Year=t+First. COMPUTE zt=(yk+yk1)/2. COMPUTE z2t=zt**2. COMPUTE xtzt=xt*zt.
VARIABLE LABELS xt 'value, %' /yk1 'lag value of yk' /zt 'zt' /z2t 'z2t' /xtzt 'xt*zt'.
FORMATS t(F3.0) Year(F5.0) xt yk yk1 zt z2t xtzt(F8.3). LIST VARIABLES=t Year xt yk yk1 zt z2t xtzt /CASES=FROM 1 TO 10.
CREATE sxt=CSUM(xt). CREATE szt=CSUM(zt). CREATE sz2t=CSUM(z2t). CREATE sxtzt=CSUM(xtzt). COMPUTE sxt=sxt-x1. COMPUTE szt2=(szt)**2.
VARIABLE LABELS sxt 'sum of x(t)' /szt 'sum of z(t)' /sz2t 'sum of sz(t)**2'
/sxtzt 'sum of x(t)*z(t)'. COMPUTE D=((n-1)*(sz2t)-(szt2)). COMPUTE a=((n-1)*(0-(sxtzt))+(szt)*(sxt))/D. COMPUTE u=((szt)*(0-(sxtzt))+(sxt)*(sz2t))/D. VARIABLE LABELS D 'value D'
/a 'value a in th model'
/u 'value u in the model'. FORMATS D a u(F12.5).
LIST VARIABLES=D a u /FORMAT=NUMBERED /CASES=FROM 10 TO 10. COMPUTE D = 915175.92875. COMPUTE a = -.10702. COMPUTE u = 22.77710.
COMPUTE ceyt=(x1-u/a)*EXP(0-(a*t))+u/a. VARIABLE LABELS ceyt 'cumulated value of y(t)'. FORMATS xt yk zt ceyt(F9.3).
LIST VARIABLES=t Year xt yk zt ceyt /CASES=FROM 1 TO 10.
COMPUTE ext=((x1-u/a)*EXP(0-(a*t))+u/a) -((x1-u/a)*EXP(0-(a*(t-1)))+u/a).
IF (t=0) ext=x1. COMPUTE d=xt-ext.
VARIABLE LABELS ext 'estim. value' /d 'x(t)-ex(t)'.
DESCRIPTIVES VARIABLES=d /STATISTICS=SUM. FORMATS xt yk zt ceyt ext d(F8.2).
LIST VARIABLES=t Year xt ext d /CASES=FROM 1 TO 10. TSPLOT /VARIABLES=xt ext.
GRAPH /LINE(MULTIPLE)=VALUE(xt) VALUE(ext) BY Year. COMPUTE t=n-1. COMPUTE Year=Year+n-1.
*For getting the forecasting values of forward s-steps,
You must run the following 5 commands s times repeatedly:. COMPUTE t=t+1.
COMPUTE ceyt=(x1-u/a)*EXP(0-(a*t))+u/a. COMPUTE ext=((x1-u/a)*EXP(0-(a*t))+u/a) -((x1-u/a)*EXP(0-(a*(t-1)))+u/a). COMPUTE Year=Year+1.
LIST VARIABLES=t Year ext /FORMAT=NUMBERED /CASES=FROM 1 TO 1. *----------------------------------------------------------------------.
运算结果输出了灰色模型预测拟合图形:
因篇幅问题不能全部显示,请点此查看更多更全内容