灰色预测模型的学习笔记(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

参见:
参见:

猜你喜欢

转载自blog.csdn.net/qq_42716381/article/details/82865409
今日推荐