灰色预测模型 GM(1,1) MATLAB 实现项目介绍
本项目实现了一种基于灰色系统理论的 GM(1,1) 预测模型。该模型专门用于处理小样本、贫信息的系统分析与趋势预测,通过对离散的原始数据进行平滑处理和建模,揭示系统内部的发展规律,为科学决策提供依据。
核心功能特性
- 自动级比检验与修正:程序会自动计算原始序列的级比,判断其是否落在准指数规律的允许范围内。对于不满足建模要求的数据,系统会自动执行平移变换,通过添加常数修正项确保建模的科学性。
- 累加生成算子(1-AGO)处理:应用一次累加生成技术,有效减弱原始序列中随机波动的干扰,使呈现非线性的原始数据转化为具有明显指数增长规律的新序列。
- 矩阵参数辨识:利用最小二乘法(OLS)求解灰微分方程,精确计算发展系数 a 和灰作用量 u,这是模型预测的核心能力。
- 后验差精度检验:模型内置了严格的精度评估体系,包括计算残差、相对误差、方差比 C 以及小误差概率 P,并根据国家标准自动判定模型精度等级(优、合格、勉强合格、不合格)。
- 预测结果可视化:提供直观的双图展示,包括原始数据与预测趋势的对比曲线图,以及反映拟合质量的相对误差柱状图,方便用户直接观察预测效果。
实现逻辑与算法流程
项目逻辑严格遵循灰色预测的标准步骤进行:
一、数据预处理阶段
程序首先获取原始观测值序列(要求不少于4个点)。通过对序列前后项的比值(级比)进行计算,并与理论阈值进行对比,验证数据是否满足指数分布前提。若验证不通过,则代码会自动引入一个基于最大值10%的平移常数,对所有原始数据进行线性平移。
二、模型构建阶段
- 序列生成:对预处理后的序列进行连续累加,生成 1-AGO 序列。
- 均值计算:构造紧邻均值生成序列,利用相邻数据的加权平均(权重各占0.5)来确定背景值,这是为了将离散差分方程转化为连续微分方程的近似处理。
- 参数求解:构造数据矩阵 B 和结果向量 Y,通过矩阵运算(最小二乘求逆)解出描述系统动态特征的参数 a 和 u。
三、预测与还原阶段
- 白化方程求解:利用解析解公式计算累加序列的预测值。
- 还原计算:通过逆累加操作(即相邻项相减),将预测结果从累加空间映射回原始数据空间。
- 反向平移:若此前进行过平移修正,系统会自动减去该常数,得到最终的实际预测值。
四、精度评估阶段
- 残差分析:逐项对比原始值与拟合值,计算每一时刻的绝对误差和相对误差。
- 统计量计算:计算原始序列与残差序列的标准差。
- 等级判定:基于方差比 C 和小误差概率 P 的数值区间,给出模型的置信度结论。
关键实现细节
- 发展系数 a:反映了序列的增长趋势,若 a 为负值通常代表序列呈上升趋势。
- 灰作用量 u:反映了系统内部的驱动力或变化背景。
- 最小二乘算子:代码中使用 运算符执行矩阵左除,能够高效稳定地求解超定方程组。
- 动态外推预测:用户可以通过修改参数定义向后预测的步数,模型会自动计算未来时间节点的数值。
使用方法
- 准备数据:在代码的原始数据准备部分,将您的观测序列填入数组。
- 设置预测步数:根据需求调整需要向后预测的时间节点数量。
- 运行环境:在 MATLAB 环境中直接运行程序。
- 查看结果:控制台将输出模型参数、各阶段预测数值及精度检验指标;同时会自动弹出图形窗口展示预测曲线。
系统要求
- 软件环境:MATLAB R2016b 及以上版本(需支持基础矩阵运算与绘图功能)。
- 硬件要求:标准 PC 配置,该算法对内存和计算能力要求极低,可快速处理中小规模数据集。