灰色预测法 —— matlab
目錄
1.簡(jiǎn)介
2.算法詳解
2.1 生成累加數(shù)據(jù)
2.2??累加后的數(shù)據(jù)表達(dá)式
2.3?求解2.2的未知參數(shù)
3.實(shí)例分析
3.1 導(dǎo)入數(shù)據(jù)
3.2 進(jìn)行累加數(shù)據(jù)
3.3 求解系數(shù)
3.4 預(yù)測(cè)數(shù)據(jù)及對(duì)比
完整代碼
1.簡(jiǎn)介
????????灰色系統(tǒng)理論認(rèn)為對(duì)既含有已知信息又含有未知或非確定信息的系統(tǒng)進(jìn)行預(yù)測(cè),就是對(duì)在一定方位內(nèi)變化的、與時(shí)間有關(guān)的灰色過(guò)程的預(yù)測(cè)。盡管過(guò)程中所顯示的現(xiàn)象是隨機(jī)的、雜亂無(wú)章的,但畢竟是有序的、有界的,因此這一數(shù)據(jù)集合具備潛在的規(guī)律,灰色預(yù)測(cè)就是利用這種規(guī)律建立灰色模型對(duì)灰色系統(tǒng)進(jìn)行預(yù)測(cè)。
????????灰色預(yù)測(cè)通過(guò)鑒別系統(tǒng)因素之間發(fā)展趨勢(shì)的相異程度,即進(jìn)行關(guān)聯(lián)分析,并對(duì)原始數(shù)據(jù)進(jìn)行生成處理來(lái)尋找系統(tǒng)變動(dòng)的規(guī)律,生成有較強(qiáng)規(guī)律性的數(shù)據(jù)序列,然后建立相應(yīng)的微分方程模型,從而預(yù)測(cè)事物未來(lái)發(fā)展趨勢(shì)的狀況。其用等時(shí)距觀(guān)測(cè)到的反應(yīng)預(yù)測(cè)對(duì)象特征的一系列數(shù)量值構(gòu)造灰色預(yù)測(cè)模型,預(yù)測(cè)未來(lái)某一時(shí)刻的特征量,或達(dá)到某一特征量的時(shí)間。
2.算法詳解
2.1 生成累加數(shù)據(jù)
2.2??累加后的數(shù)據(jù)表達(dá)式
2.3?求解2.2的未知參數(shù)
3.實(shí)例分析
現(xiàn)有1997—2002年各項(xiàng)指標(biāo)相關(guān)統(tǒng)計(jì)數(shù)據(jù)如下表:
| 年份 | 第一產(chǎn)業(yè) GDP | 消費(fèi) | 第三產(chǎn)業(yè) GDP |
| 1997 | 72.03 | 241.2 | 1592.74 |
| 1998 | 73.84 | 241.2 | 1855.36 |
| 1999 | 74.49 | 244.8 | 2129.60 |
| 2000 | 76.68 | 250.9 | 2486.86 |
| 2001 | 78.00 | 250.9 | 2728.94 |
| 2002 | 79.68 | 252.2 | 3038.90 |
用灰色預(yù)測(cè)方法預(yù)測(cè)2003—2009年各項(xiàng)指標(biāo)的數(shù)據(jù)。且已知實(shí)際的預(yù)測(cè)數(shù)據(jù)如下:將預(yù)測(cè)數(shù)據(jù)與實(shí)際數(shù)據(jù)進(jìn)行比較
| 年份 | 第一產(chǎn)業(yè)GDP | 居民消費(fèi)價(jià)格指數(shù) | 第三產(chǎn)業(yè)GDP |
| 2003 | 81.21 | 256.5 | 3458.05 |
| 2004 | 82.84 | 259.4 | 3900.27 |
| 2005 | 84.5 | 262.4 | 4399.06 |
| 2006 | 86.19 | 265.3 | 4961.62 |
| 2007 | 87.92 | 268.3 | 5596.13 |
| 2008 | 89.69 | 271.4 | 6311.79 |
| 2009 | 91.49 | 274.5 | 7118.96 |
3.1 導(dǎo)入數(shù)據(jù)
%原數(shù)據(jù) data=[72.03,241.2,1592.74;73.84 ,241.2,1855.36;74.49,244.8,2129.60;... 76.68,250.9,2486.86;78.00,250.9,2728.94;79.68,252.2,3038.90] %要預(yù)測(cè)數(shù)據(jù)的真實(shí)值 data_T=[81.21,256.5,3458.05;82.84,259.4,3900.27;84.5,262.4,4399.06;... 86.19,265.3,4961.62;87.92,268.3,5596.1;89.69,271.4, 6311.79;91.49,274.5,7118.96]返回:
3.2 進(jìn)行累加數(shù)據(jù)
%% 累加數(shù)據(jù) data1=cumsum(data,1)返回:
3.3 求解系數(shù)
for j=1:size(data,2)B=zeros(size(data,1)-1,2);for i=1:size(data,1)-1B(i,1)=-1/2*(data1(i,j)+data1(i+1,j));B(i,2)=1;endY=data(2:end,j);a_u=inv(B'*B)*B'*Y返回:
得到3對(duì) a和u
3.4 預(yù)測(cè)數(shù)據(jù)及對(duì)比
需在3.3的基礎(chǔ)上進(jìn)行預(yù)測(cè)
for j=1:size(data,2)B=zeros(size(data,1)-1,2);for i=1:size(data,1)-1B(i,1)=-1/2*(data1(i,j)+data1(i+1,j));B(i,2)=1;endY=data(2:end,j);a_u=inv(B'*B)*B'*Y;%進(jìn)行數(shù)據(jù)預(yù)測(cè)a=a_u(1); u=a_u(2);T=[X,X_p];data_p=(data1(1,j)-u/a).*exp(-a.*(T-X_sta))+u/a;%累加數(shù)據(jù)data_p1(1)=data_p(1);for n=2:length(data_p)data_p1(n)=data_p(n)-data_p(n-1)endtitle_str={'第一產(chǎn)業(yè)GDP預(yù)測(cè)','居民消費(fèi)價(jià)格指數(shù)預(yù)測(cè)','第三產(chǎn)業(yè)GDP預(yù)測(cè)'};figure(1)subplot(2,2,j)plot(X,data(:,j),'*','LineWidth',1,'DisplayName','實(shí)際原數(shù)據(jù)')hold on plot(X_p,data_T(:,j),'o','LineWidth',1,'DisplayName','預(yù)測(cè)參考數(shù)據(jù)')hold ondata_n=data_p1;plot(X(2:end),data_n(X(2:end)-X_sta),'LineWidth',2,'DisplayName','擬合數(shù)據(jù)')plot(X_p,data_n(X_p-X_sta),'LineWidth',2,'DisplayName','預(yù)測(cè)數(shù)據(jù)')y_n=data_n(X_p-X_sta)';y=data_T(:,j);wucha=sum(abs(y_n-y)./y)/length(y);titlestr1=[title_str{1,j},' 預(yù)測(cè)相對(duì)誤差:',num2str(wucha)];hold onlegend('show','Location','Best');title(titlestr1) end返回:
完整代碼
clc;clear; %原數(shù)據(jù) data=[72.03,241.2,1592.74;73.84 ,241.2,1855.36;74.49,244.8,2129.60;... 76.68,250.9,2486.86;78.00,250.9,2728.94;79.68,252.2,3038.90]; %要預(yù)測(cè)數(shù)據(jù)的真實(shí)值 data_T=[81.21,256.5,3458.05;82.84,259.4,3900.27;84.5,262.4,4399.06;... 86.19,265.3,4961.62;87.92,268.3,5596.1;89.69,271.4, 6311.79;91.49,274.5,7118.96]; %% 累加數(shù)據(jù) data1=cumsum(data,1); %% 求解系數(shù) %對(duì)這三列分別進(jìn)行預(yù)測(cè) X=(1997:2002);%已知年份數(shù)據(jù) X_p=(2003:2009);%預(yù)測(cè)年份數(shù)據(jù) X_sta=X(1)-1;%最開(kāi)始參考數(shù)據(jù) for j=1:size(data,2)B=zeros(size(data,1)-1,2);for i=1:size(data,1)-1B(i,1)=-1/2*(data1(i,j)+data1(i+1,j));B(i,2)=1;endY=data(2:end,j);a_u=inv(B'*B)*B'*Y;%進(jìn)行數(shù)據(jù)預(yù)測(cè)a=a_u(1); u=a_u(2);T=[X,X_p];data_p=(data1(1,j)-u/a).*exp(-a.*(T-X_sta))+u/a;%累加數(shù)據(jù)data_p1(1)=data_p(1);for n=2:length(data_p)data_p1(n)=data_p(n)-data_p(n-1);endtitle_str={'第一產(chǎn)業(yè)GDP預(yù)測(cè)','居民消費(fèi)價(jià)格指數(shù)預(yù)測(cè)','第三產(chǎn)業(yè)GDP預(yù)測(cè)'};figure(1)subplot(2,2,j)plot(X,data(:,j),'*','LineWidth',1,'DisplayName','實(shí)際原數(shù)據(jù)')hold on plot(X_p,data_T(:,j),'o','LineWidth',1,'DisplayName','預(yù)測(cè)參考數(shù)據(jù)')hold ondata_n=data_p1;plot(X(2:end),data_n(X(2:end)-X_sta),'LineWidth',2,'DisplayName','擬合數(shù)據(jù)')plot(X_p,data_n(X_p-X_sta),'LineWidth',2,'DisplayName','預(yù)測(cè)數(shù)據(jù)')y_n=data_n(X_p-X_sta)';y=data_T(:,j);wucha=sum(abs(y_n-y)./y)/length(y);titlestr1=[title_str{1,j},' 預(yù)測(cè)相對(duì)誤差:',num2str(wucha)];hold onlegend('show','Location','Best');title(titlestr1) end總結(jié)
以上是生活随笔為你收集整理的灰色预测法 —— matlab的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 博弈论 —— matlab
- 下一篇: java json u0026_特殊字符