灰色系統理論中,GM(1,1)建模很常用,但他是有一定適應范圍的。
GM(1,1)適合於指數規律較強的序列,只能描述單調變化過程。對於具有一定隨機波動性的序列,我們考慮使用Verhulst預測模型,或者GM(2,1)模型。
Verhulst和GM(2,1)適合於非單調的擺動發展序列或者具有飽和狀態的 S 形序列。
Verhulst預測模型
Verhulst模型的定義如下:
對於模型參數,使用最小二乘估計有以下結果:
最終,可以求得灰色Verhulst的解為:
Verhulst模型應用:道路交通事故預測
對於交通事故死亡人數統計數據,我們首先做出大體曲線變化圖,以從整體上着手。
可見曲線呈現S型,考慮使用verhulst建模。建模過程如下:
最后我們還要進行一步模型精度檢驗。灰色模型有一套具體的檢驗標准,后注。
檢驗三個指標:相對誤差、絕對關聯度、均方差比值。利用MATLAB檢驗結果如下:
可見:
平均相對誤差為 3.74% ,則模型精度為二級;同時算得絕對關聯度 g 為 0.9845,
均方差比值 C 為 0.2355,則模型精度為一級,可見模型精度較高,可用於事故預測。
附MATLAB程序:
1 clc,clear 2 x1=[4.93 5.33 5.87 6.35 6.63 7.15 7.37... 3 7.39 7.81 8.35 9.39 10.59 10.94 10.44]; 4 n = length(x1); 5 nian=1990:2003; 6 plot(nian,x1,'o-'); 7 x0=diff(x1); %作累減生成 8 x0=[x1(1),x0] 9 z1=0.5*(x1(2:n)+x1(1:n-1)) %求緊鄰均值生成序列 10 B=[-z1',z1'.^2] 11 Y=x0(2:end)' 12 ab_hat=B\Y %估計參數 a,b 的值 13 x=dsolve('Dx+a*x=b*x^2','x(0)=x0'); %求解常微分方程 14 x=subs(x,{'a','b','x0'},{ab_hat(1),ab_hat(2),x1(1)}); %代入參數值 15 yuce=subs(x,'t',0:14) %計算預測值 16 %下面顯示微分方程的解,為了提高計算精度,把該語句放在計算預測值之后 17 x=vpa(x,6) 18 x1_all=[x1,9.92,10.71]; %加上 2004 年的兩個觀測值 19 yuce(16)=yuce(15); %2004 年有兩個觀測值,要對應兩個相同的預測值 20 epsilon=x1_all-yuce %計算殘差 21 delta=abs(epsilon./x1_all) %計算相對誤差 22 delta_mean=mean(delta) %計算平均相對誤差 23 x1_all_0=x1_all-x1_all(1); %觀測值數據列的始點零化像 24 yuce_0=yuce-yuce(1); %預測值數據列的始點零化像 25 s0=abs(sum(x1_all_0(2:end-1))+0.5*x1_all_0(end)); 26 s1=abs(sum(yuce_0(2:end-1))+0.5*yuce_0(end)); 27 tt=yuce_0-x1_all_0; 28 s1_s0=abs(sum(tt(2:end-1))+0.5*tt(end)); 29 absdegree=(1+s0+s1)/(1+s0+s1+s1_s0) %計算灰色絕對關聯度 30 c=std(epsilon,1)/std(x1_all,1) %計算標准差比值
灰色預測模型檢驗標准:
1. 殘差合格模型
2. 關聯度合格模型
3. 均方差比合格模型
由上可知,給定一組取值,就確定了檢驗模型精度的一個等級。常用的精度等級見下表:
GM(2,1)模型和DGM模型
1. GM(2,1)模型
弱化算子
對於初期增長勢頭過於猛烈的模型,為了提高精度,可以考慮使用弱化算子處理原始數列。
對應的,依舊是最小二乘估計參數,再對微分方程求解,得到:
2. DGM(2,1)模型
證明略。
GM(1,N)模型和GM(0,N)模型
1. GM(1,N)
2. GM(0,N)模型
總結:灰色預測法與傳統統計方法的比較