3.2 用于时间序列的灰色系统预测方法
从一个系统的有关信息是否已知的角度来看,所有的系统不外乎是白色系统、黑色系统或者灰色系统。所谓白色系统是指该系统的有关信息对于研究者来说都是清楚的。黑色系统则是指该系统的有关信息对于研究者来说都是未知的。显然,灰色系统是指介于两者之间的一种系统,是指该系统的有些信息是已知的,还有些信息是未知的。我们所面对的绝大多数系统都是灰色系统。如社会经济系统,生态系统等。基于灰色系统理论的预测模型称之为灰色预测模型。灰色预测模型有很多,可以参考众多灰色系统理论方面的专著或教科书。我们只介绍用于时间序列预测的最基本、最常用的灰色预测模型,GM(1,1),GM(1,N)模型。
3.5.1 GM(1,1)模型
设有预测对象的历史数据资料形成的时间序列x(0):x(0)(1),x(0)(2),?x(0)(n)。 结果想知道:x(0)(n?1),x(0)(n?2),?
根据灰色系统理论,可以针对这个问题建立如下的GM(1,1)模型。模型所依据的灰色系统理论在这里就不作介绍,下面介绍具体的模型建立方法和检验方法。首先对x生成,得到新的数列x(1)(0)作累加
,即作:
x(i)??x(0)(m),(1)m?1i(3-15) i?1,2,?,n
具体地说,就是:
?x(1)(1)?x(0)(1)?(1)(0)(1)?x(i)?x(i)?x(i?1),i?2,?,n(3-16)
通过累加生成的数列x(1)
,计算模型参数a和u。记:
??[au]T (3-17) a按如下公式可得模型参数a和u:
??(BTB)?1BTyn (3-18) a上式中:
1(1)??(1)?(x(1)?x(2))1??2??1(1)(1)1?B???2(x(2)?x(3))??????1(1)(1)??(x(n?1)?x(n))1????2?(3-19)
(3-20) yn?[x(0)(2),x(0)(3),?,x(0)(n)]T
通过上面的式子得到a,u后,就有GM(1,1)模型如下:
uu?(1)(i?1)?(x(0)(1)?)e?ai? x(3-21)
aa模型建立后,应该对模型作出检验。如果检验合格(检验方法见后),则可以用它进行
预测。即用,
?(0)(n?1)?x?(1)(n?1)?x?(1)(n),? x?(0)(n?2)?x?(1)(n?2)?x?(1)(n?1),? x?(0)(n?1),x?(0)(n?2),作为x?的预测值(Matlab程序见后,文件名fungry1.m)
下面结合一个具体例子加以说明GM(1,1)模型的建立和检验过程。
【例3-13】某市第三产业从业人数如表3-8所示,试建立GM(1,1)模型,预测其2006年的从业人数。
表3-8 某市从事第三产业的人数(单位:万人)
年份 2000 2001 2002 2003 2004 2005 人数 2.97 3.23 3.29 3.46 3,59 3.71
x(0)(i) x(0)(1) x(0)(2) x(0)(3) x(0)(4) x(0)(5) x(0)(6)
如果利用手工计算,则有以下步骤。首先计算累加生成数列x(0)(i),如表3-9所示。
表3-9 由x(0)(i)累加生成的新数列x(0)(i)
序号i
1
2.97 2.97
2 3.23 6.2
3 3.29 9.49
4 3.46 12.95
5 3.59 16.45
6 3.71 20.25
x(0)(i) x(0)(i)
然后根据前面得到的公式(3-19)、(3-20)计算矩阵B和yn。
1(1)????4.585(1)?(x(1)?x(2))1???2????7.8451(1)(1)1????11.22B???2(x(2)?x(3))?????????14.7451??(x(1)(n?1)?x(1)(n))1???18.395???2??yn?x(0)(2),x(0)(3),?,x(0)(6)1?1??1? ?1?1????T?(3.23,3.29,3.46,3.59,3.71)T,于是有
??4.585??7.845??4.585?7.845?11.22?14.745?18.395??TBB??????11.2211111?????14.745???18.395?764.2457?56.79???5???56.79??764.2457T?1(BB)????56.79 则有(公式(3-18)):
1?1??1??1? 1???56.79?5???1?0.00839???0.095270.09527?
1.28202???0.008390.09527???200.6208???0.03653?T?1T? a?(BB)Byn??????????0.095271.28202??17.28??3.04123?从而,a??0.03653,u?3.04123
这就是说,该市第三产业从业人数的GM(1,1)预测模型为:
?(1)(i?1)?86.2281xe0.03653i?83.2581
下面对得到的模型进行检验。灰色预测模型检验有残差检验、关联度检验和后验差检验。
1. 残差检验。残差检验有两种,绝对误差和相对误差检验。
?(0)(i),绝对误差:?(0)(i)?x(0)(i)?x(i?1,2,?,n)
??(0)(i)?相对误差:?(i)??(0)??100%,?x(i)?(0)(i?1,2,?,n)(3-22)
(i?1,2,?,n)
?式中:x(0)?(1)(i)?x?(1)(i?1),x?(0)(1)?x?(1)(1)(i)?x表3-10 残差检验表
本例计算结果如表3-10所示的结果。
序号i
1 2 3 4 5 6
x(0)(i)
2.97 3.23 3.29 3.46 3.59 3.71
?(0)(i) x2.97 3.21 3.33 3.45 3.58 3.71
?(0)(i) ?(0)(i)?x(0)(i)?x0 0.02 -0.04 0.01 0.01 0
相对误差(%)
0 0.62 -1.22 0.29 0.28 0
由误差计算结果可以看到,相对误差不超过2%,模型精度是非常高的。
2.关联度检验。关联系数定义为:
?(i)?min(?(i))??max(?(i)),?(i)??max(?(i))i?1,2,?,n (3-23)
式中,
?(i)为第i个数据的关联系数,?为取定的最大差百分比,一般取??0.5;
?(0)(i)?x(0)(i),而:?(i)?xi?1,2,?n
本例中,取??0.5,经过计算有如表3-11所示的结果。
表3-11 关联系数表
序号i
1 1
2 0.50
3 0.33
4 0.67
5 0.67
6 1
?(i)
最后计算关联度?。关联度?定义为:
1n(3-24) ???(i) ?n?1i?1本例中,
1n1???(i)?(1?0.5?0.33?0.67?0.67?1)?0.695 ?n?1i?16?1一般来说,在??0.5,??0.695时是令人满意的(具体讨论参见灰色系统理论的有关参考书)。
3.后验差检验。首先计算原始数列x(0)的均方差S0。其定义为:
S0?20nS02n?1S??x(0)(i)?x(0) (3-25)
i?1??2x然后计算残差数列?(0)(0)1n(0)??x(i)ni?1的均方差S1。其定义为:
S1?21S12n?1nS???(0)(i)??(0) (3-26)
i?1??2?(0)1n(0)???(i)ni?1本例中,S0?0.2676,S1?0.0210。由此计算方差比c,
(3-27) c?S1S0?0.02100.2676?0.0785
最后计算小误差概率p:
p??(0)??(0)?0.6745?S0 (3-28)
本例中,S0?0.2676,?(0)?0,于是,
??p??(0)?0.6745?0.2676??(0)?0.1805?1
根据下面的预测精度等级划分表,如表3-12所示,可知前面得到的模型有好的预测精
度,并可以用于预测。
表3-12 预测精度等级划分表
小误差概率p值
>0.95 >0.80 >0.70 <=0.70
方差比c值 <0.35 <0.5 <0.65 >=0.65
预测精度等级
好 合格 勉强合格 不合格
????事实上,从下面的图形3-5中也可以看到原始数列的模拟值与原始数列之间拟合的相当好。
3.83.73.63.53.43.33.23.13123456History data:real line
?图3-5 虚线:模拟值x(0)曲线;实线:原始值x(0)曲线
在本例中,预测该市2006年的第三产业从业人数,则有:
?(0)(7)?x(1)(7)?x(1)(6)?24.10?20.25?3.85(万人) xGM(1,1)模型参数估计、检验以及作图和预测的Matlab程序:
用于时间序列的灰色系统预测方法



