正在加载中...

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

GM(1,N)-灰色预测

No.109 · 在线教程

GM(1,N)-灰色预测 的真实核心主要位于:

GM(1,N)-灰色预测

1. 方法概述

GM(1,N)-灰色预测 的真实核心主要位于:

  • core/gm1n_calculator.py

从当前项目代码看,这个模块并不是最简单的整数阶 GM(1,N),而是支持:

  1. 目标序列 + 多个驱动变量;
  2. 分数阶 AGO(alpha 不必等于 1);
  3. 可调背景系数 lambda
  4. 后验差比、小误差概率、级比检验;
  5. Excel 与图表导出。

设目标序列为

$$ x_1^{(0)}=\big(x_1^{(0)}(1),x_1^{(0)}(2),\ldots,x_1^{(0)}(n)\big) \tag{1} $$

共有 \(N-1\) 个驱动变量

$$ x_i^{(0)}=\big(x_i^{(0)}(1),x_i^{(0)}(2),\ldots,x_i^{(0)}(n)\big),\qquad i=2,\ldots,N \tag{2} $$

2. 分数阶 AGO 与背景值

2.1 分数阶 AGO

代码支持阶数为 \(\alpha>0\) 的累加生成,而不是只支持 1-AGO。其系数定义为

$$ C(\alpha,m)=\frac{\Gamma(m+\alpha)}{\Gamma(\alpha)\Gamma(m+1)} \tag{3} $$

于是对任意序列 \(x^{(0)}\),分数阶 AGO 为

$$ x^{(\alpha)}(k)=\sum_{t=1}^{k}C(\alpha,k-t)\,x^{(0)}(t) \tag{4} $$

当 \(\alpha=1\) 时,上式退化为普通累加和。

2.2 背景值

对目标序列的 AGO 结果,代码构造背景值

$$ z_1^{(\alpha)}(k)=\lambda x_1^{(\alpha)}(k)+(1-\lambda)x_1^{(\alpha)}(k-1), \qquad k=2,\ldots,n \tag{5} $$

其中 lambda 必须位于 \((0,1)\) 内。

3. GM(1,N) 建模与求解

3.1 基本方程

当前项目的 GM(1,N) 估计方程为

$$ x_1^{(0)}(k)+a z_1^{(\alpha)}(k)=\sum_{i=2}^{N}b_i x_i^{(\alpha)}(k)+u, \qquad k=2,\ldots,n \tag{6} $$

其中:

  • \(a\) 为发展系数;
  • \(b_i\) 为各驱动变量作用系数;
  • \(u\) 为常数项。

3.2 最小二乘估计

代码把它写成矩阵形式:

$$ B= \begin{bmatrix} -z_1^{(\alpha)}(2) & x_2^{(\alpha)}(2) & \cdots & x_N^{(\alpha)}(2) & 1\\ \vdots & \vdots & \ddots & \vdots & \vdots\\ -z_1^{(\alpha)}(n) & x_2^{(\alpha)}(n) & \cdots & x_N^{(\alpha)}(n) & 1 \end{bmatrix}, \quad Y= \begin{bmatrix} x_1^{(0)}(2)\\ \vdots\\ x_1^{(0)}(n) \end{bmatrix} \tag{7} $$

再求解

$$ \theta=(a,b_2,\ldots,b_N,u)^\top=(B^\top B)^{-1}B^\top Y \tag{8} $$

若 \(B\) 矩阵秩不足,代码会直接报错,而不是继续输出不可靠结果。

4. 时间响应与预测

4.1 时间响应式

当前实现的 AGO 域预测公式为

$$ \hat x_1^{(\alpha)}(k)=\left(x_1^{(\alpha)}(1)-\frac{\sum_{i=2}^{N}b_i x_i^{(\alpha)}(1)+u}{a}\right)e^{-a(k-1)}+\frac{\sum_{i=2}^{N}b_i x_i^{(\alpha)}(k)+u}{a} \tag{9} $$

4.2 驱动变量未来值的处理

一个必须单独写清楚的工程细节是:代码在做未来预测时,会把驱动变量未来值按“最后一期保持不变”扩展,即

$$ x_i^{(0)}(n+h)=x_i^{(0)}(n),\qquad h=1,2,\ldots,H \tag{10} $$

然后再对扩展后的驱动变量做 AGO。这一点和“用户自行输入未来外生变量路径”的实现不同。

4.3 IAGO 还原

代码最后通过逆累加得到目标序列的拟合值与预测值:

$$ \hat x_1^{(0)}=\mathrm{IAGO}\big(\hat x_1^{(\alpha)}\big) \tag{11} $$

当 \(\alpha=1\) 时,就是普通相邻差分恢复。

5. 误差诊断

5.1 残差与相对误差

设拟合值为 \(\hat x_1^{(0)}(k)\),则

$$ e(k)=\hat x_1^{(0)}(k)-x_1^{(0)}(k) \tag{12} $$

$$ \delta(k)=\frac{e(k)}{x_1^{(0)}(k)} \tag{13} $$

5.2 后验差比与小误差概率

源码计算

$$ C=\frac{S_e}{S_x} \tag{14} $$

$$ P=\frac{1}{n}\sum_{k=1}^{n}\mathbf{1}\Big(|e(k)-\bar e|<0.6745\,S_x\Big) \tag{15} $$

其中 \(S_e\) 为残差标准差,\(S_x\) 为原序列标准差。

5.3 级比检验

项目还会检查原序列级比:

$$ \lambda(k)=\frac{x_1^{(0)}(k-1)}{x_1^{(0)}(k)} \tag{16} $$

并与理论区间

$$ \left[e^{-2/(n+1)},\ e^{2/(n+1)}\right] \tag{17} $$

进行比较。

6. 输出结果与论文应用

6.1 Excel 工作表

当前代码会导出:

  • 原始数据
  • AGO
  • B矩阵
  • Y向量
  • 拟合
  • 预测
  • 诊断
  • 综合输出
  • 图表清单

6.2 论文写作表述建议

在论文中可直接写成:

  • 采用分数阶 GM(1,N) 对目标序列进行预测,利用驱动变量的 AGO 序列建立灰色微分近似模型;
  • 参数通过最小二乘估计得到,模型精度通过后验差比 \(C\)、小误差概率 \(P\) 和级比检验评估;
  • 对未来驱动变量采用“最后一期保持”策略进行外推。

7. 实现说明与注意事项

7.1 这不是只支持整数阶的 GM(1,N)

当前项目最重要的实现增强,就是支持 \(\alpha\) 分数阶 AGO。

7.2 外生变量未来路径被固定为末值延拓

因此预测结果会显著受到“最后一期外生变量水平”的影响,若真实未来驱动变量变化较大,用户需要谨慎解释。

7.3 参数 \(a\) 过小时不会自动回退

与某些灰色模型实现不同,这里若 \(a\) 过小会直接报不稳定,而不是继续硬算,这属于更保守的工程处理。

8. 论文写作建议

论文中建议把目标序列、驱动变量、分数阶 AGO 参数 \(\alpha\) 和背景系数 \(\lambda\) 明确列出。结果部分通常应包含参数估计表、拟合与预测结果表、后验差比 \(C\)、小误差概率 \(P\) 和级比检验结果表。若未来驱动变量采用“末值保持”策略,也应在方法说明里单独注明。

9. 单篇终审补充

9.1 图题与表题对齐建议

  • 原始数据 表可写为:表X GM(1,N) 原始输入数据。
  • AGO 表可写为:表X GM(1,N) 分数阶 AGO 结果。
  • B矩阵 表可写为:表X GM(1,N) 参数估计设计矩阵。
  • Y向量 表可写为:表X GM(1,N) 参数估计响应向量。
  • 拟合 表可写为:表X GM(1,N) 拟合结果。
  • 预测 表可写为:表X GM(1,N) 未来预测结果。
  • 诊断 表可写为:表X GM(1,N) 模型诊断结果。
  • 综合输出 表可写为:表X GM(1,N) 参数与核心指标汇总。
  • 图表清单 表可写为:表X GM(1,N) 图表索引与路径。

9.2 终审说明

  • 当前实现支持分数阶 AGO,因此正文不应把它写成只支持整数阶的传统 GM(1,N)。
  • 未来驱动变量采用“末值保持”延拓是当前实现的重要工程口径,结果解释必须明确这一点,否则预测场景会被误解成已知未来外生路径。
  • 文档里列出的 原始数据 / AGO / B矩阵 / Y向量 / 拟合 / 预测 / 诊断 / 综合输出 / 图表清单 是适合论文落稿的真实结果口径,正文可直接按这组表来组织。
  • 当前实现对 \(a\) 过小时采取保守处理而非自动回退,因此论文若遇到不稳定情形,应如实说明模型不稳定,而不是补写代码里并不存在的兜底公式。

9.3 全量强化补充

本次全量强化绑定的真实结果目录为 具体的算法3/灰色系统与模糊理论/GM(1,N)-灰色预测/results/GM(1,N)-灰色预测分析结果_20260329_171539。主结果文件可采用 GM1N_results_20260329_171540.xlsx,其实际工作表为 原始数据AGOB矩阵Y向量拟合预测诊断综合输出图表清单Charts

当前真实图文件位于 GM1N_plots_20260329_171540/,包括 fit_curve.pngresiduals.png。因此正文中的图题应直接对应“GM(1,N) 拟合/预测曲线图”和“GM(1,N) 残差图”,不宜继续泛写成未落盘的图名。

复现脚本为 repro_20260329_171539.py,输入口径为 INPUT_FILE = 'repro_inputs/gm1n_ui_input.xlsx',参数中显式包含 alpha = 1.0lambda = 0.5forecast_horizon = 1target_col = '目标序列'exogenous_cols = ['驱动X1', '驱动X2']。因此这篇文档在论文附录中应把分数阶参数、背景系数和外生驱动列名称一并写出,而不是只笼统写“使用 GM(1,N) 预测”。

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

  • 当前主结果目录应写作 具体的算法3/灰色系统与模糊理论/GM(1,N)-灰色预测/results/GM(1,N)-灰色预测分析结果_20260329_171539
  • 正文应围绕 原始数据AGOB矩阵Y向量拟合预测诊断综合输出图表清单Charts 来写。
  • 图证应对应 fit_curve.pngresiduals.png,并把分数阶 AGO、末值延拓和诊断误差分开说明。
  • 复现脚本应按 repro_20260329_171539.py + repro_inputs/gm1n_ui_input.xlsx 的口径说明。