Verhulst-灰色 Verhulst
Verhulst-灰色 Verhulst 的真实核心主要位于:
Verhulst-灰色 Verhulst
1. 方法概述
Verhulst-灰色 Verhulst 的真实核心主要位于:
core/calculator.py
从当前源码看,这个模块是标准 Verhulst 灰色模型的工程化实现,适合描述具有饱和、抑制或“S 型”演化趋势的序列。项目流程为:
- 读取时间列与数值列;
- 构造 AGO 序列与背景值;
- 最小二乘估计 Verhulst 参数 \(a,b\);
- 用 Verhulst 时间响应式进行拟合与预测;
- 输出残差、相对误差、后验差比、小误差概率和级比检验。
设原始序列为
$$ x^{(0)}=\big(x^{(0)}(1),x^{(0)}(2),\ldots,x^{(0)}(n)\big) \tag{1} $$
2. AGO 与参数估计
2.1 AGO
代码先做一次累加生成:
$$ x^{(1)}(k)=\sum_{t=1}^{k}x^{(0)}(t) \tag{2} $$
2.2 背景值
背景值使用可调系数 gm_alpha:
$$ z^{(1)}(k)=\alpha x^{(1)}(k)+(1-\alpha)x^{(1)}(k-1), \qquad k=2,\ldots,n \tag{3} $$
2.3 Verhulst 回归方程
当前代码把参数估计写成
$$ x^{(0)}(k)+a z^{(1)}(k)=b\big(z^{(1)}(k)\big)^2 \tag{4} $$
对应矩阵形式为
$$ B= \begin{bmatrix} -z^{(1)}(2) & \big(z^{(1)}(2)\big)^2\\ \vdots & \vdots\\ -z^{(1)}(n) & \big(z^{(1)}(n)\big)^2 \end{bmatrix}, \qquad Y= \begin{bmatrix} x^{(0)}(2)\\ \vdots\\ x^{(0)}(n) \end{bmatrix} \tag{5} $$
最小二乘解得到参数 \(a,b\)。
3. Verhulst 时间响应式
代码里真正使用的累计序列预测式为
$$ \hat x^{(1)}(k)=\frac{a\,x^{(1)}(1)}{b\,x^{(1)}(1)+\big(a-bx^{(1)}(1)\big)e^{ak}} \tag{6} $$
随后通过逆 AGO 得到原序列拟合与预测:
$$ \hat x^{(0)}(k)=\hat x^{(1)}(k)-\hat x^{(1)}(k-1) \tag{7} $$
这就是当前项目中 Verhulst 预测的直接计算口径。
4. 误差诊断
4.1 残差与相对误差
代码输出
$$ e(k)=x^{(0)}(k)-\hat x^{(0)}(k) \tag{8} $$
$$ \delta(k)=\frac{e(k)}{x^{(0)}(k)} \tag{9} $$
4.2 级比检验
项目会检查
$$ \lambda(k)=\frac{x^{(0)}(k-1)}{x^{(0)}(k)} \tag{10} $$
并与理论区间
$$ \left[e^{-2/(n+1)},\ e^{2/(n+1)}\right] \tag{11} $$
比较,输出是否通过级比检验。
4.3 后验差比与小误差概率
同时计算
$$ C=\frac{S_e}{S_x} \tag{12} $$
$$ P=\frac{1}{n}\sum_{k=1}^{n}\mathbf{1}\Big(|e(k)-\bar e|<0.6745\,S_x\Big) \tag{13} $$
5. 输出结果与论文应用
5.1 Excel 工作表
当前代码导出:
ParametersRawDataFittedResidualsForecastDiagnosticsCharts
5.2 论文写作表述建议
可以写成:
- 采用灰色 Verhulst 模型描述受饱和约束的非线性增长过程;
- 首先对原序列进行 AGO 处理,再通过背景值构造 Verhulst 参数估计方程;
- 利用时间响应式求得拟合值与预测值,并通过 \(C\)、\(P\) 及级比检验评价模型精度。
6. 实现说明与注意事项
6.1 这是典型的饱和增长模型
Verhulst 更适合描述前期增长、后期趋稳或受资源约束的序列,若序列是近似线性或纯指数型,GM(1,1) 或 NDGM 往往更直接。
6.2 gm_alpha 会影响背景值
当前实现允许用户调节背景值权重,因此不同 \(\alpha\) 可能改变参数估计与预测结果。论文里若做了参数调整,建议把该值写清楚。
6.3 代码在分母接近 0 时做了数值保护
因此项目实现比纯手工公式更稳,但论文中仍应按式(6)–式(7) 说明其理论主结构。
7. 论文写作建议
论文中建议把该模型用于“具有饱和约束的增长过程”或“存在上限的演化序列”分析。结果部分最好给出参数 \(a,b\)、级比检验、后验差比 \(C\)、小误差概率 \(P\) 以及拟合/预测图。若要证明 Verhulst 比 GM(1,1) 更适合当前数据,可以把两者误差指标做并列表比较。
8. 单篇终审补充
8.1 图题与表题对齐建议
当前 Verhulst 模块的结果工作簿命名比较统一,论文终稿可以直接按实际输出写表题。真实导出包含:
ParametersRawDataFittedResidualsForecastDiagnosticsCharts
其中主结果页通常应以 Forecast 和 Diagnostics 为核心,前者对应拟合后外推结果,后者对应级比检验、后验差比、小误差概率等诊断信息。Parameters 页记录的是运行参数与口径参数,不建议在论文中把它误写成“仅含 \(a,b\) 的参数估计表”,因为其内容会比纯理论参数更宽。
真实图文件位于结果目录 charts/ 子目录下,名称固定为:
forecast_curve.pngresiduals.png
因此图题建议写成“Verhulst 模型拟合与预测曲线图”“Verhulst 模型残差图”。不要写成 series.png 或“增长率变化图”,因为程序当前并未生成这些图。
8.2 终审说明
这篇文档在论文里最需要避免的误写,是把当前实现说成“只做 Verhulst 解析解计算”。实际上它还同步做了级比检验、后验差比与小误差概率诊断,并把这些指标落到 Diagnostics 页里。因此若正文要说明模型可用性,应该引用 Diagnostics 页而不是只看拟合曲线。
另外,当前 repro 脚本是随结果目录自动生成的,输入文件会被复制进 repro_inputs/,脚本再以相对路径重建新的输出工作簿。也就是说,软件的真实复现链路是“输入副本 + 参数副本 + repro 脚本”,而不是只保存一份参数文本。这一点在论文附录或软件说明里最好写清楚。
8.3 全量强化补充
本篇终审补充绑定的真实算法目录为 具体的算法3/灰色系统与模糊理论/Verhulst-灰色 Verhulst,本次采用的代表性结果目录为 具体的算法3/灰色系统与模糊理论/Verhulst-灰色 Verhulst/results/Verhulst-灰色 Verhulst分析结果_20260329_123451。
该目录里同时存在一份主结果工作簿和一份 repro 再生产物工作簿:
Verhulst结果_20260329_123451.xlsxVerhulst_repro_output_20260329_123451.xlsx
两者实测工作表一致,均包含:
ParametersRawDataFittedResidualsForecastDiagnosticsCharts
因此这一篇必须把主结果与 repro 结果拆开写。Verhulst结果_20260329_123451.xlsx 是主运行结果,Verhulst_repro_output_20260329_123451.xlsx 是同目录复现脚本再产出的工作簿。虽然页名相同,但它们不是同一份文件。
当前目录中的真实图文件位于 charts/ 子目录:
具体的算法3/灰色系统与模糊理论/Verhulst-灰色 Verhulst/results/Verhulst-灰色 Verhulst分析结果_20260329_123451/charts/forecast_curve.png具体的算法3/灰色系统与模糊理论/Verhulst-灰色 Verhulst/results/Verhulst-灰色 Verhulst分析结果_20260329_123451/charts/residuals.png
复现实物方面,该目录实际包含:
具体的算法3/灰色系统与模糊理论/Verhulst-灰色 Verhulst/results/Verhulst-灰色 Verhulst分析结果_20260329_123451/repro_20260329_123451.py具体的算法3/灰色系统与模糊理论/Verhulst-灰色 Verhulst/results/Verhulst-灰色 Verhulst分析结果_20260329_123451/repro_inputs/verhulst_sample.xlsx具体的算法3/灰色系统与模糊理论/Verhulst-灰色 Verhulst/results/Verhulst-灰色 Verhulst分析结果_20260329_123451/repro_inputs/verhulst_sample_20260329_123451.xlsx
脚本中同时写了 INPUT_FILE = 'repro_inputs/verhulst_sample_20260329_123451.xlsx' 和 PARAMS['file_path'] = 'repro_inputs/verhulst_sample.xlsx'。这说明当前 repro 逻辑既保留了专门用于脚本读入的副本文件,也保留了参数口径里的样本副本。文档里应如实写出这是“输入副本双保留”结构,而不是随意指认只有一个输入文件。
8. 软件实现核查补充(2026-07)
- 当前主结果目录应写作
具体的算法3/灰色系统与模糊理论/Verhulst-灰色 Verhulst/results/Verhulst-灰色 Verhulst分析结果_20260329_123451。 - 正文应围绕
RawData、Processed、Fitted、Forecast、Diagnostics、Params、Charts来写。 - 图证应对应
forecast_curve.png与residuals.png,并把诊断指标与曲线图成组解释。 - 复现脚本应按
repro_20260329_123451.py + repro_inputs/verhulst_sample*.xlsx的口径说明,且要如实保留“输入副本双保留”结构。