Board logo

标题: Spss电脑实验-第七节(3)时间序列数据灰色模型的拟合与预测预报中的应用 [打印本页]

作者: spss_SAS    时间: 2006-1-21 10:50     标题: Spss电脑实验-第七节(3)时间序列数据灰色模型的拟合与预测预报中的应用

Ⅲ. 时间序列数据灰色模型的拟合与预测预报中的应用
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).
2. 灰色模型 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 ahead)的预测值,即 “1989” 年的预测值(68.72%)的输出结果。
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.
*----------------------------------------------------------------------.
运算结果输出了灰色模型预测拟合图形:






欢迎光临 CFA论坛 (http://forum.theanalystspace.com/) Powered by Discuz! 7.2