灰色预测GM(1,1)模型及其Matlab代码求解

       在学习灰色预测模型前,需要理解灰色预测的概念。首先引入白色系统和黑色系统,白色系统指的是一个系统的内部特征是完全已知的,即系统的信息是完全充分的;黑色系统指的是一个系统的内部信息对外界来说是一无所知的,只能通过它与外界的联系来加以观测研究。所以,灰色系统指的是一部分信息是已知的,一部分信息是未知的,系统内各因素之间有着不确定的关系。

       灰色预测特点在于使用生成数据序列建模,核心是灰色模型通过累加生成近似指数规律。其优势在于数据需求少(仅4个),能应对数据稀缺与不可靠问题;利用微分方程揭示系统本质,预测精度高;还能将无序数据转化为有序序列,运算简单且检验方便,无需考虑数据分布与趋势。灰色预测模型也存在缺点,即灰色预测只能进行中短期的预测,且只针对指数增长的预测。若进行长期预测,使用灰色预测模型的误差较大,不利于最后的结果分析。针对长期预测,可以使用时间序列预测等模型。当遇到数据量少且进行短期预测,并且数据之间看不出明显规律时,可以选择使用灰色预测模型进行预测。在数学建模比赛中,一般使用灰色预测GM(1,1)模型进行预测,GM(1,1)模型表示模型是一阶微分方程,且只含1个变量的灰色模型。

       建立灰色预测模型,首先需要进行累加生成,把数列各项(时刻)数据依次累加的过程称为累加生成过程(AGO)。由累加生成过程所得的数列称为累加生成数列。设原始数列为x^{0}=(x^{0}(1),x^{0}(2),x^{0}(3),...,x^{0}(n))

x^{1}(k)=\sum_{i=1}^{k}x^{0}(i),k=1,2,...,n,x^{(1)}=(x^{1}(1),x^{1}(2),...,x^{1}(n))

称所得到的新数列为数列x^{(0)}的1次累加生成数列。类似地有x^{(r)}(k)=\sum_{i=1}^{k}x^{(r-1)}(i),k=1,2,...,n,r\geq 1,称为x^{(0)}的r次累加生成数列。除了累加过程,还会存在累减生成和加权邻值生成。

        关于加权邻值生成,本文做出如下解释:对于常数\alpha \in {\left [ 0 ,1\right ]},称Z^{0}k=\alpha x^{0}k+(1-\alpha )x^{0}(k-1).当生成系数\alpha =0.5,称均值生成。

数据的检验和处理

计算数据的级比,\lambda \left ( k \right )=\frac{X_{k-1}^{0}}{X_{k}^{\left ( 0 \right )}},k=1,2,3......,n

检验预测值

(1)残差检验,这里的残差检验指的是相对残差。

\varepsilon \left ( k \right )=\frac{X_{k}^{(0)}-\widehat{X}_{k}^{(0)}}{X_{k}^{(0)}}

(2)级比偏差值检验

\rho \left ( k \right )=1-\frac{1-0.5a}{1+0.5a}\lambda \left ( k \right )

\left | \rho \left ( k \right ) \right |<0.1时,认为达到较高要求。\left | \rho \left ( k \right ) \right |<0.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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值