灰色预测GM(1,1)短序列预测算法项目说明
项目介绍
本项目是一个基于MATLAB实现的单变量一阶灰色预测模型(GM(1,1))。该模型旨在解决样本量较小、信息贫乏且具有指数增长趋势的短期序列预测问题。通过对原始数据进行生成变换,将杂乱无章的原始序列转化为具有规律性的生成序列,并利用微分方程拟合发展的动力学特征。该工具通过一套严谨的数学转化与统计检验流程,实现了从数据接入、模型建立到精度评估的完整预测闭环。
功能特性
- 合规性校验:通过级比检验(Class-ratio Test)自动评估原始序列的建模可行性。
- 自适应数据处理:当原始序列不满足级比要求时,系统自动执行平移变换处理,提高序列的平滑度。
- 高精度参数估计:利用最小二乘法(Least Squares)求解发展灰数与灰色作用量,确保模型参数的最优性。
- 全方位精度考核:集成了平均相对误差、级比偏差分析以及后验差统计检验(C值与P值)。
- 自动化结果展示:提供预测数值表格输出及多维度的可视化图表,包括拟合预测曲线与残差分布图。
系统要求
- 软件环境:MATLAB 2016b 及以上版本。
- 硬件环境:无特殊要求,适用于标准通用计算设备。
- 数据要求:输入序列应为非负的观测数据,通常建议样本量在4个以上。
实现逻辑与算法细节
该程序的内部逻辑严格遵循灰色系统理论的标准建模流程:
- 预处理阶段(级比检验)
程序通过计算序列相邻项的比值,判断数据的指数趋势是否落在理论区间 $[e^{-2/(n+1)}, e^{2/(n+2)}]$ 内。若不满足,则会自动计算并加上一个平移增量,使处理后的序列通过检验,从而增强模型的稳定性。
- 核心建模阶段(1-AGO与最小二乘)
-
一阶累加生成(1-AGO):对原始非负序列进行累加,旨在削弱原始数据的随机波动。
-
紧邻均值构造:计算累加序列的均值序列,作为构造数据矩阵 $B$ 的基础。
-
参数识别:构造超定线性方程组,利用最小二乘法公式 $u = (B^T B)^{-1} B^T Y$ 求解模型参数 $a$(发展系数)和 $b$(灰色作用量)。
- 求解与还原阶段
-
白化响应求解:基于微分方程的解,利用时间序列响应函数计算累加序列的预测值。
-
一阶累减还原(IAGO):对得到的预测累加序列进行差分运算,并在必要时减去初始阶段加入的平移增量,最终得到原始层面的拟合与预测数值。
- 精度评估体系
-
残差计算:计算每一时点的绝对残差和相对误差。
-
后验差检验:
-
方差比(C值):残差的标准差与原始序列标准差的比值。
-
小误差概率(P值):残差与均值之差小于特定阈值的概率。
-
等级判定:根据 $C$ 和 $P$ 的数值,自动将预测精度划分为“好、合格、勉强、不合格”四个等级。
关键过程分析
- 平移转换逻辑:代码中通过
c = max(X0) 进行平移。这一设计能有效应对发展系数 $a$ 过大导致模型失效的问题。 - 响应函数计算:代码通过
exp(-a * k) 的指数形式捕捉非线性特征,这正是灰色预测处理指数性质数据的核心逻辑。 - 可视化输出:
-
上方子图:展示了原始值、模型在历史点位的拟合值以及未来周期的外推预测值,直观体现趋势预测能力。
-
下方子图:通过柱状图反映各观测点的相对误差,并设置了10%的红色警告线,方便用户快速识别个别偏差较大的异常点。
使用方法
- 在代码开头修改
X0 变量,填入您的历史观测数据序列(非负)。 - 设置
predict_num 变量,定义需要向未来预测的步长。 - 运行主程序。
- 在控制台查看级比检验状态、模型参数及各项精度指标。
- 参考生成的交互式图表和预测结果表格进行数据分析。