七、模型的推广
模型中动态Leslie模型中,各年龄育龄妇女总生育率等动态参数随时间不断变化,使预测结果能很好地和实际情况相吻合,预测结果精度高。但是模型还可以从其他方法上来完善。可以增加考虑因素,对模型进行推广,提出加入城乡人口迁移率、用因素分析的方法研究人口系统之外的各因素条件对人口发展的影响等对模型进行调整和改进思路。
考虑城乡人口迁移率,为了更合理的描述人口的迁移,可引入托达罗人口迁移模型,考虑人口迁移的根本原因,分析城乡收入差距、城市的就业率、迁移成本等因素对人口迁移的影响,对人口迁移做出合理的预测。
计划生育是影响中国人口的重要因素,考虑在计划生育的影响下的人口系统的复杂性,为了更加精确合理的描述在计划生育下人口的发展状态,引入Sharpe-Lotka模型,并在Sharpe-Lotka模型的基础上考虑实行计划生育的复杂性,建立人口复杂巨系统的数学模型. 将全体女性人口划分为未育女性人口、节育女性人口、绝育女性人口,考虑其各自的密度函数,建立偏微分方程模型,对计划生育影响下的人口变化做出合理预测。这样便可以更好地反映人口发展状况,使预测结果与实际值更接近,更具有普遍意义。近年来,人口城镇化加速,大量农村人口流入大城市,给大城市的发展带来一定的影响。所以,如何处理好城乡人口迁移率的问题占有重要地位。也可以从托达罗的人口迁移模型中得到相关启发,并做进一步深入做研究工作。
人口老龄化加速也是人口问题的重点。人口的老龄化不断加深,使得社会的生产力水平下降,社会抚养负担加重,人口的生育率也随之发生改变。人口老龄化逐渐成为社会关注的焦点。
人口问题说到底是发展问题,提高人口质量与控制人口数量是相辅相成的。人口素质的提高是经济增长的一个重要源泉。世界银行研究表明,劳动力受教育平均时间每增加一年,国内生产总值就会增加9%。随着我国现代化的不断推进和市场经济的飞速发展,迁移流动人口大量增加,农村剩余劳动力纷纷涌入城市,这给计划生育工作带来新的课题。所以,模型如何从人口素质的方面着手研究人口发展问题意义重大。
本文的动态Leslie模型较好地解决了人口发展状况的预测问题,尤其是其较强的可调性,使得模型能适应不断变化的社会人口发展状况。因此,本模型还可以推广到其他类似的研究领域,如自然界生物种群生长情况的研究、各种离散度高的离散系统的研究等等。
参考文献
[1] 姜启源 谢金星 叶 俊等编著,数学模型(第三版),北 京,高等教育出版
社, 2003年
[2] 徐金明 主编, MATLAB实用教程,北京 ,清华大学出版社*北京交通大学
出版社,2005年7月
[3] 邓聚龙 著,灰色系统基本方法 ,武汉,华中科技大学出版社,2005年8月
19
[4] 宋健 于景元 著,《人口控制论》,科学出版社,北京,1985年 [5] 高海音 郭珊珊,变系数Leslie模型在污染环境下生存问题的研究,
长春大学学报,2006年6月
[6] 中华人民共和国国家统计局,http://www.stats.gov.cn/tjsj/ndsj/ , 2007年9月21日
附 录
function d=f1(datar,datap) %求各个年龄的死亡率。 n=size(datap); m=size(datar); e=m(2)/n(2); for i=1:n(2) p=datap(:,i);
D=datar(:,1+(i-1)*e:i*e); for j=1:m(1)
t=[D(j,3)*sum(p(1:2)) D(j,7)*sum(p(3:4)) D(j,11)*sum(p(5:6))]; d(j,i)=(t(1)*D(j,4)+t(2)*D(j,8)+t(3)*D(j,12))/sum(t); end end
function b=f2(bwr,datap,datar,databr) %求生育率。 m=size(datar); n=size(datap); e=m(2)/n(2); for i=1:n(2)
w=databr(:,1+(i-1)*3:3*i); D=datar(16:50,1+(i-1)*e:e*i); p=datap(:,i); a=bwr(i,:);
a=100./(a+100); for j=1:35
t=[D(j,3)*sum(p(1:2)) D(j,7)*sum(p(3:4)) D(j,11)*sum(p(5:6))]; b(j,i)=sum(t.*w(j,:).*a)/sum(t); end end
function x=f3(x0,s,b)
%预测下一年的女性人口按年龄分布的向量。 n=length(b);
20
x(1)=x0(16:15+n)*b/1000; n=length(s); for i=1:n-1
x(i+1)=s(i)*x0(i)/1000; end
function x=f4(datap,datar,k)
%求各年度2000+k的个年龄段女性人口的分布向量。 m=size(datar);
D=datar(:,1+(k-1)*12:k*12); p=datap(:,k); for i=1:m(1)
x(i)=(D(i,3)*(p(1)+p(2))+D(i,7)*(p(3)+p(4))+D(i,11)*(p(5)+p(6)))/100; end
function x=f5(x0,s,b,k)
%预测k年后的女性人口分布。k>=2 for i=1:1:k if i==1
x(i,:)=f3(x0,s,b); else
x(i,:)=f3(x(i-1,:),s,b); end end
function X=f6(datap,datar,S,B,k)
%比较2001-2005预测30年每年的人口数量。 s='rbgy'; for i=1:5
x0=f4(datap,datar,i);
X(i,:)=sum((f5(x0,S(:,i),B(:,i),k))'); if i~=5
plot(1:k,X(i,:),s(i)); end
hold on; end
function x=f7(s,b,m,n)
%b,s分别为平均的出生率向量,平均的存活向量,均为列向量。 %m为第2000+m年的人口分布向量; %n为预测的年数。 load datap;
21
load datar;
x0=f4(datap,datar,m); x=f5(x0,s,b,n);
function x=f8(s0,b0,m,n,mr)
°,s0分别为平均的出生率向量,平均的存活向量,均为列向量。 %m为第2000+m年的人口分布向量; %n为短中期预测的年数。 %总和生育率beta=1.8。
%mr表示当前2000+m年男女人数之比。 beta=1.8;
beta=beta/(1+mr);
detabeta=beta-sum(b0)/1000;
b=b0*(detabeta)/(sum(b0)/1000)+b0;%修正生育率。 x=f7(s0,b,m,n);
function [X,Q,kb]=f9(x,s0,b0,k,m)
%°,s0分别为平均的出生率向量,平均的存活向量,均为列向量。 %m表示取2000+m年的人口分布向量为初始迭代向量; %n为短中期预测的年数。 %总和生育率beta=1.8。
%mr表示当前2000+m年男女人数之比。 %x=[115.71 116 116.45 117.76],为1994-1996;1997-1999;2000-2002;2003-2005
%的平均出生率。 beta=1.8;
y=fGM11(k,x);%计算预测序列,k表示预测k个新数据 n=length(x); kb=[x(3),x(3)]; y=y(n:n+k-1);
y=[x(4),y];%并上2003-2005年的出生男女比。 n=length(y); for i=1:n*3
j=fix((i-1)/3)+1; kb(2+i)=y(j); mr=y(j)/100; if i==1
X(i,:)=f8(s0,b0,m,1,mr);%预测第2000+m+i年的女性人口分布向量。 beta=beta/(1+mr);
detabeta=beta-sum(b0)/1000;
b=b0*(detabeta)/(sum(b0)/1000)+b0;
Q(:,i)=b;%第2000+m+i年的生育率分布向量。 else
22
beta=1.8/(1+mr);
detabeta=beta-sum(b)/1000;
b=b*(detabeta)/(sum(b)/1000)+b; Q(:,i)=b;
X(i,:)=f3(X(i-1,:),s0,b); end end
kb=kb(1:3*(k+1));
function K=f10(x,K0,x0,s0,b0,m,k); %求各年的男女人数比
[X,Q,kb]=f9(x,s0,b0,k,m); n=length(X(:,1)); for i=1:n if i==1
K(i)=(x0*s0*K0/1000+kb(i)*X(i,1)/100)/sum(X(i,:)); else
K(i)=(X(i,:)*K(i-1)*s0/1000+kb(i)/100*X(i))/sum(X(i,:)); end end
function [Qp,Xp,Kp]=f11(X,Q,p,s0,a,k,K);
%a为当前的出生性别比,p为政府采取有关措施降低出生性别比的力度。 bsexr=1.05; i=1;
bmnr1=[];
while a-bsexr-p*i>=p bmnr1(i)=a-p*(i); i=i+1; end
n=length(bmnr1); Xp(1:6,:)=X(1:6,:); Qp=Q(:,1:6); b=Q(:,6); for i=1:k if i<=n
mr=a-p*(i-1); else
mr=bsexr; bmnr1(i)=mr; end
beta=1.8/(1+mr);
detabeta=beta-sum(b)/1000; b=b*(detabeta)/(sum(b)/1000)+b;
23
Qp(:,6+i)=b;
Xp(6+i,:)=f3(Xp(6+i-1,:),s0,b); end
n=length(Xp(:,1)); bmnr1; for i=1:n-6 if i==1
Kp(i)=(X(i+5,:)*s0*K(6)/1000+a*X(i+6,1))/sum(X(i+6,:)); else
Kp(i)=(Xp(i+6,:)*s0*Kp(i-1)/1000+bmnr1(i)*Xp(i+6,1))/sum(Xp(i+6,:)) ; end end
function f12(p,k,str)
%画图,不同力度下总人口的预测; load matlab.mat str='r.b0yxg+k*'; for i=1:length(p)
[qp,xp,kp]=f11(X,Q,p(i),s0,1.185,k,K); sw=sum(xp');
kp=[(K(1:6))',kp]; figure(1);
plot(1:length(kp),kp,'*'); hold on;
sall=sw.*(kp+1); figure(2);
plot(1:k+6,sall*1000,'.'); hold on; end
24