簡介
灰色系統(tǒng)理論是由華中理工大學鄧聚龍教授于1982年提出并加以發(fā)展的。二十幾年來,引起了不少國內(nèi)外學者的關注,得到了長足的發(fā)展。目前,在我國已經(jīng)成為社會、經(jīng)濟、科學技術(shù)在等諸多領域進行預測、決策、評估、規(guī)劃控制、系統(tǒng)分析與建模的重要方法之一。特別是它對時間序列短、統(tǒng)計數(shù)據(jù)少、信息不完全系統(tǒng)的分析與建模,具有獨特的功效,因此得到了廣泛的應用.
適用范圍
該模型使用的不是原始數(shù)據(jù)的序列,而是生成的數(shù)據(jù)序列。核心體系是Grey Model,即對原始數(shù)據(jù)作累加生成(或其他處理生成)得到近似的指數(shù)規(guī)律再進行建模的方法。
優(yōu)點
在處理較少的特征值數(shù)據(jù),不需要數(shù)據(jù)的樣本空間足夠大,就能解決歷史數(shù)據(jù)少、序列的完整性以及可靠性低的問題,能將無規(guī)律的原始數(shù)據(jù)進行生成得到規(guī)律較強的生成序列。
缺點
只適用于中短期的預測,只適合近似于指數(shù)增長的預測。
灰色系統(tǒng)
灰色系統(tǒng)是黑箱概念的一種推廣。
我們把既含有已知信息又含有未知信息的系統(tǒng)稱為灰色系統(tǒng),作為兩個極端,我們將稱信息完全未確定的系統(tǒng)為黑色系統(tǒng);稱信息完全確定的系統(tǒng)為白色系統(tǒng)。區(qū)別白色系統(tǒng)與黑色系統(tǒng)的重標志是系統(tǒng)各因素之間是否具有確定的關系。
特點
-
- 用灰色數(shù)學處理不確定量,使之量化.
-
- 充分利用已知信息尋求系統(tǒng)的運動規(guī)律.
-
- 灰色系統(tǒng)理論能處理貧信息系統(tǒng).
灰色生成
將原始數(shù)據(jù)列中的數(shù)據(jù),按某種要求作數(shù)據(jù)處理稱為生成??陀^世界盡管復雜,表述其行為的數(shù)據(jù)可能是雜亂無章的,然而它必然是有序的,都存在著某種內(nèi)在規(guī)律,不過這些規(guī)律被紛繁復雜的現(xiàn)象所掩蓋,人們很難直接從原始數(shù)據(jù)中找到某種內(nèi)在的規(guī)律。對原始數(shù)據(jù)的生成就是企圖從雜亂無章的現(xiàn)象中去發(fā)現(xiàn)內(nèi)在規(guī)律。
常用灰色系統(tǒng)生成方式
-
- 累加生成
-
- 累減生成
-
- 均值生成
-
- 級比生成
- ……
累加生成
累加生成,**即通過數(shù)列間各時刻數(shù)據(jù)的依個累加以得到新的數(shù)據(jù)與數(shù)列。**累加前的數(shù)列稱原始數(shù)列,累加后的數(shù)列稱為生成數(shù)列。累加生成是使灰色過程由灰變白的一種方法,它在灰色系統(tǒng)理論中占有極其重要地位,通過累加生成可以看出灰量積累過程的發(fā)展態(tài)勢,使離亂的原始數(shù)據(jù)中蘊含的積分特性或規(guī)律加以顯化。累加生成是對原始數(shù)據(jù)列中各時刻的數(shù)據(jù)依次累加,從而生成新的序列的一種手。
GM(1,1)預測模型
推導
精度檢驗
模型選定之后,一定要經(jīng)過檢驗才能判定其是否合理,只有通過檢驗的模型才能用來作預測。
灰色模型的精度檢驗一般有三種方法:
- 相對誤差大小檢驗法
- 關聯(lián)度檢驗法
- 后驗差檢驗法
下面主要介紹后驗差檢驗法
精度檢驗等級參照表
算法總結(jié)
主要步驟
-
- 累加生成
-
- 建立GM(1,1)模型
-
- 檢驗預測值
Matlab代碼
function []=greymodel(y)
% 本程序主要用來計算根據(jù)灰色理論建立的模型的預測值。
% 應用的數(shù)學模型是 GM(1,1)。
% 原始數(shù)據(jù)的處理方法是一次累加法。
y=input('請輸入數(shù)據(jù) ');
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('系統(tǒng)預測精度好')
else if c<0.5
disp('系統(tǒng)預測精度合格')
else if c<0.65
disp('系統(tǒng)預測精度勉強')
else
disp('系統(tǒng)預測精度不合格')
end
end
end
disp(['下個擬合值為 ',num2str(ys(n+1))]);
disp(['再下個擬合值為',num2str(ys(n+2))]);
實際案例
[724.57, 746.62, 778.27, 800.8, 827.75,871.1, 912.37, 954.28, 995.01, 1037.2]
[2.874,3.278,3.337,3.390,3.679]
例子
數(shù)學建模之灰色預測實例含代碼(城市交通噪聲的例子)
GM(2,1)、DGM(2,1)模型、Verhulst模型
GM(1,1)模型適用于較強指數(shù)規(guī)律的序列,只能描述單調(diào)的變化過程,對于非單調(diào)的擺動發(fā)展序列或者有飽和的S形序列,可以考慮建立GM(2,1)、DGM、Verhulst模型。
GM(2,1)模型
弱化算子
對于初期增長勢頭過于猛烈的模型,為了提高精度,可以考慮使用弱化算子處理原始數(shù)列。
對應的,依舊是最小二乘估計參數(shù),再對微分方程求解,得到
DGM模型建立
Verhulst預測模型
Verhulst模型的定義如下
對于模型參數(shù),使用最小二乘估計有以下結(jié)果
最終,可以求得灰色Verhulst的解為
Verhulst模型應用:道路交通事故預測
對于交通事故死亡人數(shù)統(tǒng)計數(shù)據(jù),我們首先做出大體曲線變化圖,以從整體上著手
可見曲線呈現(xiàn)S型,考慮使用verhulst建模。建模過程如下
最后我們還要進行一步模型精度檢驗?;疑P陀幸惶拙唧w的檢驗標準,后注。
檢驗三個指標:**相對誤差、絕對關聯(lián)度、均方差比值。**利用MATLAB檢驗結(jié)果如下:
可見:
平均相對誤差為 3.74% ,則模型精度為二級;同時算得絕對關聯(lián)度 g 為 0.9845,
均方差比值 C 為 0.2355,則模型精度為一級,可見模型精度較高,可用于事故預測。
Matlab程序
clc,clear
x1=[4.93 5.33 5.87 6.35 6.63 7.15 7.37...
7.39 7.81 8.35 9.39 10.59 10.94 10.44];
n = length(x1);
nian=1990:2003;
plot(nian,x1,'o-');
x0=diff(x1); %作累減生成
x0=[x1(1),x0]
z1=0.5*(x1(2:n)+x1(1:n-1)) %求緊鄰均值生成序列
B=[-z1',z1'.^2]
Y=x0(2:end)'
ab_hat=B\Y %估計參數(shù) a,b 的值
x=dsolve('Dx+a*x=b*x^2','x(0)=x0'); %求解常微分方程
x=subs(x,{'a','b','x0'},{ab_hat(1),ab_hat(2),x1(1)}); %代入?yún)?shù)值
yuce=subs(x,'t',0:14) %計算預測值
%下面顯示微分方程的解,為了提高計算精度,把該語句放在計算預測值之后
x=vpa(x,6)
x1_all=[x1,9.92,10.71]; %加上 2004 年的兩個觀測值
yuce(16)=yuce(15); %2004 年有兩個觀測值,要對應兩個相同的預測值
epsilon=x1_all-yuce %計算殘差
delta=abs(epsilon./x1_all) %計算相對誤差
delta_mean=mean(delta) %計算平均相對誤差
x1_all_0=x1_all-x1_all(1); %觀測值數(shù)據(jù)列的始點零化像
yuce_0=yuce-yuce(1); %預測值數(shù)據(jù)列的始點零化像
s0=abs(sum(x1_all_0(2:end-1))+0.5*x1_all_0(end));
s1=abs(sum(yuce_0(2:end-1))+0.5*yuce_0(end));
tt=yuce_0-x1_all_0;
s1_s0=abs(sum(tt(2:end-1))+0.5*tt(end));
absdegree=(1+s0+s1)/(1+s0+s1+s1_s0) %計算灰色絕對關聯(lián)度
c=std(epsilon,1)/std(x1_all,1) %計算標準差比值
參考博客
【數(shù)學建?!炕疑A測模型(預測)文章來源:http://www.zghlxwxcb.cn/news/detail-445622.html
【數(shù)學建?!炕疑到y(tǒng)理論II-Verhulst建模-GM(1,N)-GM(2,1)建模文章來源地址http://www.zghlxwxcb.cn/news/detail-445622.html
到了這里,關于數(shù)學建模|預測方法:灰色預測模型的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!