灰色預測

灰色預測

來自專欄菜鳥的數學建模之路10 人贊了文章

一、什麼是灰色預測?

灰色預測就是在灰色系統中所作的預測。那什麼是灰色系統呢?所謂的灰色系統其實就是夾雜在白色系統和黑色系統之中的一種系統,而白色系統就是全部信息已知的系統,黑色系統就是全部信息未知的系統。所以,夾在這兩種系統中間的灰色系統就是部分信息已知,而部分信息也是未知的系統。所以灰色預測就是通過這樣的信息前提下做的一種預測分析。灰色預測通過鑒別個因素之間的差異程度,進行關聯分析,對原始數據處理後生成一定規律性的序列,然後建立相應的微分方程模型,從而預測事物未來的發展趨勢,最後得到其發展的模型

二、如何運用灰色預測?

了解了灰色預測的概念之後,怎麼去運用灰色預測法呢?

首先進行我在之前說到的關聯分析,所謂關聯分析其實就是對某件事物的動態發展數據集合,在一定時期中做一定的比較。下面盜用我在網上找到的某位大佬的例子(侵刪):

其實這就是一個簡單的關聯分析的例子,幾何形狀越是接近,關聯程度也就越大。當然,如果我們要對更多更複雜的數據進行關聯分析,肯定是無法用肉眼得到分析結果的,因此,我們肯定需要一種計算方法來得到我們想要的關聯分析結果。

首先引入一個概念,灰色預測中最常用的一個模型——GM(1,1)模型,也就是表示模型是一階微分方程,且只含一個變數的灰色模型。這篇文章也以GM(1,1)為例。

GM(1,1)模型預測步驟?

(1)數據的檢驗與處理

首先,為了保證建模的可行性,需要對已知序列作必要的檢驗,首先就是求序列的級比,看看是否所有的級比都落在可容覆蓋內。

matlab程序如下(假設x0中是一列列向量)

x0 = xlsread();x0=(x0(:,1))n = length(x0);% 做級比判斷,看看是否適合用GM(1,1)建模lamda = x0(1:n-1)./x0(2:n);range = minmax(lamda);% 判定是否適合用一階灰色模型建模if range(1,1) < exp(-(2/(n+2))) | range(1,2) > exp(2/(n+2)) error(級比沒有落入灰色模型的範圍內);else % 空行輸出 disp( ); disp(可用G(1,1)建模);end

(2)建立模型

我們需要通過白化微分方程得到

matlab程序如下

% 做AGO累加處理x1 = cumsum(x0);for i = 2:n % 計算緊鄰均值,也就是白化背景值 z(i) = 0.5*(x1(i)+x1(i-1));endB = [-z(2:n),ones(n-1,1)];Y = x0(2:n);% 矩陣做除法,計算髮展係數和灰色作用量% 千萬注意:這裡是右除,不是左除u = BY;% 在MATLAB中,用大寫做字母D表示導數,dsolve函數用來求解符號常微分方程x = dsolve(Dx+a*x=b,x(0)=x0);% subs函數的作用是替換元素,這裡是把常量a,b,x0換成具體u(1),u(2),x1(1)數值x = subs(x,{a,b,x0},{u(1),u(2),x1(1)});forecast1 = subs(x,t,[0:n-1]);% digits和vpa函數用來控制計算的有效數字位數digits(6);% y值是AGO形式的(還是累加的)y = vpa(x);% 把AGO輸出值進行累減% diff用於對符號表達式進行求導% 但是如果輸入的是向量,則表示計算原向量相鄰元素的差forecast11 = double(forecast1);exchange = diff(forecast11);% 輸出灰色模型預測的值forecast = [x0(1),exchange]

(3)檢驗預測值

% 計算殘差epsilon = x0 - forecast;% 計算相對誤差delta = abs(epsilon./x0);% 檢驗模型的誤差% 檢驗方法一:相對誤差Q檢驗法Q = mean(delta)% 檢驗方法二:方差比C檢驗法% 計算標準差函數為std(x,a)% 如果後面一個參數a取0表示的是除以n-1,如果是1就是最後除以nC = std(epsilon,1)/std(x0,1)% 檢驗方法三:小誤差概率P檢驗法S1 = std(x0,1);S1_new = S1*0.6745;temp_P = find(abs(epsilon-mean(epsilon)) < S1_new);P = length(temp_P)/n

推薦閱讀:

奇門與綜合預測D
2012年12月英語四級六級作文預測10篇
龍形柔身術硬氣功之入門功法-八大神龍掌 - 壬遁預測博客的日誌 - 網易博客
「八字模型理論」——徹底破解「五同生人命運差異」預測理論和技術之千古難題(本原法師 呂文藝)
姓名預測你命中的戀人

TAG:MATLAB | 數學建模 | 預測 |