根据教材上给定的每十年美国的人口数据,预测2020年美国人口数据。
注:本文中的数据省略了数量级
模型一 指数增长模型
方法一:一元线性回归
注:使用了MATLAB中的cftool工具箱
结果如下:
方法二:数值微分
lndata=log(data);
dx(1)=(-3*data(1)+4*data(2)-data(3))/20;
for i=2:21
dx(i)=(data(i+1)-data(i-1))/20;
end
dx(22)=(3*data(22)+data(20)-4*data(21))/20;
r=dx./data;
mean_r=mean(r);
fun=3.9*exp(mean_r.*t);
plot(t,fun);
hold on;
plot(t,data,'.');
hold off;
拟合结果如下:
方法三 改进的指数增长模型
%一次函数拟合增长率
p1=polyfit(t,r,1);
r0=p1(2);
r1=-p1(1);
rt=polyval(p1,t);
plot(rt);
hold on;
plot(r,'.');
hold off;
xt=3.9.*exp(r0.*t-0.5*r1.*t.^2);
plot(xt);
hold on;
plot(data,'.')
人口的拟合结果如下:
模型二 logistic模型
clc,clear;
%准备拟合数据
t=0:10:210;
data=[3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2 62.9 76 92 105.7 122.8 131.7 150.7 179.3 203.2 226.5 248.7 281.4];
t1=0:10:220;
data1=[data 308.7];
%根据工具箱cftool求解出参数
a=0.002057
b=0.12
r=0.0208
xm=1.0/a*1e6%单位转换
x0=xm/(b*xm+1)*1e6
%美国人口预测量pre=1/(a+b*exp(-r*230))*1e6
使用MATLAB工具箱cftool的界面
模型效果:
根据logistic部分的代码,即模型预测2020年美国人口数据为3.2674亿人,对比实际数据:查阅资料可知,截至2020年4月1日,美国人口约为3.31亿人,相对误差约为1.3%。