灰预测方法简介
灰预测是一种对含有不确定因素的系统进行预测的方法。灰预测通过鉴别系统因素之间发展趋势的相异程度,即进行关联分析,并对原始数据进行生成处理来寻系统变动的规律,生成有较强规律性的数据序列,然后建立相应的微分方程模型,从而预测事物未来发展趋势的状况。其用等时距观测到的反应预测对象特征的一系列数量值构造灰预测模型,预测未来某一时刻的特征量,或达到某一特征量的时间。通过对原始数据的整理寻数的规律,分为三类: a、累加生成:通过数列间各时刻数据的依个累加得到新的数据与数列。累加前数列为原始数列,累加后为生成数列。 b、累减生成:前后两个数据之差,累加生成的逆运算。累减生成可将累加生成还原成非生成数列。
c、映射生成:累加、累减以外的生成方式。
建模步骤
a、建模机理
b、 把原始数据加工成生成数;
严格自律c、 对残差(模型计算值与实际值之差)修订后,建立差分微分方程模型;
d、 基于关联度收敛的分析;
e、 gm模型所得数据须经过逆生成还原后才能用。
f、采用“五步建模(系统定性分析、因素分析、初步量化、动态量化、优化)”法,建立一种差分微分方程模型gm(1,1)预测模型。
GM(1,1)程序:
% 本程序主要用来计算根据灰理论建立的模型的预测值。
期后事项% 应用的数学模型是 GM(1,1)。
% 原始数据的处理方法是一次累加法。
clear;clc;
% load ('');
% y=data';
y=[3 4 5 4 7 7];
天地欣
n=length(y);
yy=ones(n,1);
yy(1)=y(1);
for i=2:n
yy(i)=yy(i-1)+y(i);
end
B=ones(n-1,2);规模效应
for i=1:(n-1)
B(i,1)=-(yy(i)+yy(i+1))/2;
B(i,2)=1;
end
BT=B';
for j=1:n-1角度换算
YN(j)=y(j+1);
end
YN=YN';
A=inv(BT*B)*BT*YN;
a=A(1);
磷化铝u=A(2);
t=u/a;
t_test=input('请输入需要预测个数:');
i=1:t_test+n;
yys(i+1)=(y(1)-t).*exp(-a.*i)+t;
yys(1)=y(1);
for j=n+t_test:-1:2
ys(j)=yys(j)-yys(j-1);
end
x=1:n;
xs=2:n+t_test;
yn=ys(2:n+t_test);
plot(x,y,'^r',xs,yn,'*-b');
det=0;
for i=2:n
det=det+abs(yn(i)-y(i));
end
det=det/(n-1);
disp(['百分绝对误差为:',num2str(det),'%']);
disp(['预测值为: ',num2str(ys(n+1:n+t_test))]);