Matlab應用筆記--灰色預測


注:本篇隨筆依據《Matlab在數學建模上的應用》中第3章介紹來寫,主要簡單介紹灰色模型及其Matlab實現
(博客以及Matlab小白,若有不當歡迎指出)

灰色模型(gray model)簡介

灰色模型的作用:解決數據預測問題。
灰色模型的優點:實用穩定,不僅適用於大數據量的預測,在數據量比較少時(3個以上即可)預測結果依舊准確。

Matlab中灰色模型的使用

詳細流程(熟悉的話可跳過看總結)

(1)先對數據進行預處理。

預處理是指將雜亂無章的數據列通過一定的方法處理,變成有規律的時間序列數據。
常用的數據處理方式有累加和累減兩種,通常用累加。
設原始數據列:\(x^{(0)}=(x^{(0)}(1),x^{(0)}(2),...,x^{(0)}(n))\)
累加:\(x^{(1)}(t)=\sum_{k=1}^{t}x^{(0)}(k), t=1,2,...,n\)

(2)建立\(x^{(1)}(t)\)的一階線性微分方程。

在諸多灰色模型中,單序列一階線性微分方程模型GM(1,1)最為常用。
\(\frac{dx^{(1)}}{dt}+ax^{(1)}=u\)
其中a,u為待定系數,分別稱為發展系數和灰色作用量,構造矩陣\(\widehat{a}=\binom{a}{u}\)

(3)建立累加矩陣B和常數項向量Y。

(4)最小二乘法求解灰參數\(\widehat{a}\)

\(\widehat{a}=(B^{T}B)^{-1}B^{T}Y\)

(5)將灰參數\(\widehat{a}\)代入模型求解。

得到:\(\widehat{x}^{(1)}(t+1)=(x^{(0)}(1)-\frac{u}{a})e^{-at}+\frac{u}{a}\)

(6)還原為\(\widehat{x}^{(0)}\)序列。

\(\widehat{x}^{(0)}(t+1)=\widehat{x}^{(1)}(t+1)-\widehat{x}^{(1)}(t)\)

(7)檢驗模型。


也可以直接作圖看效果。

(8)利用模型進行預測。

大致流程(總結)

①對原始數據進行累加。(弱化隨機性和波動性)
②構建累加矩陣B與常數向量。
③求解灰參數。
④將參數帶入預測模型進行數據預測。

模版代碼

clear
A=[1810,1938,1838,1463];      %數據(必須大於3個)
B=cumsum(A);                  %對向量中的元素累加(第幾個等於原來的前幾個之和)
n=length(A);                  %數據量(向量長度)

for i=1:(n-1)                  %求相鄰數據的均值向量
    C(i)=(B(i)+B(i+1))/2;
end
E=[-C;ones(1,n-1)];            %求累加矩陣B

D=A;D(1)=[];
D=D';                          %求常數項列向量Y

c=(E*E')\(E*D);                %求系數矩陣(列向量)a
c=c';                          %轉置(變為行向量)

a=c(1);b=c(2);
F=[];F(1)=A(1);
for i=2:(n+3)                  %還要預測接下來的3個數據
    F(i)=(A(1)-b/a)/exp(a*(i-1))+b/a;      %直接帶入灰參數得到模型,求數據
end

G=[];G(1)=A(1);
for i=2:(n+3)
    G(i)=F(i)-F(i-1);      %還原序列(去累加)
end

t1=1:4;
t2=1:7;
G                        %顯示根據灰色模型得到的數據
plot(t1,A,'o',t2,G)      %作圖,將原始數據與灰色模型得到的數據相比較


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM