灰色預測模型的學習筆記(MATLAB 包含模型的建立 求解 及檢驗)
阿新 • • 發佈:2018-12-12
本博文是本人在學習灰色預測模型時所做的筆記,原理及程式碼部分都是基於學習各位大佬的博文,詳見後面的參考, 一、 實操,利用灰色預測模型預測未來十年湖南的人口數量 二、 具體實現,從國家統計局獲取湖南省過去十年的人口資料,作為原始資料,見Excel檔案,利用MATLAB對灰色預測模型進行求解,具體MATLAB實現見如下程式碼:
%MATLAB 2016a版 clear,clc; A=xlsread('分省年度資料.xls','$K$5:$B$5'); A=sort(A); syms a b; c=[a b]'; B=cumsum(A); % 原始資料累加 n=length(A); for i=1:(n-1) C(i)=(B(i)+B(i+1))/2; % 生成累加矩陣 end % 計算待定引數的值 D=A;D(1)=[]; D=D'; E=[-C;ones(1,n-1)]; c=inv(E*E')*E*D; c=c'; a=c(1);b=c(2); % 預測後續資料 F=[];F(1)=A(1); for i=2:(n+10) F(i)=(A(1)-b/a)/exp(a*(i-1))+b/a; end G=[];G(1)=A(1); for i=2:(n+10) G(i)=F(i)-F(i-1); %得到預測出來的資料 end t1=2007:2016; t2=2017:2026; G;a;b;% 輸出預測值,發展係數和灰色作用量 scatter(t1,A,'b'); hold on plot(2007:2026,G,'r'); xlabel('年份');ylabel('人口數/萬人'); title('基於灰色預測模型的未來十年湖南省人口趨勢圖'); text(2026,7444.6,'7444.6萬'); legend('實際人口數量','預測人口數量'); grid on
可以得到如下結果: 灰色預測模型的檢驗:
%灰色預測模型的檢驗
H = G(1:10);
%計算殘差序列
epsilon = A - H;
%法一:相對殘差Q檢驗
%計算相對誤差序列
delta = abs(epsilon./A);
%計算相對誤差Q
disp('相對殘差Q檢驗:')
Q = mean(delta)
%法二:方差比P檢驗
disp('方差比P檢驗:')
P= std(epsilon, 1)/std(A, 1)
在對模型的檢驗過程中,我們得到了如下表的檢驗結果:
相對殘差Q | 方差比C |
---|---|
-0.0035 | 0.1828 |