灰色预测法
• 灰色预测法是一种对含有不确定因素的系统进行预测的方法。灰色预测是对既含有已知信息又含有不确定信息的系统进行预则,就是对在一定范围内 变化的、与时间有关的灰色过程进行预测。
• 灰色预测通过鉴别系统因素之间发展趋势的相异程度,即进行关联分析,并对 原始数据进行生成处理来寻找系统变动
的规律,生成有较强规律性的数据序列,然后建立相应的微分方程模型,从而 预测事物未来发展趋势的状况。
• 灰色预测法用等时距观测到的反映预测对象特征的一系列数量值构造灰色预测模 型,预测未来某一时刻的特征量,或达到某一 特征量的时间。
灰色生成数列
灰色系统理论认为,尽管客观表象复杂,但总是有整体功能的,因此必然蕴含某种内在规律。关键在于如何选择适当的方式去挖掘和利用它。灰色系统是通过对原始数据的整理来寻求其变化规律的,这是一种就数据寻求数据的现实规律的途径,即为灰色序列的生成。一切灰色序列都能通过某种生成弱化其随机性,显现其规律性。数据生成的常用方式有累加生成、累减生成和加权累加生成。
灰色模型GM(1,1)
灰色系统理论是基于关联空间、光滑离散函数等概念定义灰导数与灰微分方程,进而用离散数据列建立微分方程形式的动态模型,即灰色模型是利用离散随机数经过生成变为随机性被显著削弱而且较有规律的生成数,建立起的微分方程形式的模型,这样便于对其变化过程进行研究和描述。
G表示grey(灰色),M表示model(模型)
检验预测值两种方法
灰色预测计算实例
Matlab的灰色预测程序:
y=input('请输入数据');
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))]);
请输入数据[29.8 30.11 41.05 70.12 77.79 77.79 104.82 65.22 82.7 100.79]
输入需要预测的个数4
百分绝对误差为:14.5128%
预测值为:110.5718 120.8171 132.0116 144.2434