正在加载中...

展开本页目录
算法教程NDGM-非齐次离散灰色

NDGM-非齐次离散灰色

No.112 · 在线教程

NDGM-非齐次离散灰色 的真实核心主要位于:

NDGM-非齐次离散灰色

1. 方法概述

NDGM-非齐次离散灰色 的真实核心主要位于:

  • core/ndgm_calculator.py

从当前项目代码看,这个模块实现的是一个非齐次离散递推模型,而不是传统连续白化微分方程。它的特点是在一阶滞后基础上加入显式时间项,因此可以描述带趋势漂移的序列。

设原始序列为

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

2. NDGM 模型结构

代码中的主方程为

$$ x^{(0)}(k)=-a\,x^{(0)}(k-1)+b+c\,k, \qquad k\ge 2 \tag{2} $$

其中:

  • \(a\) 控制滞后反馈;
  • \(b\) 是常数项;
  • \(c\) 是随时间线性变化的非齐次项。

这也是 “Non-homogeneous Discrete Grey Model” 名称的直接来源。

3. 参数估计

3.1 回归矩阵

源码把参数估计写成最小二乘问题:

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

$$ Y= \begin{bmatrix} x^{(0)}(2)\\ x^{(0)}(3)\\ \vdots\\ x^{(0)}(n) \end{bmatrix} \tag{4} $$

再解出

$$ (a,b,c)^\top=(B^\top B)^{-1}B^\top Y \tag{5} $$

4. 拟合与预测

4.1 样本内拟合

代码采用递推方式重建拟合值:

$$ \hat x^{(0)}(k)=-a\,\hat x^{(0)}(k-1)+b+c\,k \tag{6} $$

4.2 样本外预测

未来 \(H\) 期预测继续沿用同一递推式:

$$ \hat x^{(0)}(n+h)=-a\,\hat x^{(0)}(n+h-1)+b+c(n+h) \tag{7} $$

由于其中显式包含 \(k\),所以 NDGM 比单纯的一阶齐次离散模型更能表达持续上升或下降趋势。

5. 误差指标

5.1 残差与相对误差

代码输出

$$ e(k)=x^{(0)}(k)-\hat x^{(0)}(k) \tag{8} $$

$$ \delta(k)=\frac{e(k)}{x^{(0)}(k)} \tag{9} $$

5.2 MAPE 与 RMSE

同时计算

$$ \mathrm{MAPE}=\frac{100\%}{n}\sum_{k=1}^{n}\left|\frac{e(k)}{x^{(0)}(k)}\right| \tag{10} $$

$$ \mathrm{RMSE}=\sqrt{\frac{1}{n}\sum_{k=1}^{n}e(k)^2} \tag{11} $$

6. 输出结果与论文应用

6.1 Excel 工作表

当前项目导出:

  • RawData
  • Fitted
  • Residuals
  • Forecast
  • Params
  • Metrics
  • Plots
  • Charts

6.2 论文写作表述建议

可写成:

  • 采用 NDGM 非齐次离散灰色模型建立序列递推关系;
  • 通过引入时间项 \(c\,k\) 描述系统演化中的线性漂移趋势;
  • 参数由最小二乘估计,模型精度通过 MAPE 和 RMSE 评价。

7. 实现说明与注意事项

7.1 这是离散递推模型,不是连续灰微分方程

因此论文表述应直接采用式(2)–式(7) 这种离散写法。

7.2 时间项 \(c\,k\) 是该模型区别于齐次模型的核心

若 \(c\) 接近 0,模型会更接近普通的一阶离散递推;若 \(c\) 显著不为 0,则说明序列存在较明显的外生趋势漂移。

8. 论文写作建议

论文中建议明确强调式(2) 中的时间项 \(c\,k\),因为这是 NDGM 与普通齐次离散模型的关键区别。结果部分可展示参数估计表、拟合误差表和预测值表,并结合 \(c\) 的符号与大小解释序列是呈持续上升、持续下降还是较弱漂移趋势。

9. 单篇终审补充

9.1 图题与表题对齐建议

当前 NDGM 模块的真实导出结构已经比较稳定,论文终稿建议直接沿用工作簿页名。实际输出为:

  • RawData
  • Fitted
  • Residuals
  • Forecast
  • Params
  • Metrics
  • Plots
  • Charts

其中 Fitted 页给出样本内拟合,Residuals 单独保留残差与相对误差,Forecast 页给出样本外预测,Params 中是 \(a,b,c\) 与基础参数,Metrics 中是 MAPE(%)RMSE。因此论文主文里的结果表最好对应 ForecastMetrics,而不是再额外虚构“参数估计总表”或“诊断汇总表”。

真实图文件名来自结果工作簿同目录:

  • <结果文件名>_series.png
  • <结果文件名>_residuals.png

因此图题建议写成“NDGM 拟合与预测曲线图”“NDGM 残差图”。PlotsCharts 两个页都只是图表索引清单,不是嵌入图页;正文里引用图时,应该说明图像位于结果目录 PNG 文件,而不是 Excel 图表对象。

9.2 终审说明

当前实现的 NDGM 仍然是一个“轻量导出”版本。它不会把回归矩阵 \(B\) 和向量 \(Y\) 直接落到 Excel 中,而是只输出最终可复核所需的 RawData / Fitted / Residuals / Forecast / Params / Metrics 这些结果页。所以论文里若想展示参数求解细节,应根据公式单独推导,不要写成“软件导出了回归矩阵页”。

另外,这个模块的 repro 链路是后期修正过的,较新的结果目录里 repro_*.py 已使用 repro_inputs/... 相对路径,但旧结果目录里仍可能残留绝对路径脚本。论文或产品说明若提“复现实验脚本”,应以当前修复后的结果目录为准,不要直接用早期目录作证据。

9.3 全量强化补充

本篇终审补充绑定的真实算法目录为 具体的算法3/灰色系统与模糊理论/NDGM-非齐次离散灰色,本次采用的代表性结果目录为 具体的算法3/灰色系统与模糊理论/NDGM-非齐次离散灰色/results/NDGM-非齐次离散灰色分析结果_20260329_171548

该目录下主结果工作簿为 具体的算法3/灰色系统与模糊理论/NDGM-非齐次离散灰色/results/NDGM-非齐次离散灰色分析结果_20260329_171548/ndgm_result_20260329_171548.xlsx,实测工作表为:

  • RawData
  • Fitted
  • Residuals
  • Forecast
  • Params
  • Metrics
  • Plots
  • Charts

这套页名再次说明当前实现采用的是轻量导出结构,重点在拟合、残差、预测和指标,不包含回归矩阵 \(B\) 或求解过程页。论文中若要说明参数求解步骤,应回到公式推导,而不是误写成“结果文件已给出矩阵方程”。

该轮真实图文件为:

  • 具体的算法3/灰色系统与模糊理论/NDGM-非齐次离散灰色/results/NDGM-非齐次离散灰色分析结果_20260329_171548/ndgm_result_20260329_171548_series.png
  • 具体的算法3/灰色系统与模糊理论/NDGM-非齐次离散灰色/results/NDGM-非齐次离散灰色分析结果_20260329_171548/ndgm_result_20260329_171548_residuals.png

因此当前目录绑定的是“主结果曲线图 + 残差图”的双图结构,而不是 Excel 内嵌图表。

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

  • 具体的算法3/灰色系统与模糊理论/NDGM-非齐次离散灰色/results/NDGM-非齐次离散灰色分析结果_20260329_171548/repro_20260329_171548.py
  • 具体的算法3/灰色系统与模糊理论/NDGM-非齐次离散灰色/results/NDGM-非齐次离散灰色分析结果_20260329_171548/repro_inputs/NDGM-非齐次离散灰色_repro_data.csv

脚本里明确写成 INPUT_FILE = 'repro_inputs/NDGM-非齐次离散灰色_repro_data.csv',并在 OUTPUT_FILE 为空时自动落出新的 ndgm_repro_<timestamp>.xlsx。因此这篇文档应把当前目录表述为“主结果工作簿 + 可生成新 repro 工作簿的脚本入口”,而不是把脚本入口直接写成已经执行完成的再生产物。

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

  • 当前主结果目录应写作 具体的算法3/灰色系统与模糊理论/NDGM-非齐次离散灰色/results/NDGM-非齐次离散灰色分析结果_20260329_171548
  • 正文应围绕 RawDataFittedForecastParamsMetricsCharts 来写。
  • 图证应对应 ndgm_result_20260329_171548_series.pngndgm_result_20260329_171548_residuals.png,并把主结果与 repro 脚本区分开。
  • 复现脚本应按 repro_20260329_171548.py + repro_inputs/NDGM-非齐次离散灰色_repro_data.csv 的口径说明。