用Leslie模型在Matlab上进行人口预测的时候,短短几十年内人就全死光了!在网上搜了相关的一个大熊猫数据放进去,预测结果竟然又是对的。那是我人口数据出了问题吗?我拿着出生率、死亡率这些数据和别人的数据比对了很久,愣是没有发现不妥。
正常的模型就算有波动也不至于那么大吧,求解答!
源码如下
p=0.477265613;%2010年广州市中女性占总人口比例
X0=[23.0104 19.4277 23.4854 45.8947 88.8307 70.1968 57.6086 59.9243 51.6250 41.9568 30.4577 28.6074 19.6419 13.2032 12.0028 10.0158 6.0632 4.2679];%单位:/万人
C=eye(17);%单位矩阵
b=[0.999000451 0.999871318 0.999872261 0.999893234 0.999918947 0.999877487 0.999824679 0.999636208 0.999449879 0.998939385 0.997964390 0.997276928 0.995163401 0.991093068 0.982804012 0.967681064 0.935578572 0.860774620];%生存率
X0=X0';
for i=1:17
C(i,:)=C(i,:)*b(1,i);
end
C;
a=[0 0 0 0.00082 0.0269 0.06562 0.04275 0.01587 0.00628 0.00366 0 0 0 0 0 0 0];
%由原始数据得到的生育率
d=zeros(18,1);%0矩阵
B=[a;C];%a在C上面构成B
L=[B,d];%构造的Leslie矩阵
for i=0:1:39%a:step:b,ab为起点终点,step为步长
X=L^i*X0;%第i年后女性各个年龄段的人口数(万)
z=X./p;%第i年各个年龄段的人口总数预测
Z(1,i+1)=sum(z);
z0_14=sum(z([1:3],:));%第i年5-9岁的总人数
Z0_14(1,i+1)=z0_14;
z15_49=sum(z([4:10],:));%第i年10-14岁的总人数
Z15_49(1,i+1)=z15_49;
z50_85=sum(z([11:18],:));%第i年15-19岁的总人数
Z50_85(1,i+1)=z50_85;
end
Z
plot(Z)