Samxander's home

You shall see the difference now that we are back again!

0%

GM(1,1)灰色预测

GM(1,1)灰色预测

显然地,G代表Grey(灰色),M代表Model(模型);而(1,1)代表只含有一个变量的一阶微分方程模型。

灰色系统:

  • 介于黑色和白色之间,部分已知部分未知,具有小样本数据的不确定性系统。

  • 典型例子:GDP就是灰色系统。

适用赛题:

  • 数列预测

    • 特点:定时求量。已知xx年到xx年的数据,请预测下一年的数值。
    • 常见GDP、人口数量、耕地面积、粮食产量等问题。
    • 针对的问题往往短期波动小可预测,但长期可能变化大、难以预测。
  • 灾变预测

    • 特点:定量求时。已知xx年到xx年的数据和某灾变的阈值,预测下一次灾变发生的时间。
    • 常见洪涝灾害、虫灾等问题。
    • 模型中需要把超出阈值的数据 (异常数据) 对应的时间组成新序列。
  • 拓扑预测
    • 特点:对数据波形进行预测。求的是多个模型构成的模型群,等于求解多个灾变预测。
    • 与灾变预测类似,不过有较详细的分级,例如虫灾 “轻微” “中度” “重度”。
  • 注意事项
    • 需要的数据量少,数据量太多了没有意义。
    • 只能短期预测,但究竟多短没有严格限制。

以下题为例:某城市1986到1992年道路噪声平均声级数据见下表。请预测下一年的数据。

  • 某城市交通噪声数据/$dB(A)$
序号 1 2 3 4 5 6 7
年份 1986 1987 1988 1989 1990 1991 1992
噪声 71.1 72.4 72.4 72.1 71.4 72.0 71.6
  • 特点:数据少,看不出明显规律,适合用灰色预测。

可进行数据的累加,于是有:

序号 1 2 3 4 5 6 7
年份 1986 1987 1988 1989 1990 1991 1992
$x^{(0)}$ 71.1 72.4 72.4 72.1 71.4 72.0 71.6
$x^{(1)}$ 71.1 143.5 215.9 288 359.4 431.4 503
  • 累加生成序列:$x^{(1)}(k) = \sum_{i=1}^k x^{(0)}(i)$

  • 弱化其随机性,显现其规律性

此时生成的新序列 $x^{(1)}$ ,看起来像一个指数曲线 (直线)。因此可用一个指数曲线的表达式来逼近这个新序列,相应可构建一阶常微分方程来求解拟合指数曲线函数表达式

关于一阶常微分方程,假设 $x^{(1)}$ 满足形式: $\frac{dx^{(1)}}{dt} + ax^{(1)} = u$

  • 要预测下一年数值,就需要新序列 $x^{(1)}$ 的表达式,那就要解出微分方程
  • 要解微分方程,就要先知道参数 $a$ 和 $u$

表达式处理

已知的 $\frac{dx^{(1)}}{dt} + ax^{(1)} = u$ 中的数据是离散的,所以应该把 $\frac{dx^{(1)}}{dt}$ 写成 $\frac{\Delta x^{(1)}}{\Delta t}$ .

  • $\Delta t = t - (t-1) = 1$,始终为1;而 $\Delta x^{(1)} = x^{(1)}(t)- x^{(1)}(t-1) = x^{(0)}(t)$
  • 得到方程$x^{(0)}(t) + ax^{(1)}(t) = u$ ,即 $x^{(0)}(t) = - ax^{(1)}(t) + u$

为了进一步消除数据随机性,将 $x^{(1)}(t)$ 修正为 $z^{(1)}(t)$

  • 考虑到原方程中有 $\frac{\Delta x^{(1)}}{\Delta t}$,因此将 $x^{(1)}(t)$ 改为取前后两个时刻的均值更合理。
  • 对 $x^{(1)}$ 进行均值生成:$z^{(1)}(t) = 0.5x^{(1)}(t)+0.5 x^{(1)}(t-1),t=2,…,n$,即方程改为 $x^{(0)}(t) = - az^{(1)}(t) + u$ .
  • 可用最小二乘法求未知参数。

模型求解

1.最小二乘法求解

  • 当前方程 (函数) 为 $x^{(0)}(t) = - az^{(1)}(t) + u$ .
  • 最小二乘法就是求出当拟合函数求的值与已知数据的平方差最小时,未知参数的取值。
  • 方程矩阵形式 $Y = B U$
  • 最小二乘法也就是求 $(Y-BU)^T(Y-BU)$取最小值时的 $U$
  • 求解U的估计值为 $\hat{U} = [\hat{a},\hat{b}]^T = (B^T B)^{-1} B^T Y$,即求出参数 $\hat{a},\hat{b}$ .

然后带入原微分方程,求出$\frac{dx^{(1)}}{dt} + \hat{a}x^{(1)} = \hat{b}$ 的解,即 $\hat{x}^{(1)}(k+1) = (x^{(0)}(1)-\frac{\hat{b}}{\hat{a}})e^{-\hat{b}k}+\frac{\hat{b}}{\hat{a}}$

模型检验

  • 模型检验就是看按照 $\hat{x}^{(1)}(k+1)$ 求得的拟合值和实际值相差大不大。
  • 相对误差检验:$\epsilon(k) = \frac{|x^{(0)}(k)-\hat{x}^{(0)}(k)|}{x^{(0)}(k)}$ ,如果 $\epsilon(k)<0.2$,可认为达到一般要求;如果 $\epsilon(k)<0.1$,即达到较高要求。
  • 级比偏差检验:$\rho(k)=1-\frac{1-0.5a}{1+0.5a} \lambda(k)$,其中级比 $\lambda(k) = \frac{x^{(0)}(k-1)}{x^{(0)}(k)}$,如果 $|\rho(k)|<0.2$,可认为达到一般要求;如果 $|\rho(k)|<0.1$,即达到较高要求。

原始数据的级比检验(在建模最开始进行)

为了确定原始数据使用GM(1,1)模型的可行性,避免白忙活,需要对原始数据进行级比检验:

  • 计算 $\lambda(k) = \frac{x^{(0)}(k-1)}{x^{(0)}(k)},k=2,3,…,n$

如果 $\lambda(k)$ 在区间 $(e^{-\frac{2}{n+1}},e^{\frac{2}{n+2}})$,说明可用GM(1,1)模型。

  • 如果在区间外,可尝试平移变换。也就是给每个数据都加上任意常数 $c$ 后,观察是否在区间内,求解后再减去 $c$ ;如果尝试多次平移变换后始终无法在区间内,说明题目不适合灰色预测。

流程

  • 核心就是最小二乘法求参数,再求微分方程。

  • 在最开始要对原始数据进行检验,在最后要对结果进行检验。

    Flowchart

Insist on writing original high-quality articles. Your support is my biggest motivation.