1. 程式人生 > >灰色預測模型

灰色預測模型

 

灰色預測模型是通過少量的、不完全的資訊,建立數學模型並作出預測的一種預測方法。

灰色系統理論是研究解決灰色系統分析、建模、預測、決策和控制的理論。

灰色預測是對灰色系統所做的預測。目前常用的一些預測方法(如迴歸分析等),需要較大的樣本,若樣本較小,常造成較大誤差,使預測目標失效。灰色預測模型所需建模資訊少,運算方便,建模精度高,是處理小樣本預測問題的有效工具。

灰色系統是黑箱概念的一種推廣,我們把既含有已知資訊又含有未知資訊的系統稱為灰色系統(佔大多數)。作為兩個極端,我們將資訊完全未確定的系統稱為黑色系統;資訊完全確定系統稱為白色系統。區別白色黑色系統的重要標誌是系統各因素之間是否具有確定的關係。

灰色系統特點:

  1. 用灰色數學處理不確定量,使之量化。
  2. 充分利用已知資訊尋求系統的運動規律。
  3. 灰色系統理論能處理貧資訊系統。

灰色生成:是對原始資料的生成,是從雜亂無章的現象中去發現內在規律。

常用灰色系統生成方式:累加生成、累減生成、均值生成、級比生成等。

主要介紹累加生成:

 

 

 

 預測值求解

 

計算後驗差比:

 

 

 

 

 

程式碼如下:

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))]);

效果如下: