正在加载中...

展开本页目录
算法教程灰色预测GM(1,1)系统

灰色预测GM(1,1)系统

No.001 · 在线教程

灰色预测 GM(1,1)(Grey Model, First-order One-variable)是一类面向小样本与不完全信息系统的时间序列预测方法。该方法通过一次累加生成削弱原始序列的随机波动,再以一阶灰微分方程刻画系统演化规律,适合样本规模较小、总体变化趋势较清晰的预测问…

灰色预测 GM(1,1)

1. 方法概述

灰色预测 GM(1,1)(Grey Model, First-order One-variable)是一类面向小样本与不完全信息系统的时间序列预测方法。该方法通过一次累加生成削弱原始序列的随机波动,再以一阶灰微分方程刻画系统演化规律,适合样本规模较小、总体变化趋势较清晰的预测问题。在工程与管理研究中,GM(1,1)常用于中短期趋势判断,尤其适用于难以获得长时序数据的场景。

2. 模型构建

设原始序列为

$$ X^{(0)}=\left(x^{(0)}(1),x^{(0)}(2),\ldots,x^{(0)}(n)\right) \tag{2.1} $$

对其进行一次累加生成(AGO)得到

$$ x^{(1)}(k)=\sum_{i=1}^{k}x^{(0)}(i),\quad k=1,2,\ldots,n \tag{2.2} $$

进一步构造背景值序列

$$ z^{(1)}(k)=\frac{1}{2}\left(x^{(1)}(k-1)+x^{(1)}(k)\right),\quad k=2,3,\ldots,n \tag{2.3} $$

GM(1,1) 的离散形式可写为

$$ x^{(0)}(k)+a z^{(1)}(k)=b,\quad k=2,3,\ldots,n \tag{2.4} $$

$$ B= \begin{bmatrix} -z^{(1)}(2) & 1 \\ -z^{(1)}(3) & 1 \\ \vdots & \vdots \\ -z^{(1)}(n) & 1 \end{bmatrix}, \qquad Y= \begin{bmatrix} x^{(0)}(2) \\ x^{(0)}(3) \\ \vdots \\ x^{(0)}(n) \end{bmatrix} \tag{2.5} $$

参数向量 \(\hat{\theta}=[a,b]^T\) 由最小二乘估计得到

$$ \hat{\theta}=(B^TB)^{-1}B^TY \tag{2.6} $$

3. 预测表达式与还原

依据灰微分方程的时间响应形式,累加域预测值为

$$ \hat{x}^{(1)}(k)=\left(x^{(0)}(1)-\frac{b}{a}\right)e^{-a(k-1)}+\frac{b}{a},\quad k=1,2,\ldots,n+m \tag{3.1} $$

其中 \(m\) 为外推步数。将累加序列还原至原始尺度后,得到

$$ \hat{x}^{(0)}(1)=x^{(0)}(1),\qquad \hat{x}^{(0)}(k)=\hat{x}^{(1)}(k)-\hat{x}^{(1)}(k-1),\ k\ge 2 \tag{3.2} $$

由此可同时获得样本区间拟合值与未来时期预测值,并用于后续误差评估与趋势解释。

4. 精度评价

模型精度通常结合绝对误差、相对误差以及整体拟合优度进行综合判断。设真实值为 \(x_i\)、拟合值为 \(\hat{x}_i\),则均方误差与平均绝对误差分别表示为

$$ \mathrm{MSE}=\frac{1}{n}\sum_{i=1}^{n}(x_i-\hat{x}_i)^2 \tag{4.1} $$

$$ \mathrm{MAE}=\frac{1}{n}\sum_{i=1}^{n}|x_i-\hat{x}_i| \tag{4.2} $$

在灰色系统研究中,后验差比 \(C\) 与小误差概率 \(P\) 也是常用判别量。一般而言,\(C\) 越小且 \(P\) 越大,说明模型对原序列趋势的刻画越稳定,预测可信度越高。

5. 结果解释

GM(1,1) 的核心价值在于以较低数据成本提取序列的主导趋势。当原序列呈单调增长或衰减特征时,模型通常能给出平滑且方向一致的预测曲线;当序列存在显著突变或高频震荡时,拟合偏差可能增大,因此更适合中短期判断与滚动更新。实际应用中,可将预测值、残差特征与精度指标联合解读,以提高结论的稳健性与解释力。

6. 输出结果结构及写作对应关系

程序每次运行后会在 results/ 下创建独立时间戳目录,目录内包含一个 Excel 结果文件与四张图像文件。Excel 文件固定包含 原始序列累加生成序列紧邻均值序列矩阵 B向量 Y参数估计累加预测值还原预测值预测结果模型评价参数设置可视化图表图表说明与论文写作建议 等工作表,能够完整覆盖“建模输入—参数估计—预测输出—精度评价—图形展示”的全过程。

原始序列累加生成序列 可用于说明数据平滑化过程,紧邻均值序列矩阵 B向量 Y参数估计 用于支撑参数求解过程的可追溯性,累加预测值还原预测值 对应模型在累加域与原始域的预测结果,预测结果 用于集中展示真实值、预测值、残差和相对误差,模型评价 用于呈现误差指标与精度等级,参数设置 用于保留本次运行的关键设定。写作时可将参数与评价表放在方法与结果主文,将矩阵与中间过程表放在附录,以形成完整证据链。

目录下四张图分别为预测对比图、残差图、相对误差图和 AGO 对比图。预测对比图适合放在结果总览部分用于展示趋势一致性,残差图和相对误差图适合放在误差分析部分用于说明偏差分布与误差区间,AGO 对比图适合放在方法解释部分用于说明累加生成后的平滑效果。正文组织上建议先表后图,即先给出 预测结果模型评价,再插入图形强化结论表达。

7. 与程序实现一致的边界处理说明

程序对输入数据设置了明确约束:样本点数不少于 4、数据列必须为数值且为正、预测步数必须大于 0。若输入不满足条件,程序会直接终止计算并返回错误信息。模型评价中后验差比与小误差概率用于精度分级,当样本方差退化时相关指标按稳健规则处理。上述约束意味着 GM(1,1) 更适用于短样本、正值、趋势较稳定的数据;若序列包含剧烈波动或结构突变,应在结论中说明模型适用边界并结合滚动更新或对比模型验证结果。

8. 实现说明与注意事项

当前项目中的实现并不只是给出一组预测值,而是按照“中间过程可追溯”的思路把建模过程完整落盘。核心代码位于 具体的算法/灰色预测GM11/core/gm11_calculator.py,主要包含以下几点:

  1. 程序支持以 Excel 路径、DataFrameSeries 作为输入;若传入 Excel 或 DataFrame,默认读取第 2 列作为建模数据,第 1 列仅用于时间标签或顺序标识。
  2. 每次运行会在 results/ 下新建独立目录,目录名采用 输入文件名_时间戳 的形式;若无法从输入中解析文件名,则回退为 gm11_result_时间戳
  3. 当发展系数 \(a\) 非常接近 0 时,代码不会继续套用指数时间响应,而是回退到线性形式 \(\hat{x}^{(1)}(k)=x^{(0)}(1)+bk\),以避免数值不稳定。
  4. 结果 Excel 中除中间矩阵表外,还会额外生成 预测结果模型评价参数设置可视化图表图表说明与论文写作建议 等工作表。
  5. 图像文件固定生成 4 张:*_prediction.png*_residual.png*_error.png*_ago.png,分别对应预测对比、残差、相对误差与 AGO 对比。

因此,这个模块的真实定位更接近“可复核的灰色预测分析系统”,而不是只输出单一预测序列的最简计算脚本。

9. 论文写作建议

若需直接用于论文,可按“模型设定 -> 参数估计 -> 预测结果 -> 精度检验 -> 方法边界”组织正文。正文主表建议保留 预测结果模型评价,附录中保留 矩阵 B向量 Y参数估计,以增强方法可复核性。

可直接改写使用的结果段落示例如下:

“本文采用 GM(1,1) 模型对样本序列进行趋势预测。结果表明,模型在样本区间内能够较好拟合原始数据变化趋势,预测值与实际值整体保持一致;从误差指标看,均方误差、平均绝对误差以及后验差比和小误差概率均表明模型具有一定预测能力。结合预测对比图、残差图和相对误差图可知,该模型更适用于样本量较小、变化趋势相对平稳的序列,对突发波动较强的数据仍需结合滚动更新或其他模型进一步验证。”

10. 单篇终审补充

10.1 图题与表题对齐建议

这篇文档对应的并不是 具体的算法3 下的新灰色系统模板,而是旧目录 具体的算法/灰色预测GM11。因此论文终稿若要与真实程序一致,应按该旧版程序的真实导出结构来写。当前核心导出工作表为:

  • 原始序列
  • 累加生成序列
  • 紧邻均值序列
  • 矩阵 B
  • 向量 Y
  • 参数估计
  • 累加预测值
  • 还原预测值
  • 预测结果
  • 模型评价
  • 参数设置
  • 可视化图表
  • 图表说明与论文写作建议

其中 预测结果 是最适合放入正文主表的结果页,模型评价 给出精度指标与等级,参数估计矩阵 B向量 Y 更适合附录或方法补充材料。可视化图表 这一页在不同引擎下可能是直接嵌图,也可能退化为图片路径占位,因此论文里更稳妥的做法是直接引用结果目录下的 PNG 文件。

真实图文件名固定为:

  • <结果目录基名>_prediction.png
  • <结果目录基名>_residual.png
  • <结果目录基名>_error.png
  • <结果目录基名>_ago.png

因此图题建议分别写成“GM(1,1) 预测结果对比图”“GM(1,1) 残差分析图”“GM(1,1) 相对误差图”“GM(1,1) AGO 对比图”,不要写成不存在的 series.png 或“标准化图”。

10.2 终审说明

这一旧版 GM(1,1) 模块的一个重要特点是:它不仅导出结果,还会附带 图表说明与论文写作建议 工作表,里面已经写入不同图表可用于论文中的用途说明与示例表述。因此这篇算法文档在论文终稿里可以明确写成“程序同时提供图表用途说明页”,这一点和后续很多只输出 Charts 路径索引的新模块不同。

另一个需要明确的点是 repro 机制。这个旧模块在 UI 里提供的是 gm11_core_repro_*.py 核心复现脚本,脚本默认直接引用原始 DATA_FILE 路径,并不会像新框架那样统一复制到 repro_inputs/ 目录。因此论文或软件说明里不能把它写成“完全采用新框架相对路径 repro_inputs 复现”。对这篇 GM11,更准确的说法是“提供核心算法复现脚本,可在独立 Python 环境中重算 GM(1,1) 参数与指标,但路径可移植性弱于新框架模块”。

10.3 全量强化补充

本篇终审补充绑定的真实算法目录为 具体的算法/灰色预测GM11。由于该旧模块部分结果目录为空壳,不能随意挑选最新时间戳目录。本次采用的代表性非空结果目录为 具体的算法/灰色预测GM11/results/gm11_sample_20260329_163636

该目录当前主结果工作簿为:

  • gm11_sample_20260329_163636.xlsx

实测工作表为:

  • 原始序列
  • 累加生成序列
  • 紧邻均值序列
  • 矩阵 B
  • 向量 Y
  • 参数估计
  • 累加预测值
  • 还原预测值
  • 预测结果
  • 模型评价
  • 参数设置
  • 可视化图表
  • 图表说明与论文写作建议

这说明旧版 GM11 的证据链仍然是完整的中间过程导出体系,而不是只给预测值和指标。

当前目录中的真实图文件为:

  • gm11_sample_20260329_163636_prediction.png
  • gm11_sample_20260329_163636_residual.png
  • gm11_sample_20260329_163636_error.png
  • gm11_sample_20260329_163636_ago.png

因此这一轮真实图证据固定是“预测对比图、残差图、相对误差图、AGO 对比图”四张,不存在新框架常见的 series.pngcharts/ 子目录方案。

复现实物方面,该目录实际包含:

  • 具体的算法/灰色预测GM11/results/gm11_sample_20260329_163636/gm11_core_repro_20260329_163637.py

脚本中明确写成 DATA_FILE = '../../uploads/gm11_sample.xlsx'。这再次证明 GM11 的复现口径仍是“脚本回指算法目录 uploads/ 样本文件”,而不是把输入副本复制到结果目录或 repro_inputs/ 子目录中。因此这篇不能按新框架相对输入副本口径书写。

11. 软件实现核查补充(2026-07)

11.1 当前软件实现口径

本软件当前对应的源码目录为 具体的算法/灰色预测GM11,核心计算类为 core/gm11_calculator.py 中的 GM11Calculator。软件实现的是标准 GM(1,1) 单变量灰色预测流程:读取一个数值序列,执行一次累加生成、背景值构造、最小二乘估计参数 ab,再生成样本期拟合值和未来期预测值。

需要注意的是,当前界面只把第 2 列作为预测数值序列使用,第 1 列主要用于时间/对象标识展示;如果原始文件包含更多列,额外列不会进入 GM(1,1) 核心计算。因此本软件口径是“单变量序列预测”,不是多变量灰色模型。

11.2 输入数据与界面参数

软件上传页支持 .xlsx/.xls/.csv,示例数据位于 uploads/gm11_sample.xlsxuploads/gm11_sample.csv。数据至少需要两列:第 1 列为时间标识,第 2 列为待预测数值。数值列会被转换为数值类型,若存在空值或非数值内容,核心计算会报错。

界面真实参数包括:

  • 时间类型:年份、月份、天,用于生成预测结果中的时间标签。
  • 起始时间:年份模式只使用起始年份;月份模式使用起始年份和月份;天模式使用年月日。
  • 预测步数:界面范围为 1 到 100,默认值为 5。
  • 进行模型评估:勾选后导出模型评价指标。
  • 保存结果到Excel:勾选后写入结果目录下的 .xlsx
  • 绘制结果图表:勾选后生成预测、残差、误差和累加序列图。

11.3 输出文件与结果阅读顺序

程序每次运行会在 results/ 下创建独立目录,目录名通常类似 gm11_result_YYYYMMDD_HHMMSS。Excel 文件的主要工作表包括:原始序列累加生成序列紧邻均值序列矩阵 B向量 Y参数估计累加预测值还原预测值预测结果模型评价参数设置可视化图表图表说明与论文写作建议

阅读结果时建议先看 预测结果,确认样本期拟合和未来期预测;再看 模型评价 判断拟合误差;最后结合 参数估计矩阵 B向量 Y 解释模型求解过程。PNG 图表通常包含 _prediction.png_residual.png_error.png_ago.png,以本次结果目录实际生成文件为准。

11.4 复现与源码对应关系

结果页提供“打开结果目录”“打开结果”“导出复现代码”。按当前 ui/results_widget.py 源码,导出复现代码时会尽量复制本次输入到 repro_inputs/,并生成可独立运行的 GM(1,1) 核心复现脚本;但旧历史结果目录中可能仍保留直接回指 uploads/ 的旧式复现脚本。正式说明时应区分“当前源码行为”和“历史结果目录实物”。文档中的理论公式与以下源码对应:

  • core/gm11_calculator.py:GM(1,1) 参数估计、预测、评价、绘图和 Excel 导出。
  • ui/upload_widget.py:文件上传、示例数据、时间类型和预测步数配置。
  • ui/results_widget.py:开始计算、结果展示、打开结果和导出复现代码。
  • utils/excel_handler.py:通用 Excel 写入辅助。

11.5 使用边界

GM(1,1) 更适合样本量较小、趋势较清晰的单变量序列。若序列强周期、强突变、随机波动很大,或需要多个解释变量共同建模,应谨慎解释预测值。当前软件不会自动做异常点修正或多变量建模,用户应先确认输入序列的趋势合理性。