灰色理論
通過對原始數據的處理挖掘系統變動規律,建立相應微分方程,從而預測事物未來發展狀況。
優點:對於不確定因素的復雜系統預測效果較好,且所需樣本數據較小;
缺點:基於指數率的預測沒有考慮系統的隨機性,中長期預測精度較差。
灰色預測模型
在多種因素共同影響且內部因素難以全部划定,因素間關系復雜隱蔽,可利用的數據情況少下可用,一般會加上修正因子使結果更准確。
灰色系統是指“部分信息已知,部分信息未知“的”小樣本“,”貧信息“的不確定系統,以灰色模型(G,M)為核心的模型體系。
灰色預測模型建模機理
灰色系統理論是基於關聯空間、光滑離散函數等概念,定義灰導數與會微分方程,進而用離散數據列建立微分方程形式的動態模型。
灰色預測模型實驗
以sin(pi*x/20)函數為例,以單調性為區間檢驗灰色模型預測的精度
通過實驗可以明顯地看出,灰色預測對於單調變化的序列預測精度較高,但是對波動變化明顯的序列而言,灰色預測的誤差相對比較大。究其原因,灰色預測模型通過AGO累加生成序列,在這個過程中會將不規則變動視為干擾,在累加運算中會過濾掉一部分變動,而且由累加生成灰指數律定理可知,當序列足夠大時,存在級比為0.5的指數律,這就決定了灰色預測對單調變化預測具有很強的慣性,使得波動變化趨勢不敏感。
本文所用測試代碼:
1 clc 2 clear all 3 % 本程序主要用來計算根據灰色理論建立的模型的預測值。 4 % 應用的數學模型是 GM(1,1)。 5 % 原始數據的處理方法是一次累加法。 6 x=[0:1:10]; 7 x1=[10:1:20]; 8 x2=[0:1:20]; 9 y=sin(pi*x/20); 10 n=length(y); 11 yy=ones(n,1); 12 yy(1)=y(1); 13 for i=2:n 14 yy(i)=yy(i-1)+y(i); 15 end 16 B=ones(n-1,2); 17 for i=1:(n-1) 18 B(i,1)=-(yy(i)+yy(i+1))/2; 19 B(i,2)=1; 20 end 21 BT=B'; 22 for j=1:n-1 23 YN(j)=y(j+1); 24 end 25 YN=YN'; 26 A=inv(BT*B)*BT*YN; 27 a=A(1); 28 u=A(2); 29 t=u/a; 30 t_test=5; %需要預測個數 31 i=1:t_test+n; 32 yys(i+1)=(y(1)-t).*exp(-a.*i)+t; 33 yys(1)=y(1); 34 for j=n+t_test:-1:2 35 ys(j)=yys(j)-yys(j-1); 36 end 37 x=1:n; 38 xs=2:n+t_test; 39 yn=ys(2:n+t_test); 40 det=0; 41 for i=2:n 42 det=det+abs(yn(i)-y(i)); 43 end 44 det=det/(n-1); 45 46 subplot(2,2,1),plot(x,y,'^r-',xs,yn,'b-o'),title('單調遞增' ),legend('實測值','預測值'); 47 disp(['百分絕對誤差為:',num2str(det),'%']); 48 disp(['預測值為: ',num2str(ys(n+1:n+t_test))]); 49 50 51 %遞減 52 y1=sin(pi*x1/20); 53 n1=length(y1); 54 yy1=ones(n1,1); 55 yy1(1)=y1(1); 56 for i=2:n1 57 yy1(i)=yy1(i-1)+y1(i); 58 end 59 B1=ones(n1-1,2); 60 for i=1:(n1-1) 61 B1(i,1)=-(yy1(i)+yy1(i+1))/2; 62 B1(i,2)=1; 63 end 64 BT1=B1'; 65 for j=1:n1-1 66 YN1(j)=y1(j+1); 67 end 68 YN1=YN1'; 69 A1=inv(BT1*B1)*BT1*YN1; 70 a1=A1(1); 71 u1=A1(2); 72 t1=u1/a1; 73 t_test1=5; %需要預測個數 74 i=1:t_test1+n1; 75 yys1(i+1)=(y1(1)-t1).*exp(-a1.*i)+t1; 76 yys1(