项目 | 灰色系统 | 概率统计 | 模糊数学 |
---|---|---|---|
研究对象 | 贫信息不确定 | 随机不确定 | 认知不确定 |
基础集合 | 灰色朦胧集 | 康托集 | 模糊集 |
方法依据 | 信息覆盖 | 映射 | 映射 |
途径手段 | 灰序列算子 | 频率统计 | 截集 |
数据要求 | 任意分布 | 典型分布 | 隶属度可知 |
侧重点 | 内涵 | 内涵 | 外延 |
目标 | 现实规律 | 历史统计规律 | 认知表达 |
特色 | 小样本 | 大样本 | 凭经验 |
灰色预测是用灰色模型GM(1,1)来进行定量分析的,通常分为以下几类:
通过对数列中的数据进行处理,产生新的数列,以此来挖掘和寻找数的规律性的方法叫做数的生成。
记原始序列为: X ( 0 ) = ( x ( 0 ) ( 1 ) , x ( 0 ) ( 2 ) , . . . . . . . , x ( 0 ) ( n ) ) X^{(0)} = (x^{(0) }(1),x^{(0) }(2),.......,x^{(0) }(n)) X(0)=(x(0)(1),x(0)(2),.......,x(0)(n))
一次累加生成序列为: X ( 1 ) = ( x ( 1 ) ( 1 ) , x ( 1 ) ( 2 ) , . . . . . . . , x ( 1 ) ( n ) ) X^{(1)} = (x^{(1) }(1),x^{(1) }(2),.......,x^{(1) }(n)) X(1)=(x(1)(1),x(1)(2),.......,x(1)(n))
其中: x ( 1 ) ( k ) = ∑ i = 0 k x ( 0 ) ( i ) = x ( 1 ) ( k − 1 ) + x ( 0 ) ( k ) x^{(1)}(k)=\sum_{i=0} ^kx^{(0) }(i)=x^{(1) }(k-1)+x^{(0) }(k) x(1)(k)=i=0∑kx(0)(i)=x(1)(k−1)+x(0)(k)
注:若实际数列中有负数,可使用移轴的方法,避免信息丢失。
累减生成数实质是累加生成数的逆运算。
记原始序列为: X ( 1 ) = ( x ( 1 ) ( 1 ) , x ( 1 ) ( 2 ) , . . . . . . . , x ( 1 ) ( n ) ) X^{(1)} = (x^{(1) }(1),x^{(1) }(2),.......,x^{(1) }(n)) X(1)=(x(1)(1),x(1)(2),.......,x(1)(n))
一次累减生成序列 1-IAGO: X ( 0 ) = ( x ( 0 ) ( 1 ) , x ( 0 ) ( 2 ) , . . . . . . . , x ( 0 ) ( n ) ) X^{(0)} = (x^{(0) }(1),x^{(0) }(2),.......,x^{(0) }(n)) X(0)=(x(0)(1),x(0)(2),.......,x(0)(n))
其中:
x ( 0 ) ( k ) = x ( 1 ) ( k ) + x ( 1 ) ( k − 1 ) , k = 2 , 3 , . . . . . . . , n x^{(0)}(k)=x^{(1) }(k)+x^{(1) }(k-1),k=2,3,.......,n x(0)(k)=x(1)(k)+x(1)(k−1),k=2,3,.......,n
令Z(1)为X(1)的紧邻均值(MEAN)生成序列: Z ( 1 ) = ( z ( 1 ) ( 2 ) , z ( 1 ) ( 3 ) , . . . . . . . , z ( 1 ) ( n ) ) Z^{(1)} = (z^{(1) }(2),z^{(1) }(3),.......,z^{(1) }(n)) Z(1)=(z(1)(2),z(1)(3),.......,z(1)(n))
其中: z ( 1 ) ( k ) = α x ( 1 ) ( k ) + ( 1 − α ) x ( 1 ) ( k − 1 ) , k = 2 , 3 , . . . . . . . , n z^{(1)}(k)=\alpha\ x^{(1) }(k)+(1-\alpha\ )x^{(1) }(k-1),k=2,3,.......,n z(1)(k)=α x(1)(k)+(1−α )x(1)(k−1),k=2,3,.......,n α \alpha α为生成系数,取0.5时,称生成的数列为均值生成数,也称等权邻值生成数。
基于上述几个概念,可以构建GM(1,1)模型。
灰导数: d ( k ) = x ( 0 ) ( k ) = x ( 1 ) ( k ) − x ( 1 ) ( k − 1 ) d(k)=x^{(0)}(k)=x^{(1)}(k)-x^{(1)}(k-1) d(k)=x(0)(k)=x(1)(k)−x(1)(k−1)
结合邻值生成序列,定义GM(1,1)灰微分方程模型为: x ( 0 ) ( k ) + a z ( 1 ) ( k ) = b x^{(0)}(k)+az^{(1) }(k)=b x(0)(k)+az(1)(k)=b或 d ( k ) + a z ( 1 ) ( k ) = b d(k)+az^{(1) }(k)=b d(k)+az(1)(k)=b
其中,a称为发展系数,z(1)(k)称为白化背景值,b称为灰作用量。
现x(0)、z(1)(k)为已知量,a、b待求解,故将k=2,3,…,n 待入,可得到矩阵方程 { x ( 0 ) ( 2 ) + a z ( 1 ) ( 2 ) = b , x ( 0 ) ( 3 ) + a z ( 1 ) ( 3 ) = b , . . . . . . , x ( 0 ) ( n ) + a z ( 1 ) ( n ) = b \begin{cases}x^{(0)}(2)+az^{(1)}(2)=b,\\x^{(0)}(3)+az^{(1)} (3)=b,\\......,\\x^{(0)}(n)+az^{(1)} (n)=b\end{cases} ⎩⎪⎪⎪⎨⎪⎪⎪⎧x(0)(2)+az(1)(2)=b,x(0)(3)+az(1)(3)=b,......,x(0)(n)+az(1)(n)=b
稍做转换:
{ x ( 0 ) ( 2 ) = − a z ( 1 ) ( 2 ) + b , x ( 0 ) ( 3 ) = − a z ( 1 ) ( 3 ) + b , . . . . . . , x ( 0 ) ( n ) = − a z ( 1 ) ( n ) + b \begin{cases}x^{(0)}(2)=-az^{(1)}(2)+b,\\x^{(0)}(3)=-az^{(1)} (3)+b,\\......,\\x^{(0)}(n)=-az^{(1)} (n)+b\end{cases} ⎩⎪⎪⎪⎨⎪⎪⎪⎧x(0)(2)=−az(1)(2)+b,x(0)(3)=−az(1)(3)+b,......,x(0)(n)=−az(1)(n)+b
令: u = [ a b ] u=\begin{bmatrix}a\\b\end{bmatrix} u=[ab] Y = [ x ( 0 ) ( 2 ) x ( 0 ) ( 3 ) . . . . . . x ( 0 ) ( n ) ] Y=\begin{bmatrix}x^{(0)}(2)\\x^{(0)}(3)\\......\\x^{(0)}(n)\end{bmatrix} Y=⎣⎢⎢⎡x(0)(2)x(0)(3)......x(0)(n)⎦⎥⎥⎤ B = [ − z ( 1 ) ( 2 ) 1 − z ( 1 ) ( 3 ) 1 . . . . . . − z ( 1 ) ( n ) 1 ] B=\begin{bmatrix}-z^{(1)}(2)&1\\-z^{(1)} (3)&1\\......\\-z^{(1)} (n)&1\end{bmatrix} B=⎣⎢⎢⎡−z(1)(2)−z(1)(3)......−z(1)(n)111⎦⎥⎥⎤
此时,GM(1,1)模型转化为Bu=Y,利用矩阵运算,解得:u=YB-1。
定义:对于GM(1,1)的灰微分方程,如果将时刻k=2,3,…,n视为连续变量t,则之前的x(1)视为时间t函数,于是灰导数x(0)(k)变为连续函数的导数dx(1)(t)/dt,白化背景值z(1)(k)对应于导数x(1)(t)。于是GM(1,1)的灰微分方程对应于的白微分方程为: d x ( 1 ) ( t ) d t + a x ( 1 ) ( t ) = b \frac{dx^{(1)}(t)}{dt}+ax^{(1)}(t)=b dtdx(1)(t)+ax(1)(t)=b解为: x ( 1 ) ( t ) = ( x ( 0 ) ( 1 ) − b a ) e − a ( t − 1 ) + b a x^{(1)}(t)=(x^{(0)}(1)-\frac{b}{a})e^{-a(t-1)}+\frac{b}{a} x(1)(t)=(x(0)(1)−ab)e−a(t−1)+ab
注意:此处得到的解为累加数列,后续需要将其转化为累减数列
为了保证GM(1,1)建模方法的可行性,需要对已知数据做必要的检验处理。
计算数列的级比: λ ( k ) = x ( 0 ) ( k − 1 ) x ( 0 ) ( k ) , k = 2 , 3 , . . . , n \lambda(k)=\frac{x^{(0)}(k-1)}{x^{(0)}(k)},k=2,3,...,n λ(k)=x(0)(k)x(0)(k−1),k=2,3,...,n
通过范围:(e-2/(n+1),e2/(n+2))
否则需要对数列作平移变换,使级比落在范围中 y ( 0 ) ( k ) = x ( 0 ) ( k ) + C , k = 1 , 2 , . . . , n y^{(0)}(k)=x^{(0)}(k)+C,k=1,2,...,n y(0)(k)=x(0)(k)+C,k=1,2,...,n
通过对白化方程的解,进行累减,得到预测值。 x ( 1 ) ( t ) = ( x ( 0 ) ( 1 ) − b a ) e − a ( t − 1 ) + b a x^{(1)}(t)=(x^{(0)}(1)-\frac{b}{a})e^{-a(t-1)}+\frac{b}{a} x(1)(t)=(x(0)(1)−ab)e−a(t−1)+ab x ^ ( 1 ) ( k + 1 ) = ( x ( 0 ) ( 1 ) − b a ) e − a k + b a \hat{x}^{(1)}(k+1)=(x^{(0)}(1)-\frac{b}{a})e^{-ak}+\frac{b}{a} x^(1)(k+1)=(x(0)(1)−ab)e−ak+ab x ^ ( 0 ) ( k ) = x ^ ( 1 ) ( k ) + x ^ ( 1 ) ( k − 1 ) , k = 2 , 3 , . . . . . . . , n \hat{x}^{(0)}(k)=\hat{x}^{(1) }(k)+\hat{x}^{(1) }(k-1),k=2,3,.......,n x^(0)(k)=x^(1)(k)+x^(1)(k−1),k=2,3,.......,n
在网上看了一些例题,大多都是可以直接通过级比检验不需要进行平移变换的,这里给出一题需要进行平移变换的,并附上级比检验不通过进行平移变换的代码。
题目:某地年降水量原始数据序列如下表所示,根据多年的时间观测,每当年降水量小于430~440mm时,该地区将发生旱灾.所以,选择阈值=435mm, 利用GM(1,1)模型进行旱灾预报。
框架:
1.级比检测
1.1求级比
1.2级比判断
1.3若级比检验未通过,则进行平行变换
2.GM(1,1)建模
2.2AGO
2.3加权邻值生成
2.4%预测后续数据
3.检验预测值
4.作图
MATLAB实现:
%导入数据
x0=[444,895,573,443,629,509,594,842,300,567,852,542,546,459,557,354,917,421,522,856,535,518,459,532,430,490,830,442,948,344];
n=length(x0);
%求级比
lamda=x0(1:n-1)./x0(2:n);
%级比判断
range=minmax(lamda)
range1=[exp(-2/(n+1)),exp(2/n+2)]
flag=1;
if(range(1)>range1(1)&&range(2)range1(1)&&range(2)
参考文献: