在学习灰色预测模型前,需要理解灰色预测的概念。首先引入白色系统和黑色系统,白色系统指的是一个系统的内部特征是完全已知的,即系统的信息是完全充分的;黑色系统指的是一个系统的内部信息对外界来说是一无所知的,只能通过它与外界的联系来加以观测研究。所以,灰色系统指的是一部分信息是已知的,一部分信息是未知的,系统内各因素之间有着不确定的关系。
灰色预测特点在于使用生成数据序列建模,核心是灰色模型通过累加生成近似指数规律。其优势在于数据需求少(仅4个),能应对数据稀缺与不可靠问题;利用微分方程揭示系统本质,预测精度高;还能将无序数据转化为有序序列,运算简单且检验方便,无需考虑数据分布与趋势。灰色预测模型也存在缺点,即灰色预测只能进行中短期的预测,且只针对指数增长的预测。若进行长期预测,使用灰色预测模型的误差较大,不利于最后的结果分析。针对长期预测,可以使用时间序列预测等模型。当遇到数据量少且进行短期预测,并且数据之间看不出明显规律时,可以选择使用灰色预测模型进行预测。在数学建模比赛中,一般使用灰色预测GM(1,1)模型进行预测,GM(1,1)模型表示模型是一阶微分方程,且只含1个变量的灰色模型。
建立灰色预测模型,首先需要进行累加生成,把数列各项(时刻)数据依次累加的过程称为累加生成过程(AGO)。由累加生成过程所得的数列称为累加生成数列。设原始数列为
令,
称所得到的新数列为数列的1次累加生成数列。类似地有
,称为
的r次累加生成数列。除了累加过程,还会存在累减生成和加权邻值生成。
关于加权邻值生成,本文做出如下解释:对于常数,称
.当生成系数
,称均值生成。
数据的检验和处理
计算数据的级比,,
检验预测值
(1)残差检验,这里的残差检验指的是相对残差。
(2)级比偏差值检验
当时,认为达到较高要求。
时,认为达成一般标准。
实例介绍及Matlab的代码求解
实例引入:准确的碳排放预测能够为制定减排政策、优化低碳建筑设计提供重要的参考依据。建立 碳排放预测模型,基于江苏省建筑全过程碳排放的历史数据,对2024年江苏省建筑全过程的碳排放量进行预测。
问题分析:要求基于江苏省建筑全过程碳排放的历史数据,建立碳排放预测模型,对 2024 年江苏省建筑全过程的碳排放量进行预测。考虑到经济快速发展,年代久远的数据不利于数值的预测,所以本文调查了2008年至2020年的数据作为样本,首先进行数据 的检验,然后建立GM(1,1)模型,进行灰色预测,得到预测值,并对预测值进行检验。
Matlab代码求解:
%建立符号变量a(发展系数)和b(灰作用量)
syms a b;
c = [a b]';
%原始数列 A
A = [2.048,2.224,2.46,2.64,2.656,2.691,2.718,2.732,2.801,2.865,2.888,2.907,2.943];
n = length(A);
%对原始数列 A 做累加得到数列 B
B = cumsum(A);
%对数列 B 做紧邻均值生成
for i = 2:n
C(i) = (B(i) + B(i - 1))/2;
end
C(1) = [];
%构造数据矩阵
B = [-C;ones(1,n-1)];
Y = A; Y(1) = []; Y = Y';
%使用最小二乘法计算参数 a(发展系数)和b(灰作用量)
c = inv(B*B')*B*Y;
c = c';
a = c(1); b = c(2);
%预测后续数据
F = []; F(1) = A(1);
for i = 2:(n+10)
F(i) = (A(1)-b/a)/exp(a*(i-1))+ b/a;
end
%对数列 F 累减还原,得到预测出的数据
G = []; G(1) = A(1);
for i = 2:(n+10)
G(i) = F(i) - F(i-1); %得到预测出来的数据
end
disp('预测数据为:');
%绘制曲线图
A = [2.048,2.224,2.46,2.64,2.656,2.691,2.718,2.732,2.801,2.865,2.888,2.907,2.943];
G=[2.0480,2.4352,2.4821,2.5300,2.5787,2.6284,2.6790,2.7306,2.7832,2.8369,2.8915,2.94
72,3.0040];
t1 = 2008:2020;
t2 = 2008:2020;
plot(t1, A,'ro'); hold on;
plot(t2, G, 'g-');
xlabel('年份'); ylabel('碳排放量/亿吨');
legend('实际碳排放量','预测碳排放量');
title('江苏省碳排放量增长曲线');
grid on;