1. 程式人生 > >灰色預測模型的學習筆記(MATLAB 包含模型的建立 求解 及檢驗)

灰色預測模型的學習筆記(MATLAB 包含模型的建立 求解 及檢驗)

本博文是本人在學習灰色預測模型時所做的筆記,原理及程式碼部分都是基於學習各位大佬的博文,詳見後面的參考, 一、 實操,利用灰色預測模型預測未來十年湖南的人口數量 二、 具體實現,從國家統計局獲取湖南省過去十年的人口資料,作為原始資料,見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

可以得到如下結果: 由上圖可知2016年湖南省人口預測數為7444.6萬人 灰色預測模型的檢驗:

%灰色預測模型的檢驗
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

參見: 參見: