NDGM-非齐次离散灰色
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 工作表
当前项目导出:
RawDataFittedResidualsForecastParamsMetricsPlotsCharts
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 模块的真实导出结构已经比较稳定,论文终稿建议直接沿用工作簿页名。实际输出为:
RawDataFittedResidualsForecastParamsMetricsPlotsCharts
其中 Fitted 页给出样本内拟合,Residuals 单独保留残差与相对误差,Forecast 页给出样本外预测,Params 中是 \(a,b,c\) 与基础参数,Metrics 中是 MAPE(%) 与 RMSE。因此论文主文里的结果表最好对应 Forecast 与 Metrics,而不是再额外虚构“参数估计总表”或“诊断汇总表”。
真实图文件名来自结果工作簿同目录:
<结果文件名>_series.png<结果文件名>_residuals.png
因此图题建议写成“NDGM 拟合与预测曲线图”“NDGM 残差图”。Plots 与 Charts 两个页都只是图表索引清单,不是嵌入图页;正文里引用图时,应该说明图像位于结果目录 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,实测工作表为:
RawDataFittedResidualsForecastParamsMetricsPlotsCharts
这套页名再次说明当前实现采用的是轻量导出结构,重点在拟合、残差、预测和指标,不包含回归矩阵 \(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。 - 正文应围绕
RawData、Fitted、Forecast、Params、Metrics、Charts来写。 - 图证应对应
ndgm_result_20260329_171548_series.png与ndgm_result_20260329_171548_residuals.png,并把主结果与 repro 脚本区分开。 - 复现脚本应按
repro_20260329_171548.py + repro_inputs/NDGM-非齐次离散灰色_repro_data.csv的口径说明。