1.1GM(1,1)模型

1.1.1基本概念

  • 序列级比:

    已知数据序列

    $$ X=(x(1),x(2),\cdots,x(n)),x(k)\ge0,k=1,2,\cdots,n $$

    则称

    $$ \sigma(k)=\frac{x(k)}{x(k-1)},k=2,3,\cdots,n $$

    为序列X的级比。

  • 一次累加生成算子—1-AGO

    已知原始数据序列

    $$ X^{(0)}=(x^{(0)}(1),x^{(0)}(2),\cdots,x^{(0)}(n)) $$

    令$D$为序列算子,则

    $$ X^{(0)}D=(x^{(0)}(1)d,x^{(0)}(2)d,\cdots,x^{(0)}(n)d) $$

    其中

    $$ x^{(0)}(k)d=\sum_{i=1}^k{x^{(0)}(i)},k=1,2,\cdots,n $$

    此时称$D$为$X^{(0)}​$的一次累加生成算子,记为1-AGO。

  • 紧邻均值生成序列:

    已知原始数据序列

    $$ X^{(0)}=(x^{(0)}(1),x^{(0)}(2),\cdots,x^{(0)}(n)) $$

    其中$x^{(0)}(k)$和$x^{(0)}(k-1)$为$X^{(0)}$的一对紧邻值,则可定义序列算子D为:

    $$ X^{(0)}D=(x^{(0)}(1)d,x^{(0)}(2)d,\cdots,x^{(0)}(n)d) $$

    其中

    $$ x^{(0)}(k)d=\alpha x^{(0)}(k)+(1-\alpha)x^{(0)}(k-1) $$

    当$\alpha=0.5$时,无偏生成算子D也称为紧邻均值生成算子,紧邻生成算子作用的序列称为紧邻均值生成序列。

  • 关联度(用于模型的关联度检验):设系统行为序列有m个,即:

$$ \begin{aligned} X^{(0)}&=(x^{(0)}(1),x^{(0)}(2),\cdots,x^{(0)}(n)),\\ X^{(1)}&=(x^{(1)}(1),x^{(1)}(2),\cdots,x^{(1)}(n)),\\ &\qquad\qquad\qquad\qquad\ \ \ \vdots\\ X^{(m)}&=(x^{(m)}(1),x^{(m)}(2),\cdots,x^{(m)}(n)) \end{aligned} $$

则称

$$ \begin{aligned} \gamma(x^{(0)}(k),x^{(i)}(k))&=\frac{min_imin_k|x^{(0)}(k)-x^{(i)}(k)|+Pmax_imax_k|x^{(0)}(k)-x^{(i)}(k)|}{|x^{(0)}(k)-x^{(i)}(k)|+Pmax_imax_k|x^{(0)}(k)-x^{(i)}(k)|}\\ \Gamma(X^{(0)},X^{(i)})&=\frac1n\sum_{k=1}^{n}{\gamma(x^{(0)}(k).x^{(i)}(k))} \end{aligned} $$

其中$i=1,2,\cdots,m;k=1,2,\cdots,n​$,$\gamma(x^{(0)}(k),x^{(i)}(k))​$表示$x^{(i)}(k)​$与$x^{(0)}(k)​$在$k​$时刻的灰色关联系数,$P\in[0,1]​$为分辨系数,$\Gamma(X^{(0)},X^{(i)})​$表示比较数列$X^{(i)}​$对参考数列$X^{(0)}​$的灰色关联度。

==灰色关联度的计算步骤:==

  • [ ] 第一步:计算各序列的均值象${X^{(i)}}{'}​$

    $$ {X^{(i)}}{'}=\frac{X^{(i)}}{x^{(i)}(1)}=(x^{(i)}{'}(1),x^{(i)}{'}(2),\cdots,x^{(i)}{'}(n)),i=0,1,2,\cdots,m $$

  • [ ] 第二步:计算$X^{(0)}​$与$X^{(i)}​$均值象对应分量之差的绝对值序列,记为$\Delta^{(i)}(k)​$,即

    $$ \Delta^{(i)}(k)=|x^{(0)}{'}(k)-x^{(i)}{'}(k)|,i=1,2,\cdots,n;k=1,2,\cdots,m $$

  • [ ] 第三步:找到$\Delta^{(i)}(k)$的最大值与最小值,也称为两级最大差和两级最小差,分别记为

    $$ M=\max_i\max_k\Delta^{(i)}(k),L=\min_i\min_k\Delta^{(i)}(k) $$

  • [ ] 第四步:计算关联系数

    $$ \gamma(x^{(0)}(k),x^{(i)}(k))=\frac{L+PM}{\Delta^{(i)}(k)+PM},P\in[0,1];i=1,2,\cdots,m;k=1,2,\cdots,n $$

  • [ ] 第五步:计算关联度——即关联系数的平均值

    $$ \Gamma(X^{(0)},X^{(i)})=\frac1n\sum_{k=1}^{n}{\gamma(x^{(0)}(k).x^{(i)}(k))},i=1,2,\cdots,m;k=1,2,\cdots,n $$

1.1.2 建模过程

GM(1,1)模型有四种基本形式定义即,原始差分GM(1,1) 模型(ODGM)、均值GM(1,1)模型(EGM)、均值差分GM(1,1)模型(EDGM)、离散GM(1,1)模型(DGM),其中均值GM(1,1)模型应用更加广泛,一般提到GM(1,1)模型往往指的是EGM(1,1)。下面对均值GM(1,1)模型建模过程进行阐述:

i)数据检验和处理——构建GM(1,1)模型的均值方程

数据检验:对已知原始数据计算所有级比$\sigma(k)$,当所有级比$\sigma(k)\in(e^{\frac{-2}{n+1}},e^{\frac{2}{n+2}})$时,则原始数据可以作为GM(1,1)模型的数据进行灰色预测。否则需要对原始数据进行平移变换使其满足条件。

数据处理:已知原始数据序列$X^{(0)}=(x^{(0)}(1),x^{(0)}(2),\cdots,x^{(0)}(n))$

  • 首先对$X^{(0)}​$进行1-AGO得到序列

    $$ X^{(1)}=(x^{(1)}(1),x^{(1)}(2),\cdots,x^{(1)}(n) $$

    其中

    $$ x^{(1)}(k)=\sum_{i=1}^k{x^{(0)}(i)},k=1,2,\cdots,n $$

  • 然后由$X^{(0)}$和$X^{(1)}$得到$\alpha=\frac{1}{2}$时,邻值均值生成数列为

    $$ Z^{(0)}=(z^{(1)}(2),z^{(1)}(3),\cdots,z^{(1)}(n), $$

    其中

$$ z^{(1)}(k)=\alpha[{x^{(1)}(k)+x^{(1)}(k-1)}]=\frac{1}{2}[{x^{(1)}(k)+x^{(1)}(k-1)}] $$

  • $$ x^{(1)}(k)=\sum_{i=1}^k{x^{(0)}(i)},x^{(1)}(k-1)=\sum_{i=1}^{k-1}{x^{(0)}(i)},k=1,2,\cdots,n $$

    代入上面式(1)可知:

$$ z^{(1)}(k)=\sum_{i=1}^{k-1}{x^{(0)}(i)}+\frac{1}{2}x^{(0)}(k) $$

  • 由上式可知$z^{(1)}(k)​$与$x^{(0)}(k)​$存在线性关系,为了方便计算简化方程形式,我们对$z^{(1)}(k)​$与$x^{(0)}(k)​$的线性关系构建如下:

$$ x^{(0)}(k)+az^{(1)}(k)=b $$

  • 上面式(3)即为GM(1,1)模型的均值形式,==GM(1,1)模型均值形式实质上是一个差分方程==,a称为发展系数,b称为灰作用量,其中上述方程中$x^{(0)}(k)和z^{(1)}(k)$为变量,接下来需要对a和b进行求解

ii)矩阵建立B、Y,求解a、b——实质是利用最小二乘法进行参数估计得出$\hat a,\hat b​$

  • 根据GM(1,1)模型均值形式方程,记$\hat a=[a,b]^T​$,记

$$ \begin{matrix} B= \left[ \begin{matrix} -z^{(1)}(2)&1\\ -z^{(1)}(3)&1\\ \vdots&\vdots\\ -z^{(1)}(n)&1 \end{matrix} \right], Y= \left[ \begin{matrix} x^{(0)}(2)\\ x^{(0)}(3)\\ \vdots\\ x^{(0)}(n) \end{matrix} \right] \end{matrix} $$

  • 则GM(1,1)模型均值形式方程可以表示为$Y=B\hat a​$
  • 利用最小二乘法对a和b进行参数估计,即运用最小二乘法估计$\hat a$,则

    $$ \hat a=(B^TB)^{-1}B^TYiii) $$

iii)求解GM(1,1)模型均值形式的时间响应序列式——类比微分方程求解方法——构造该模型的白化微分方程

  • 把均值GM(1,1)模型的差分形式连续化,即把$k=2,3,\cdots,n$视为连续变量t,则

$$ \begin{aligned} x^{(0)}(k)&=x^{(1)}(k)-x^{(1)}(k-1)\\ &=\int_{k-1}^{k}d{{x^{(1)}(t)}}\\ &=\int_{k-1}^{k}\frac{d{{x^{(1)}(t)}}}{dt}{dt} \end{aligned} $$

  • 同时根据积分的几何意义对$z^{(1)}(k)=\frac{1}{2}[{x^{(1)}(k)+x^{(1)}(k-1)}]​$为在点$t=k和t=k-1与曲线x^{(1)}(t)​$所围成的矩形面积近似转化为积分形式,即

$$ \begin{aligned} z^{(1)}(k)&=\frac{1}{2}[{x^{(1)}(k)+x^{(1)}(k-1)}\\ &\approx\int_{k-1}^{k}{x^{(1)}(t)}dt \end{aligned} $$

  • 把上面$x^{(0)}(k)和z^{(1)}(k)​$代入均值GM(1,1)模型方程式(3)可得:

$$ x^{(0)}(k)=-az^{(1)}(k)+b $$

​ 即:

$$ \begin{aligned} &\int_{k-1}^{k}\frac{d{{x^{(1)}(t)}}}{dt}{dt}\\ &\quad=-a\int_{k-1}^{k}{x^{(1)}(t)}dt+b\\ &\quad=-\int_{k-1}^{k}a({x^{(1)}(t)}-\frac{b}{a})dt \end{aligned} $$

  • 对上式移项后左右两边同时求导可得:

$$ \frac{d{{x^{(1)}(t)}}}{dt}{dt}=-ax^{(1)}(t)+b $$

  • 故上面白化微分方程式(9)即为均值GM(1,1)模型的影子方程,==由常微分方程求解方法==可得式(9)的通解为:

$$ \begin{aligned} x^{(1)}(t)&=e^{-{\int adt}}[\int {be^{\int adt}}dt+c]\\ &=e^{(-at)}[\frac{b}{a}e^{(at)}+c]\\ &=\frac ba+ce^{(-at)} \end{aligned} $$

  • 由上述可知初值条件$x^{(1)}(1)=x^{(0)}(1)$代入上式通解即$x^{(1)}(1)=x^{(0)}(1)=\frac ba+ce^{-a}$,由此可得$c=e^{a}[x^{(0)}(1)-\frac ba]$故白化微分方程的解为:

$$ x^{(1)}(t)=\frac ba+[x^{(0)}(1)-\frac ba]e^{-a(t-1)} $$

对于一阶微分方程形如

$$ y^{'}=-P(x)y+Q(x) $$

可以对该微分方程利用常数变异法可得该微分方程的通解

$$ y=\Big[\int Q(x)e^{\int P(x)dx}dx+C\Big]e^{-\int P(x)dx} $$

iv)根据白化微分方程(影子方程)的解——得出GM(1,1)模型时间响应序列式——GM(1,1)模型时间响应序列式即为影子方程解的离散形式

$$ \hat x^{(1)}(k)=\frac{b}{a}+\Big[x^{(0)}(1)-\frac{b}{a}\Big]e^{-a(k-1)},k=1,2,\cdots,n $$

v)累减还原——得出预测值

$$ \begin{aligned} \hat x^{(0)}(k)&=\hat x^{(1)}(k)-\hat x^{(1)}(k-1)\\ &=(1-e^a)\Big[x^{(0)}(1)-\frac ba\Big]e^{-a(k-1)},\\ \text{其中}k&=1,2,\cdots,n \end{aligned} $$

1.1.3模型检验

1.1.3.1残差检验

残差大小检验,即对模型值和实际值的残差进行逐点检验

  • 绝对残差序列$\epsilon^{(0)}$计算:首先按模型计算$\hat x^{(1)}(k+1)$,然后通过累减还原得到$\hat x^{(0)}(k)$,最后计算原始序列$x^{(0)}(k)$和模型计算值$\hat x^{(0)}(k)$的绝对残差序列:

    $$ \epsilon^{(0)}={\{\epsilon^{(0)}(k),k=1,2,\cdots,n}\},其中\epsilon^{(0)}(k)=|x^{(0)}(k)-\hat x^{(0)}(k)| $$

  • 相对残差序列$\Delta^{(0)}$计算:

    $$ \begin{aligned} \Delta^{(0)}&={\{\Delta^{(0)}(k)},k=1,2,\cdots,n\}\\ &={\{\frac{\epsilon^{(0)}(k)}{x^{(0)}(k)}},k=1,2,\cdots,n\} \end{aligned} $$

  • 平均相对残差$\bar \Delta$计算:

    $$ \bar\Delta=\frac{1}{n}\sum_{k=1}^{n}{\Delta^{(0)}(k)} $$

给定$\alpha$,当$\bar\Delta\lt\alpha$,且$\Delta\lt\alpha$成立时,称模型为残差合格。注:$\alpha常取0.01、0.05、0.1、0.2$

1.1.3.2关联度检验

$\Gamma(X^{(0)},\hat X^{(0)})$表示模型计算数列$\hat X^{(0)}$对原始数列$X^{(0)}$的灰色关联度,对于给定的$\Gamma_0(\Gamma_0常取0.9、0.8、0.7、0.6),有\Gamma(X^{(0)},\hat X^{(0)})\gt\Gamma_0$,则称模型为关联度合格模型​。

1.1.3.3后验差检验(残差检验的基础上)

后验差检验,及对残差分布的统计特性进行验证。

  • 计算原始序列平均值$\bar x^{(0)}$

    $$ \bar x^{(0)}=\frac{1}{n}\sum_{k=1}^n{x^{(0)}(k)} $$

  • 计算原始序列均方差$S_1$

    $$ S_1=\sqrt{\frac{\sum_{k=1}^n(|x^{(0)}(k)-\bar x^{(0)}|)^2}{n-1}} $$

  • 计算残差的均值$\bar\Delta$

    $$ \bar\Delta=\frac{1}{n}\sum_{k=1}^{n}{\Delta^{(0)}(k)} $$

  • 计算残差的均方差$S_2$

    $$ S_2=\sqrt{\frac{\sum_{k=1}^n(|\Delta^{(0)}(k)-\bar \Delta|)^2}{n-1}} $$

  • 计算方差比$C$

    $$ C=\frac{S_1}{S_2} $$

  • 计算小残差概率$P$

    $$ P=P{\{|\Delta^{(0)}(k)-\bar \Delta|\lt0.6745S_1\}} $$

    若对于给定的$C_0,(C_0常取0.35、0.50、0.65、0.80),当C\lt C_0$时,称模型为均方差比合格模型;对于给定的$P_0,(P_0常取0.95、0.80、0.70、0.60),当P\gt P_0$时,称模型为小残差概率合格模型。

    ==若残差检验、关联度检验、后验差检验在允许范围内,则可以利用所建模型进行预测,否则需要进行残差修正——GM(1,1)残差模型。==

    1.1.3.4小结

    上述检验模型的三种方法都是通过对残差的考察来判断模型的精度,其中平均相对误差$\bar \Delta $和模拟误差都要求越小越好,关联度$\Gamma$要求越大越好,均方差比值$C$越小越好(因为$C$小说明$S_2$小,$S_1$大,即残差方差小,原始数据方差大,说明残差比较集中,摆动幅度小,原始数据比较分散,摆动幅度大,所以模拟效果好要求$S_2$与$S_1$,相比尽可能小),以及小误差概率P越大越好,给定$\alpha, \Gamma_0, C_0, P_0$的一组取值,就确定了检验模型模拟精度的一个等级.常用的精度等级见表1,可供检验模型参考。

    精度等级相对误差$\alpha$关联度$\Gamma_0$均方差比值$C_0$小残差概率$P_0$
    一级0.010.900.350.95
    二级0.050.800.500.80
    三级0.100.700.650.70
    四级0.200.600.800.60

1.1.5模型说明

1)给定原始数据$X^{(0)}$中的数据不一定要全部用来建模,对原始数据的取舍不同,得到的模型不同,即a,b不同;

2)建模数据的取舍应保证建模序列等时距、相连、不得有跳跃出现;

3)一般建模的数据序列应当由最新的数据以及相邻数据构成,当再出现新数据时有两种处理方法:i)将新信息加入到原始序列中,重新估参;ii)去掉原始数据中最老的一个数据,再加上最新的数据,所形成的序列和原序列维数相等,再重新估参数。

最后修改:2022 年 09 月 01 日
如果觉得我的文章对你有用,请随意赞赏