灰色预测模型-GM(n,m)
灰色预测模型-GM(n,m)
具体推导部分由于本人这次数模用不上这个模型,ai生成之后还没有审核过。
一、背景
1. 数据困境
在数学建模中,我们常遇到数据量少(4~10期)、信息不完整的情况。例如: - 某城市过去5年的GDP数据 - 某新型材料3年的实验测试记录 - 某传染病爆发初期的7天感染人数
传统预测方法(如回归分析、时间序列)需要大量数据支撑,而灰色预测能在小样本,少信息的条件下挖掘规律。
2. 灰色系统理论
- 白色系统:信息完全明确(如电路系统)
- 灰色系统:部分信息已知,部分未知(如经济系统)
- 黑色系统:信息完全未知(如宇宙暗物质)
灰色预测正是针对灰色系统的建模方法,核心思想:通过数据加工处理,将杂乱无章的原始数据整理成规律性较强的序列,然后建立微分方程来预测未来发展趋势。
3.使用场景
下面是清风数学建模的看法:
使用哪种模型进行预测是仁者见 仁智者见智的事情:
(1)数据是以年份度量的非负数据(如果是月份或者季度 数据一定要用我们上一讲学过的时间序列模型);
(2)数据能经过准指数规律的检验(除了前两期外,后面 至少90%的期数的光滑比要低于0.5);
(3)数据的期数较短且和其他数据之间的关联性不强(小于等于10,也不能太短了,比如只有3期数据),要是数据期数较长,一般用传统的时间序列模型比较合适。
二、详解--以GM(1,1)为例
1. 数据预处理
(1) 数据正向化
详见评价类模型里面的相关正向化策略。
(2) 数据检验
- 级比检验:验证数据是否适合GM建模 \[ \sigma(k) = \frac{x^{(0)}(k)}{x^{(0)}(k-1)} \quad (k=2,3,...,n) \] 要求所有级比落在区间 \((e^{-\frac{2}{n+1}}, e^{\frac{2}{n+1}})\) 内
2. 模型构建:四步核心操作
步骤1:一次累加生成(1-AGO)
目的:将波动数据转化为单调增长序列
\[
x^{(1)}(k) = \sum_{i=1}^k x^{(0)}(i) \quad (k=1,2,...,n)
\]
示例:
原始数据 | 2.87 | 3.28 | 3.34 | 3.39 | 3.68 |
---|---|---|---|---|---|
累加序列 | 2.87 | 6.15 | 9.49 | 12.88 | 16.56 |
步骤2:紧邻均值生成(Z序列)
作用:构造微分方程的离散近似
\[
z^{(1)}(k) = 0.5x^{(1)}(k) + 0.5x^{(1)}(k-1) \quad (k=2,3,...,n)
\]
接上例: | Z序列 | - | (2.87+6.15)/2=4.51 | (6.15+9.49)/2=7.82 | ... |
步骤3:建立灰色微分方程
\[ x^{(0)}(k) + a z^{(1)}(k) = b \] 通过最小二乘法求解参数: \[ \begin{bmatrix} a \\ b \end{bmatrix} = (B^T B)^{-1} B^T Y \] 其中: \[ B = \begin{bmatrix} -z^{(1)}(2) & 1 \\ -z^{(1)}(3) & 1 \\ \vdots & \vdots \\ -z^{(1)}(n) & 1 \end{bmatrix}, \quad Y = \begin{bmatrix} x^{(0)}(2) \\ x^{(0)}(3) \\ \vdots \\ x^{(0)}(n) \end{bmatrix} \]
步骤4:求解白化方程
得到连续型微分方程: \[ \frac{dx^{(1)}}{dt} + a x^{(1)} = b \] 其解为: \[ \hat{x}^{(1)}(t) = \left(x^{(0)}(1) - \frac{b}{a}\right)e^{-a(t-1)} + \frac{b}{a} \]
预测值还原: \[ \hat{x}^{(0)}(k) = \hat{x}^{(1)}(k) - \hat{x}^{(1)}(k-1) \]
3. 模型检验
(1) 准指数规律检验(关键!)
- 光滑比:((k) = )
- 通过标准:
- 前两期可放宽
- 后80%期数的((k)<0.5)
(2) 发展系数检验
发展系数(-a) | 适用性 |
---|---|
<0.3 | 中长期预测(5-10期) |
0.3~0.5 | 短期预测(1-3期) |
>0.5 | 需残差修正或更换模型 |
(3) 残差检验
\[ \text{平均相对误差} = \frac{1}{n-1}\sum_{k=2}^n \left|\frac{x^{(0)}(k)-\hat{x}^{(0)}(k)}{x^{(0)}(k)}\right| \] - <10%:高精度 - 10%~20%:合格 - >20%:模型不可信
三、MATLAB实战:长江水质污染预测
1. 数据准备
1 |
|
2. 完整代码实现
1 |
|
3. 运行结果
1 |
|
四、避坑指南
1. 数据量不足4期
- 处理方法:使用三种GM变体(传统/新信息/新陈代谢)求平均
2. 出现负值预测
- 原因:未进行正向化处理
- 解决:检查数据预处理步骤,使用(x' = x - (x) + 1)平移
3. 长期预测失真
- 对策:采用滚动预测,每预测一期就更新模型
4. 如何提高精度
- 残差修正:对预测残差再次建立GM(1,1)模型
- 组合预测:与ARIMA、指数平滑等模型加权结合
五、应用场景推荐
场景 | 适用性 | 示例 |
---|---|---|
经济指标预测 | ★★★★★ | GDP、人口增长率 |
工程技术预测 | ★★★★☆ | 材料疲劳寿命、设备故障率 |
生态环境预测 | ★★★★☆ | 污染物浓度、碳排放趋势 |
突发事件预测 | ★★☆☆☆ | 疫情传播、灾害损失 |