灰色預測模型是經過少許的、不徹底的信息,創建數學模型並做出預測的一種預測方法。工具
灰色系統理論是研究解決灰色系統分析、建模、預測、決策和控制的理論。spa
灰色預測是對灰色系統所作的預測。目前經常使用的一些預測方法(如迴歸分析等),須要較大的樣本,若樣本較小,常形成較大偏差,使預測目標失效。灰色預測模型所需建模信息少,運算方便,建模精度高,是處理小樣本預測問題的有效工具。3d
灰色系統是黑箱概念的一種推廣,咱們把既含有已知信息又含有未知信息的系統稱爲灰色系統(佔大多數)。做爲兩個極端,咱們將信息徹底未肯定的系統稱爲黑色系統;信息徹底肯定系統稱爲白色系統。區別白色黑色系統的重要標誌是系統各因素之間是否具備肯定的關係。code
灰色系統特色:blog
灰色生成:是對原始數據的生成,是從雜亂無章的現象中去發現內在規律。input
經常使用灰色系統生成方式:累加生成、累減生成、均值生成、級比生成等。數學
主要介紹累加生成:io
預測值求解function
計算後驗差比:class
代碼以下:
function []=greymodel(y) % 本程序主要用來計算根據灰色理論創建的模型的預測值。 % 應用的數學模型是 GM(1,1)。 % 原始數據的處理方法是一次累加法。 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; i=1:n+2; yys(i+1)=(y(1)-t).*exp(-a.*i)+t; yys(1)=y(1); for j=n+2:-1:2 ys(j)=yys(j)-yys(j-1); end x=1:n; xs=2:n+2; yn=ys(2:n+2); plot(x,y,'^r',xs,yn,'*-b'); det=0; sum1=0; sumpe=0; for i=1:n sumpe=sumpe+y(i); end pe=sumpe/n; for i=1:n; sum1=sum1+(y(i)-pe).^2; end s1=sqrt(sum1/n); sumce=0; for i=2:n sumce=sumce+(y(i)-yn(i)); end ce=sumce/(n-1); sum2=0; for i=2:n; sum2=sum2+(y(i)-yn(i)-ce).^2; end s2=sqrt(sum2/(n-1)); c=(s2)/(s1); disp(['後驗差比值爲:',num2str(c)]); if c<0.35 disp('系統預測精度好') else if c<0.5 disp('系統預測精度合格') else if c<0.65 disp('系統預測精度勉強') else disp('系統預測精度不合格') end end end disp(['下個擬合值爲 ',num2str(ys(n+1))]); disp(['再下個擬合值爲',num2str(ys(n+2))]);
效果以下: