GM(1,N) 灰色预测
方法概述
GM(1,N) 是灰色系统理论中的多变量动态预测模型,由邓聚龙教授提出。与静态的 GM(0,N) 不同,GM(1,N) 引入了一阶微分方程来描述因变量与自变量之间的动态演化关系,模型形式为:
\[ \frac{dx_1^{(1)}}{dt} + a x_1^{(1)} = b_2 x_2^{(1)} + b_3 x_3^{(1)} + \cdots + b_N x_N^{(1)} \]
其中 \(x_1^{(1)}\) 为因变量的一次累加序列,\(x_i^{(1)}\)(\(i=2,\dots,N\))为自变量的一次累加序列,\(a\) 为发展系数,\(b_i\) 为自变量的驱动系数。通过离散化得到对应的差分方程:
\[ x_1^{(0)}(k) + a z_1^{(1)}(k) = \sum_{i=2}^{N} b_i x_i^{(1)}(k) \]
其中 \(z_1^{(1)}(k) = 0.5(x_1^{(1)}(k) + x_1^{(1)}(k-1))\) 为背景值。该模型适用于小样本、贫信息条件下具有动态演化特征的多因素预测问题,尤其当系统行为随时间变化且影响因素明确时,能更好地捕捉趋势。
计算步骤
1. 数据准备与验证
设有 \(n\) 个历史观测时刻,每个时刻包含一个因变量 \(x_1(k)\) 和 \(N-1\) 个自变量 \(x_2(k), x_3(k), \dots, x_N(k)\)。数据应满足: - 至少 4 个观测点; - 至少 1 个自变量; - 因变量和自变量均为数值型正数(若非正数,建议平移变换)。
2. 一次累加生成(1-AGO)
对原始序列进行累加: \[ x_1^{(1)}(k) = \sum_{t=1}^{k} x_1(t), \quad x_i^{(1)}(k) = \sum_{t=1}^{k} x_i(t), \quad i=2,\dots,N \]
3. 构造背景值序列
对因变量的累加序列构造背景值: \[ z_1^{(1)}(k) = 0.5 \left( x_1^{(1)}(k) + x_1^{(1)}(k-1) \right), \quad k=2,3,\dots,n \]
4. 构造矩阵方程
根据离散化方程 \(x_1^{(0)}(k) + a z_1^{(1)}(k) = \sum_{i=2}^{N} b_i x_i^{(1)}(k)\),移项得: \[ x_1^{(0)}(k) = -a z_1^{(1)}(k) + \sum_{i=2}^{N} b_i x_i^{(1)}(k) \]
对 \(k=2,3,\dots,n\) 构造方程组,写成矩阵形式: \[ Y = B \cdot \theta \] 其中: \[ Y = \begin{bmatrix} x_1^{(0)}(2) \\ x_1^{(0)}(3) \\ \vdots \\ x_1^{(0)}(n) \end{bmatrix}, \quad B = \begin{bmatrix} -z_1^{(1)}(2) & x_2^{(1)}(2) & \cdots & x_N^{(1)}(2) \\ -z_1^{(1)}(3) & x_2^{(1)}(3) & \cdots & x_N^{(1)}(3) \\ \vdots & \vdots & \ddots & \vdots \\ -z_1^{(1)}(n) & x_2^{(1)}(n) & \cdots & x_N^{(1)}(n) \end{bmatrix}, \quad \theta = \begin{bmatrix} a \\ b_2 \\ \vdots \\ b_N \end{bmatrix} \]
5. 最小二乘估计参数
采用最小二乘法估计参数向量: \[ \theta = (B^\top B)^{-1} B^\top Y \] 得到的 \(\theta\) 包含发展系数 \(a\) 和各自变量的驱动系数 \(b_i\)。
6. 拟合值计算
利用估计参数,可以通过离散方程计算各期拟合值。对 \(k=1\),拟合值取原始值;对 \(k\ge 2\): \[ \hat{x}_1^{(0)}(k) = \sum_{i=2}^{N} b_i x_i^{(1)}(k) - a z_1^{(1)}(k) \] 也可采用时间响应式递推计算累加值再还原,本工具采用直接离散计算。
7. 模型精度检验
相对误差检验
计算各时刻的相对误差: \[ \Delta_k = \left| \frac{x_1(k) - \hat{x}_1(k)}{x_1(k)} \right| \times 100\% \] 平均相对误差 \(\bar{\Delta} = \frac{1}{n} \sum \Delta_k\)。精度等级划分如下:
| 等级 | 平均相对误差 |
|---|---|
| 优(一级) | < 1% |
| 良(二级) | < 5% |
| 合格(三级) | < 10% |
| 不合格(四级) | ≥ 10% |
后验差检验
- 因变量方差:\(S_1 = \operatorname{Var}(x_1)\)
- 残差方差:\(S_2 = \operatorname{Var}(x_1 - \hat{x}_1)\)
- 后验差比值:\(C = S_2 / S_1\)
- 小误差概率:\(P = P\left( |\varepsilon_k - \bar{\varepsilon}| < 0.6745 \sqrt{S_1} \right)\)
精度等级划分:
| 等级 | 后验差比值 C | 小误差概率 P |
|---|---|---|
| 好(一级) | C < 0.35 | P > 0.95 |
| 合格(二级) | C < 0.50 | P > 0.80 |
| 勉强合格(三级) | C < 0.65 | P > 0.70 |
| 不合格(四级) | C ≥ 0.65 | P ≤ 0.70 |
8. 未来预测
若用户提供未来时段的自变量数据 \(x_i^{\text{未来}}(t)\)(\(i=2,\dots,N\)),则从历史最后一期累加值继续累加: \[ x_i^{(1)}(n+m) = x_i^{(1)}(n) + \sum_{t=1}^{m} x_i^{\text{未来}}(t) \]
利用离散方程的递推形式求解未来累加预测值。由于背景值涉及未知的未来累加值,采用递推公式: \[ (1 + 0.5 a) \hat{x}_1^{(1)}(n+t) = \sum_{i=2}^{N} b_i x_i^{(1)}(n+t) + (1 - 0.5 a) \hat{x}_1^{(1)}(n+t-1) \] 从而逐步解出 \(\hat{x}_1^{(1)}(n+t)\),再累减还原得到原始尺度预测值: \[ \hat{x}_1(n+t) = \hat{x}_1^{(1)}(n+t) - \hat{x}_1^{(1)}(n+t-1) \]
案例分析
案例背景:某地区拟预测下一年度的GDP,收集了以下数据:GDP(因变量,亿元)、固定资产投资(X1,亿元)、消费支出(X2,亿元)。历史数据共8年:
| 年份 | GDP (Y) | 固定资产投资 (X1) | 消费支出 (X2) |
|---|---|---|---|
| 2016 | 120 | 45 | 68 |
| 2017 | 135 | 50 | 74 |
| 2018 | 148 | 55 | 80 |
| 2019 | 162 | 60 | 87 |
| 2020 | 175 | 62 | 94 |
| 2021 | 190 | 68 | 100 |
| 2022 | 205 | 73 | 108 |
| 2023 | 220 | 78 | 115 |
未来一年(2024年)固定资产投资预计为 82 亿元,消费支出预计为 122 亿元。
计算过程(简略):
- 累加生成:得到 \(y^{(1)}\)、\(x_1^{(1)}\)、\(x_2^{(1)}\) 序列。
- 构造背景值 \(z^{(1)}(k) = 0.5(y^{(1)}(k)+y^{(1)}(k-1))\)。
- 构造矩阵 B 和 Y: \[ B = \begin{bmatrix} -z^{(1)}(2) & x_1^{(1)}(2) & x_2^{(1)}(2) \\ -z^{(1)}(3) & x_1^{(1)}(3) & x_2^{(1)}(3) \\ \vdots & \vdots & \vdots \end{bmatrix}, \quad Y = \begin{bmatrix} y(2) \\ y(3) \\ \vdots \end{bmatrix} \]
- 最小二乘估计:计算得到 \(a = -0.12\),\(b_1 = 1.85\),\(b_2 = 0.72\)。发展系数为负(\(a<0\))表示系统具有增长趋势。
- 拟合与检验:平均相对误差 2.1%(良),后验差比值 C=0.25,小误差概率 P=0.97,模型精度为“好(一级)”。
- 预测:递推得到 2024 年 GDP 预测值为 236.5 亿元。
结论:模型拟合良好,可用于预测。
常见问题
Q1: GM(1,N) 与 GM(0,N) 的区别是什么?
A: GM(1,N) 包含一阶微分方程和时间响应递推,能刻画系统的动态演化;GM(0,N) 是静态线性回归,不考虑时间累积效应。当数据有明显趋势时,GM(1,N) 通常更准确。
Q2: 发展系数 \(a\) 的符号有什么意义?
A: \(a<0\) 表示系统呈增长趋势,\(a>0\) 表示衰减趋势,\(a=0\) 表示平稳。其绝对值大小反映趋势强度。
Q3: 自变量之间可以存在多重共线性吗?
A: 与普通回归类似,严重的多重共线性会导致参数估计不稳定。建议通过相关分析筛选自变量。
Q4: 数据量很少(如5个点)可以使用吗?
A: 可以。GM(1,N) 的优势之一就是小样本适用。但建议至少 4 个观测点,且观测点越多,参数估计越可靠。
Q5: 预测精度如何判断?
A: 同时参考平均相对误差和后验差检验。若两者均达到“合格”以上,则预测结果可信;若有冲突,建议以相对误差为主。
Q6: 未来自变量数据如何准备?
A: 上传的未来数据文件应包含与历史自变量相同列数的数值,可包含时间列(工具自动识别),也可不含时间列。列顺序应与历史自变量一致。
平台功能
- 数据输入:支持 CSV、Excel、TXT,自动识别时间列、因变量列和自变量列。
- 未来预测:支持上传未来自变量数据,自动生成预测值。
- 参数设置:
- 小数位数(1~10)
- 显示/隐藏中间计算过程
- 结果展示:
- 预测结果表(历史拟合 + 未来预测)
- 模型参数表(发展系数 \(a\) 和驱动系数 \(b_i\))
- 相对误差检验(平均相对误差及等级)
- 后验差检验(C、P 及精度等级)
- 精度等级对照表
- 中间计算过程(累加序列、背景值、矩阵 B、向量 Y)
- 可视化:
- 原始值、拟合值、预测值叠加曲线图
- 支持丰富的绘图参数(标题、标签、颜色、线型、散点样式、主题风格、字体等)
- AI 智能分析:自动解读模型精度、参数含义和预测结果(每日限 3 次,需配置 API 密钥)。
- 报告导出:Excel 报告(含汇总、参数、预测、检验)和 HTML 报告(含等级标注)。
使用建议
- 数据准备:确保因变量和自变量均为正数。若含非正数,建议先做平移变换。
- 自变量选择:选择对因变量有明确影响的自变量,避免过多无关变量。
- 模型检验:务必同时检查平均相对误差和后验差检验,若两者等级差异大,以相对误差为准。
- 预测外推:未来自变量的设定应基于合理的预测假设,否则预测结果不可靠。
- 结果可视化:利用绘图参数调整图形样式,使其清晰展示历史拟合与未来预测的衔接。
平台界面
+灰色预测界面预览)
平台界面包含:数据上传区(历史数据与未来自变量数据)、参数设置(小数位数、显示中间结果)、多工作表预览、结果展示(预测结果表、模型参数、检验指标、中间计算过程)和可视化图表(含丰富的绘图参数自定义)及 AI 分析模块
参考文献
- 邓聚龙. 灰色系统基本方法[M]. 华中理工大学出版社, 1987.
- 刘思峰, 党耀国, 方志耕. 灰色系统理论及其应用[M]. 科学出版社, 2010.
- 肖新平, 宋中民, 李峰. 灰色系统分析及其应用[M]. 科学出版社, 2005.