灰色系统GM(1,n)多变量预测模型
项目介绍
本项目实现了一个基于MATLAB的灰色系统GM(1,n)多变量预测模型。该模型是灰色预测理论的核心组成部分,专门用于处理具有多个相关驱动因素的复杂系统。与传统的单变量GM(1,1)模型不同,此模型能够纳入多个外生变量,分析各影响因子与主变量之间的耦合关系。该算法非常适合样本量较小、数据分布规律性不强且信息不完全的系统预测任务,广泛应用于经济规模预测、工业产能评估、资源需求分析以及环境指标研判等领域。
功能特性
- 多变量联动分析:支持一个观测主序列与多个相关驱动序列的协同建模,能够捕捉变量间的演化特征。
- 数据平滑处理:内置一次累加生成(1-AGO)算法,通过平滑处理削弱原始序列的随机波动,使系统特征更易辨识。
- 精确参数估计:利用最小二乘法对灰色微分方程中的发展系数(a)和驱动系数(b)进行最优估计。
- 完整的模型评估系统:集成了平均相对误差(MRE)计算与后验差检验分析,不仅提供数值结果,还根据评价标准对模型精度自动划分等级(优、良、合格、不合格)。
- 自动化预测与还原:实现了从累加空间到原始空间的自动还原逻辑(1-IAGO),并支持外推预测功能,自动生成未来趋势。
- 可视化展示:程序自动生成拟合曲线与外推统计图,并以表格形式输出详细的逐期拟合误差数据。
系统要求
- 软件环境:MATLAB R2016b 或更高版本。
- 硬件要求:标准通用计算机配置,由于采用解析求解,计算资源消耗极低。
- 数据要求:输入数据需为非负时间序列,且建议样本量不少于4个观测值。
核心实现逻辑
程序的运行逻辑严格遵循灰色系统理论的数学架构,具体实现步骤如下:
- 数据初始化与AGO处理:首先读入包含主观测变量和驱动变量的原始矩阵。利用累加算子对所有变量进行处理,生成反映系统演化趋势的累加序列。
- 背景值构建:针对主变量序列生成紧邻均值生成序列,作为灰色微分方程的背景值,其权重固定为0.5。
- 构造数据矩阵与参数辨识:
* 建立结果向量Y(包含主序列第2项以后的原始观测值)。
* 构造设计矩阵B,其首列为背景值的负值,其余列为各相关变量的累加值。
* 调用最小二乘算子求解超定方程组,提取发展系数a和驱动系数向量b。
- 模型还原计算:
* 利用离散时间响应方程计算累加空间的拟合值。
* 通过累减还原(1-IAGO)得到原始空间的拟合序列。
- 精度检验分析:
*
相对误差:计算每一期的观测值与拟合值的绝对误差占比。
*
后验差检验:计算残差标准差与原始序列标准差的比值(C值),用于从统计学角度判定模型的可靠性。
- 外推预测逻辑:
* 程序通过分析驱动变量最后两期的增长率,对未来周期的驱动因素进行自动化估计。
* 将估计的驱动项代入预测方程,计算得到主序列的未来预测值。
算法细节说明
- 最小二乘法:代码通过矩阵左除运算实现,有效处理了多个驱动变量带来的多维拟合问题。
- 均值生成序列:均值生成处理旨在消除序列随机波动对建模过程的干扰,提高参数估计的稳定性。
- 离散响应函数:在求取拟合值时,代码严格按照公式执行,并正确处理了首项初值。
- 外推增长率:在预测环节,程序假设外部驱动因素在短期内维持现有的几何增长规律,从而实现对复杂环境因子的模拟。
使用方法
- 准备数据:在脚本的模拟数据部分输入您的数据矩阵。矩阵的第一列必须是您想要预测的目标变量(主序列),从第二列开始为影响目标变量的相关变量(驱动序列)。
- 运行程序:直接运行脚本,程序将在控制台输出识别出的模型系数、平均误差和模型精度等级。
- 查看结果:程序会自动弹出一个图形窗口,蓝色虚线代表模型对历史数据的拟合效果,红色点线代表外推预测值。同时,控制台会列出具体的拟合数据表供进一步分析。