范文一:人口预测模型
人口数据拟合与预测
【摘要】本文对于人口数据的拟合与预测,建立了线性规划模型、指数增长模型及阻滞增长模型三种模型,通过对三种模型最后结果的对比,得出阻滞增长模型的预测最为可靠。
关键字:历年人口数 线性规划 拟合 指数增长模型 阻滞增长模型
一、问题重述:
1994年某报曾报道:“中国社会科学院预测,今年我国人口将超过12亿?”“根据国家计划委员会估计,中国人口的峰值年是2044年,峰值人口数达到15.6亿或15.7亿。”这就是说我国总人口数将出现减少的趋势。有效地控制我国人口的增长,认识人口的变化规律,作出较准确的预报,是有效控制人口增长的前提,是深入贯彻落实科学发展观、到2020年实现全面建设小康社会的需要。 查找资料得1970-1994年我国人口数表如下:
年份 1970 1972 1974 1976 1978 1980 1982 人口8.2992 8.7117 9.0859 9.3717 9.6259 9.8705 10.1654 (万)
年份 1986 1988 1990 1992 1994 人口10.7507 11.1026 11.4333 11.7171 11.9850 (万)
(表一)
二、模型的基本假设:
(1)在模型中预期的时间内,人口不会因发生大的自然灾害、突发事故或战争等而受到大的影响;
(2) 在我国视为没有人口的迁入和迁出;
(3) 人口增长只与人口基数、生育、死亡和老龄化有关; 1984 10.4357
(4) 一段时期内我国人口的死亡率不发生大的波动,不同年龄段人口的分布也不随时间发生变化。
三、符号说明:
t :年份;
x0 :初始人口;
x?t?:人口数;
xm :人口容量;
r :固有增长率。
四、模型的建立及求解
(1)线性规划模型
根据表1中的数据,建立一元线性回归模型y?a?bt进行预测,利用MATLAB软件进行拟合。
输入以下程序:
>> x=1970:2:1994;
y=[8.2992,8.7117,9.0859,9.3717,9.6259,9.8705,10.1654,10.4357,10.7507,11.1026,11.4333,11.7171,11.9850];
>> plot(x,y,'r*','linewidth',2)
>> grid
>> f=inline('a(1)+a(2)*x','a','x');
>> a0=[0 2];
>> [a,resnorm]=lsqcurvefit(f,a0,x,y)
Optimization terminated: first-order optimality less than
OPTIONS.TolFun,
and no negative/zero curvature detected in trust region model.
a =
-286.7708 0.1498
resnorm =
0.0336
>> hold on
>> g=a(1)+a(2)*x;
>> plot(x,g,'b-','linewidth',2)
>>
197019751980198519901995
解得:y??286.7708?0.1498x 相关系数r=0.0336
根据得到的这一模型,对未来人口数进行预测:
t=1970:2:1994;
>> y=-286.7708+0.1498*t
y =
Columns 1 through 9
8.3352 8.6348 8.9344 9.2340 9.5336
10.1328 10.4324 10.7320
9.8332
Columns 10 through 13
11.0316 11.3312 11.6308 11.9304
预测2044年的人口为19.4204亿
y=-286.7708+0.1498*2044
y =
19.4204
分析:线性规划模型只是较为粗略地对人口增长作一个简单的描述,只是笼统的反映了人口增长的大致趋势。并没有考虑到实际情况。因此得到的预测数据不准确。
(2)指数增长模型
Malthus 模型的基本假设下,人口的增长率为常数,记为r,记时刻t的人口为 x(t),(即x(t)为模型的状态变量)且初始时刻的人口
?dx??rx为x0,因为?dt由假设可知x(t)?x0ert 经拟合得到:
??x(0)?x0
x(t)?x0ert?lnx(t)?lnx0?rt
y?lnx(t),a1?r,a2?lnx0??y?a1t?a2 a2r?a1,x0?e
Columns 10 through 13
11.0316 11.3312 11.6308 11.9304
预测2044年的人口为19.4204亿
y=-286.7708+0.1498*2044
y =
19.4204
分析:线性规划模型只是较为粗略地对人口增长作一个简单的描述,只是笼统的反映了人口增长的大致趋势。并没有考虑到实际情况。因此得到的预测数据不准确。
(2)指数增长模型
Malthus 模型的基本假设下,人口的增长率为常数,记为r,记时刻t的人口为 x(t),(即x(t)为模型的状态变量)且初始时刻的人口
?dx??rx为x0,因为?dt由假设可知x(t)?x0ert 经拟合得到:
??x(0)?x0
x(t)?x0ert?lnx(t)?lnx0?rt
y?lnx(t),a1?r,a2?lnx0??y?a1t?a2 a2r?a1,x0?e
用MATLAB求解,先建立M文件:
function f=curvefit_fun2(a,t)
f=a(1)./(1+(a(1)/8.2992-1)*exp(-a(2)*(t-1970)));
然后输入主程序:
t=1970:2:1994;
x=[8.2992,8.7117,9.0859,9.3717,9.6259,9.8705,10.1654,10.4357,10.7507,11.1026,11.4333,11.7171,11.9850];
y=log(x);
a=polyfit(t,y,1)
a =
0.0148 -27.0399
>> r=a(1),x0=exp(a(2))
x1=x0.*exp(r.*t);
plot(t,x,'r*',t,x1,'b')
r =
0.0148
x0 =
1.8060e-012
>> ti=1970:2:2050;
xi=(1.8060e-012)*exp(0.0148*ti);
>> t1=2044;
>> x1=(1.8060e-012)*exp(0.0148*t1)
x1 =
24.8112
>> ti=1970:2:1994;
>> xi=(1.8060e-012)*exp(0.0148*ti)
xi =
Columns 1 through 5
8.2987 8.5480 8.8048 9.0693 9.3417
Columns 6 through 10
9.6224 9.9115 10.2092 10.5160 10.8319
Columns 11 through 13
11.1573 11.4925 11.8377
>>
分析:根据模型得出的2044年人口总数预测为24.8112亿人,
比题目所给的数据高出很多。这是因为任何地区的人口都不可能无限增长,人口增长率事实上是在不断的变化着,即指数模型是不能描述,也不能预测较长时期的人口演变过程。一般说来,当人口较少时,增长较快,增长率较大,人口增加到一定数量以后,增长就会慢下来,即增长率变小。因此,为了使人口预测特别是长期预测更好的符合实际情况,必须修改指数增长模型关于人口增长率是常数这一基本假设。
(3)阻滞增长模型(Logistic模型)
阻滞增长模型是考虑到自然资源、环境条件等因素对人口增长的阻滞作用,对指数增长模型的基本假设进行修改后得到的。阻滞作用体现在对人口增长率r的影响上,使得r随着人口数量x的增加而下降。若将r表示为x的函数r(x)。则它应是减函数。于是有:
dx?r(x)x,x(0)?x0dt (1)
对r(x)的一个最简单的假定是,设r(x)为x的线性函数,即
r(x)?r?sx(r?0,s?0) (2) 设自然资源和环境条件所能容纳的最大人口数量xm,当x?xm时人口不再增长,即增长率r(xm)?0,代入(2)式得
r(x)?r(1?x) (3) xms?rxm,于是(2)式为
将(3)代入方程(1)得:
x?dx
?rx(1?)?
xm?dt
?x(0)?x0
?
(4)
解得:
x(t)?
1?(
xm
xm
?1)e?rtx0
(5)
用MATLAB求解,输入以下程序: t=1970:2:1994;
x=[8.2992,8.7117,9.0859,9.3717,9.6259,9.8705,10.1654,10.4357,10.7507,11.1026,11.4333,11.7171,11.9850]; plot(t,x,'*',t,x); >> hold on; a0=[0.001,1];
a=lsqcurvefit('curvefit_fun2',a0,t,x); disp(['a=',num2str(a)]);
Optimization terminated: relative function value changing by less than OPTIONS.TolFun. a=16.972 0.0380707 >> ti=1970:2:2050; xi=curvefit_fun2(a,ti); plot(ti,xi,'r');
>> t1=2044;
>> x1=curvefit_fun2(a,t1) x1 =
15.9742 >>
得出如下图像:
再输入以下程序,得出拟合的历年人口数据: t=1970:2:1994;
x=[8.2992,8.7117,9.0859,9.3717,9.6259,9.8705,10.1654,10.4357,10.7507,11.1026,11.4333,11.7171,11.9850]; plot(t,x,'*',t,x); >> hold on; a0=[0.001,1];
a=lsqcurvefit('curvefit_fun2',a0,t,x); disp(['a=',num2str(a)]);
Optimization terminated: relative function value changing by less than OPTIONS.TolFun. a=16.972 0.0380707 >> ti=1970:2:1994; xi=curvefit_fun2(a,ti) xi =
Columns 1 through 6
8.2992 8.6222 8.9449 9.2662 9.9012
Columns 7 through 12
9.5852
10.2131 10.5203 10.8219 11.1172 11.4057 11.6867
Column 13
11.9598
分析:阻滞增长模型考虑了环境和资源对人口增长的影响,对比前面两种模型,所得到的结果比较符合实际,所得出的2044年人口数为15.9742亿,与问题所给的15.7亿差距不大,说明这个模型是可行的。但仍然存在一定误差,这是由于该模型忽略了性别比例,出生率,死亡率,人口老龄化等一些重要因素,所用的数据也较少,因此对于长期预测效果不佳,可用于中短期预测。
五、对三种模型的结果分析
三种模型对中国人口数据拟合的结果
总结:根据上表三种模型对人口数据拟合的结果,我们可以看出阻滞增长模型最为趋近实际人口数。
范文二:人口预测模型
二、人口预测模型
(一)人口预测的必要性和可能性
所谓人口预测就是指根据一个国家、一个地区现有人口状况及可以预测到的未来发展变化趋势,测算在未来某个时间人口的状况。这里说的人口状况,首先是指人口的数量,其次是指人口的性别、年龄构成。在此基础上,还可以对未来人口的地区分布、婚姻状况、家庭结构等进行分析。
对人口进行预测是随着社会经济发展而提出来的。过去几千年,人类社会生产力水平低,生产发展缓慢,人口变动和增长也很迟缓,因而客观上对人口未来的发展变化的探讨显得必要性较小。当前生产力发展达到空前的水平,生产已经不是为满足生产者个人的需求,而是要面向社会的需求,所以必须了解需求和供应的未来趋势,协调人口、资源与环境的持续发展。
从人口作为消费者来看,我们在制定今后的经济发展计划和其他事业的发展计划时,必须考虑到未来时期将要消费这些产品、享用这些设施效益的人口数。否则,就缺乏一个衡量的标准。
从人口作为生产劳动者来看,在安排未来各项生产和其他事业的发展计划时,也要考虑当时能参加这些劳动的人数。
人口预测不仅是必要的,而且也是可能的。因为,事物发展变化总是有一定规律的,人的出生率、死亡率等是在不断变化的,但这些变化是逐渐的,沿着一定方向的,而不是杂乱无章的,因而是可以认识和预见的。
当然,任何时候进行的预测也只能是根据当时所掌握的情况和当时能预见到的变化,不能,也不应要求这种预测是一成不变的。随着新情况的出现、随着认识的不断深化,应该不断地修订原来的预测,使之更准确地反映其发展趋势。
当前,面对地球上一定的土地和有限的资源的情况下,为了研究是否有足够的资源来满足地球上人类日益增长的各种需要,实现持续发展的战略,应对3种因素进行充分估计,即人口增加的可能规模、人类各种消费的可能数量以及资源可供利用的价值。预测将取决于三者的生态学上的相互依赖程度。与此同时,为增加对消费品的追求,必然要使环境付出一定的代价,使环境污染问题加重。要取得最佳平衡状态,又不能降低人们的生活水平,实现可持续发展的要求,就必须对人口发展进行预测,有效地控制人口增长。在这种情况下,就要求对预测所显示出来的未来发展趋势和可能出现的结果,不能消极等待,被动地接受,而应积极采取措施,控制人口的数量。
(二)人口预测模型
进行人口预测,首先关心的是未来的人口总数。预测人口总数,一般的方法是“直接推算法”。即根据基年的人口总数直接推算未来的人口数;另一类是“分要素推算法”,即先分别预测影响人口总数的各项要素,如出生数、死亡数,然后再合起来推算未来人口总数。这里着重介绍人口总数的直接推算法。
1.算术级数法:人口预测的算术级数法是,假定历年人口增长的绝对数相同,只要把上一年末的人口总数加本年度人口增加数,就等于下一年初的人口总数。其表达式为:
Yt=a+bX (9-1)
式中:X——时间(a);
Yt——各年人口预测值;
a-x=0时的人口数;
b——逐年人口增加数(即X变动一年Yt的增加数)。
例如,假设我国1964年人口为7亿,年自然增长率为2.6%,即每年净增人口为0.18亿,则1990年为7+(0.18×26)=11.68亿人。
从以上计算可知,用算术级数法预测人口,方法简单,计算方便。但由于影响人口增长变化的因素很多。不可能在一个比较长的时期内,每年的人口都按照一个绝对量增加。所以,此法预测短期的人口变化是可行的,预测较长时间的人口增长则误差较大。
2.几何级数法:一般情况下,经过长期的观察,人们注意到一个地区、一个国家的人口数量是比较平衡的均匀地增长,而且这个增长数量基本上和原有的人数成比例,可以按一个不变的自然增长率增加,对于这样增长的人口,可以用几何级数来预测未来各年的人口。此法采用下列公式计算:
Pn=P0(1+K)n (9-2)
式中:P0——基年的人口总数;
Pn——预测年的人口总数;
K——每年的人口自然增长率;
n——年数。
例如,假设我国1964年人口数为7亿,每年的人口自然增长率为2%,则1990年为P26=7×(1+2%)26=11.71人。
3.指数增长方式计算:实际上人口的增长变化是一个连续不断的过程。在一年当中,出生、死亡和迁移随时都在发生,不论将时间间隔划分的多细,后一时期的人数与前一时期的人数相比总是有所增减的。如果将时间间隔无限缩小,而使时期数目n无限增多,9-2式就变成了以下的指数方程:
Pn=P0eKn (9-3)
式中e是自然对数的底,其近似值为2.7183。
例如,1973年世界人口38.6×108,其每年增长率为2%,到2000年时,世界人口是多少?可按式9-3计算:即P0=38.6×108;K=2%;n=27年。即P11=38.6·e0.54=38.6×1.716=66.2×108。
上面只介绍了人口本身递增的一些计算方法,至于实际世界各国理想人口数量应该稳定在什么水平上?意见分歧很大。从现代科学技术的观点来看,确定理想人口数量是一个客观存在的科学问题。现代科学技术已经为我们研究这个问题提供了理论、方法和工具,这就是应用系统科学、控制论和计算机等学科,在掌握全球以及我国的耕地等资源今后可能保证的支付能力,就可以估算出非再生性资源的贮量和今后的开采速度。对今后若干年内的工、农业和科学技术的发展水平也同样可以做出概略的估算。这些都是研究理想人口目标的基本依据,一旦人口数量的最终目标和达到这个目标的长期人口政策确定后,就可以制定较长远的经济发展规划,以实现人口、资源、环境的持续协调的发展。
范文三:人口预测模型
中国人口增长的预测与控制
摘 要:人口预测在社会经济实践中占有十分重要的地位。当前,我国正处于全 面建设小康社会的重要时期, 而且未来几十年是我国进行社会主义市场经济建设 的关键时期 , 人口增长的稳定与否必将关系到我国经济建设的成败。 因此认识我 国人口数量的变化规律, 建立人口模型, 做出较准确的预报是有效控制人口增长 的前提, 从而在理论上对人口的控制提供理论依据, 这对于我们这样一个人口大 国将有着非常重大的意义。
关键词: Logistic 模型、人口预测模型
一、问题重述
中国是一个人口大国, 人口问题始终是制约我国发展的关键因素之一。 根据 已有数据, 运用数学建模的方法, 对中国人口数做出分析和预测是一个重要问题。
本题要求从中国的实际情况和人口增长的上述特点出发, 利用附录中的相关 内容及数据(也可以搜索相关文献和补充新的数据) ,建立中国人口增长的数学 模型,并由此对中国 2015年人口做出预测。
二、基本假设
1、附录中提供的数据正确无误;
2、人口不会无限制的增长;
3、人口增长率与人口总数和自然环境有关;
三、符号说明
1、 t 时间;
2、 x 人口数量;
3、 r 固有增长率;
4、 s 减少系数;
5、 y 预测的人口数;
四、模型建立与求解
1、 Logistic 模型建立
Logistic 模型体现在对人口增长率 r 的选择上,一般情况下,人口增长率 r 不是一个常量, r 应随着人口数量 x 的增加而下降。假设人口数达到的最大数量 值 x m ,称为最大人口容量。又假设单位时间内人口数量的增长量与当时人口数 量 的比记为 r (x )=r-sx , r 、 s >0,其中 r 相当于 =0的增长率称为固有增长率, 将 r 表示为 的函数 r (x ) , 则它应是减函数。 设 t 时刻的人口数量为 x (t ) , 设初始 时刻 (t =0)人口为 x 0,单位时间内 x (t ) 的增量等于 r 乘以 x (t ) 考虑到 t 到 t+时间 内人口增量,显然有:
x x x t
令得 得到微分方程:
(1)
假定
r (x )=r-sx , r , s >0 (2)
比例系数为 r ,将(2)代入 (1)得
/dx dt
r sx x =- (4)
和
2
/dx dt rx sx =-(5)
根据(4)和附表数据可以估算出 r 和 s. 根据(5)和 r 、 s 的值,通过解微分方 程可以得到 2015年的人口数据。
2、 Logistic 模型的求解
为预测中短期和长期人口增长趋势, 我们已经选用阻滞增长模型来预测。 而前面 已提到, 预测未来人口数量最重要的影响因素是当前的人口数量, 所以需用我国 的五次人口普查数据作依据,再利用阻滞增长模型。根据(4)式的模型就必须 要确定 r 和 s , 此过程我们用 MATLAB 求解, 程序见 (附表 2) , 结果如图 1所示。
图 1
根据 r 、 s 的值用 MATLAB 解微分方程(5)得到预测人口 y ,程序见附表 3,结 果如下:
1978 95809
1979 97217.575473963
1980 98626.7367558762
1981 100035.908770711
1982 101444.51673233
1983 102851.986689128
1984 104257.746395268
1985 105661.226387693
1986 107061.861195356
1987 108459.089715754
1988 109852.35629273
1989 111241.111731741
1990 112624.814218726
1991 114002.929732893
1992 115374.933103176
1993 116740.308936952
1994 118098.552175285
t t x x r t x t t x ?=-?+) () () () (0→?t 0) 0(, ) (x x x x r dt dx
=
=
1995 119449.168671515
1996 120791.676002202
1997 122125.604284691
1998 123450.496448455
1999 124765.908871898
2000 126071.411974512
2001 127366.590755664
2002 128651.044977832
2003 129924.389691024
2004 131186.255610101
2005 132436.289380234
2006 133674.153743259
2007 134899.527812767
2008 136112.107270583
2009 137311.604443901
2010 138497.748378924
2011 139670.28488916
2012 140828.976565525
2013 141973.602761752
2014 143103.959471617
2015 144219.859232585
四、结果分析
用 MATLAB 绘制原始数据和预测数据的比较图 2,如下:
由图可以看出, 模型的预测效果都比较好。 预测了 1978年至 2015年的人口 自然增长,与它的实际值进行比较,其误差在允许的范围内 , 因此,我们认为此 模型达到预测要求。
五、模型评价
Logistic 模型预测人口增长的自然规律较为理想。
六、参考文献
[1] 姜启源 . 数学模型 [M]. 北京 :高等教育出版社 ,1987
[2] 胡良剑 .MATLAB 数学实验 [M]. 北京 :高等教育出版社 ,2006
[3] 卓金武 .MATLAB 在数学建模中的应用 [M]. 北京 :航空航天大学出版社 ,2011
七、附录
1、人口原始数据:
197895, 809万人
197997, 092万人
198098, 255万人
198199, 622万人
1982101, 541万人
1983102, 495万人
1984103, 604万人
1985104, 639万人
1986106, 008万人
1987108, 000万人
1988109614万人
1989111191万人
1990114333万人
1991115823万人
1992117171万人
1993118517万人
1994119850万人
1995121121万人
1996122389万人
1997123626万人
1998124810万人
1999125909万人
2000129533万人(第五次人口普查)
2001127627万人
2002128453万人
2003129227万人
2004129988万人
2005130756万人
2006131448万人
2007132129万人
2008132802万人
2009133474万人
137054万人(第六次人口普查)
2、 r 、 s 估算程序:
textread('2.txt' );t=ans(:,1);x=ans(:,2);
dx=gradient(x,t); %等价于 diff(x)./diff(t) b=dx./x;
f=fittype('r-s*x', 'independent' , 'x' , 'coefficients' ,{'r' , 's' }); cfun=fit(x,b,f);
3、预测人口 y 计算程序:
odefun=inline('x* 0.02857-1.448e-007*x*x', 't' , 'x' )
[t1,y]=ode45(odefun,1978:1:2015,95809);
format longg ;
[t1,y],
plot(t,x,'k+',t1,y, 'r*')
4、 “ 2.txt ” :
1978 95809
1979 97092
1980 98255
1981 99622
1982 101541
1983 102495
1984 103604
1985 104639
1986 106008
1987 108000
1988 109614
1989 111191
1990 114333
1991 115823
1992 117171
1993 118517
1994 119850
1995 121121
1996 122389
1997 123626
1998 124810
1999 125909
2001 127627
2002 128453
2003 129227
2004 129988
2005 130756
2006 131448
2007 132129
2008 132802
2009 133474
2010 137054
范文四:人口预测模型
人口预测模型
想要预测未来某一年的人口数量,我们要建立人口增长模型,人口增长模型常见的有以下几种: 1)马尔萨斯(Malthus)模型——指数模型 已知单位时间内人口增长率为r。
设t时刻时人口数为x(t),则?t时间内增长的人口数为: x(t??t)?x(t)?rx(t)?t?当?t?0时,得微分方程
x(t??t)?x(t)
?rx(t)
?t
dx
?rx,x(0)?x0 dt
求解得
待求参数x0,r.
2) 罗杰斯特(Logistic)模型-阻滞型人口模型
已知环境能容纳的最大人口数为xm,人口净增长率随人口数量的增加而线性减少,即
x(t)?x0e
rt
r(t)?r(1?
x) xm
设t时刻时人口数为x(t),由此建立为微分方程:
dxx
?rx(1?),x(0)?x0 dtxm
求解得
x(t)?
xm
xm
1?(?1)e?rt
x0
待求参数x0,xm,r. 举例说明:
下面是美国近两个世纪的人口统计数据(百万),试建立数学模型,预测2010年美国的人口数。
一 建模分析
目标:寻找人口数量随时间变化的规律,即函数关系式.人口的变化规律有其内在的规律,如Malthus 模型,Logistic模型.
题目中给的数据有什么作用呢?用这些数据做散点图,观察散点图分布规律,确定人口模型.
散点图Matlab程序:
x=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6,50.2,62.9,76,92,106.5,123.2,131.7,150.7,179.3,204,226.5,251.4,281.4]; t=1:22;
plot(t,x,'*')% scatter(t,x)
图形走势很像指数模型,所以我们先选择指数模型,即Malthus 模型.
二 建立模型
Malthus 模型:
dx
?rx,x(0)?x0 dt
x(t)?x0e
要预测,得确定参数x0,r.
方法一:(最小二乘法非线性拟合)
rt
C = lsqcurvefit(fun,x0,xdata,ydata,...)
fun是需要拟合的函数; x0是对函数中各参数的猜想值;xdata 则是横轴坐标的值;ydata 是纵轴的值;C为fun中待预测的系数。
Matlab程序:
(1)用前12个数据预测
xx=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6,50.2,62.9,76,]; tt=1:12;
fun=inline('c(1)*exp(c(2)*tt)','c','tt'); c=lsqcurvefit(fun,[1,1],tt,xx); px=c(1)*exp(c(2)*tt);
plot(tt,xx,'*',tt,px) %(见图一) (2)用所有数据预测
>> x=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6,50.2,62.9,76];
t=1:12;
fun=inline('c(1)*exp(c(2)*t)','c','t'); c=lsqcurvefit(fun,[1,1],t,x);
xx=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6,50.2,62.9,76,92,106.5,123.2,131.7,150.7,179.3,204,226.5,251.4,281.4];
tt=1:22;
px=c(1)*exp(c(2)*tt); px23=c(1)*exp(c(2)*23)
plot(tt,xx,'*',tt,px) %(见图二) px23 =
1.1675e+003
图一 图二
方法二:(线性回归分析法) 确定一元线性回归分析系数的函数: [b,bint,r,rint,stats]=regress(y,x);
注:b为待预测的回归系数,bint是回归系数的区间估计,r是残差,rint是置信区间,stats是用于检验回归模型的统计量,有四个数值:相关系数r^2(越接近1,说明回归方程越显著),F值,与F对应的概率P和误差方估计,P<>
MATLAB程序: (1)用前12个数据预测
x=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6,50.2,62.9,76,92,106.5,123.2,131.7,150.7,179.3,204,226.5,251.4,281.4]'; n=12; t=1:n; xx=x(1:n);
tt=[ones(n,1),(1:n)']; y=log(xx(1:n));
[b,bint,r,rint,stats]=regress(y,tt); x0=exp(b(1));
r=b(2);
py=x0*exp(r*t);
plot(t,xx,'*',t,py) %(见图三)
(2)用所有数据预测
x=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6,50.2,62.9,76,92,106.5,123.2,131.7,150.7,179.3,204,226.5,251.4,281.4]'; n=22; t=1:n; xx=x(1:n);
tt=[ones(n,1),(1:n)']; y=log(xx(1:n));
[b,bint,r,rint,stats]=regress(y,tt); x0=exp(b(1)); r=b(2);
py=x0*exp(r*t); py23=x0*exp(r*23)
plot(t,xx,'*',t,py) %(见图四)
py23 =
516.7091
图三 图四
观察两种方法所的图像,前期数据比较吻合,但到后期就差距比较大了,所以这个模型不能比较准确的预测人口数,那是为什么呢?我们来找原因.
计算净增长率r?
x(t?1)?x(t)
:
x(t)
x=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6,50.2,62.9,76,92,106.5,123.2,131.7,150.7,179.3,204,226.5,251.4,281.4]'; n=length(x); r=ones(n-1,1); for i=1:n-1
r(i,1)=(x(i+1,1)-x(i,1))./x(i,1); end t=1:n-1;
plot(t,r,’*’) %(见图五)
图五
发现净增长率并不是常数!而是随人口数量的增加而线性减少。
三 建立新的预测模型
Logistic模型
dxx
?r(1?),x(0)?x0 dtxm
x(t)?
xm
xm?rt
1?(?1)e
x0
要用非线性回归分析的方法确定参数x0,xm,r. 确定非线性回归分析系数的函数:
[beta,R,J]=nlinfit(x,y,'logisfun',beta0)
注:x是自变量,y是函数值,'logisfun' 为事先定义的非线性回归函
数的M文件,是回归系数beta和想的函数,beta0是回归系数的初始值,beta是估计出的回归系数,R为残差,J为Jacobain矩阵。
M文件
【function yhat=logisfun(beta,t)
yhat=beta(3)./(1+(beta(3)./beta(1)-1)*exp(-beta(2)*t));】
x=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6,50.2,62.9,76,92,106.5,123.2,131.7,150.7,179.3,204,226.5,251.4,281.4]'; n=length(x); t=(1:n)';
beta0=[3.9,0.2298,500]; % beta0是x0,r0,xm的预测值,x0去第一年的人口数,r0的计算见后面程序,xm的预测待定?!
[beta,R,J]=nlinfit(t,x,'logisfun',beta0);
pt=beta(3)./(1+(beta(3)./beta(1)-1)*exp(-beta(2)*t)); p23=beta(3)./(1+(beta(3)./beta(1)-1)*exp(-beta(2)*23)) plot(t,x,'*',t,pt) %(见图六)
p23 =
298.1139
图六
r0的计算程序: 方法一:
x=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6,50.2,62.9,76,92,106.5,123.2,131.7,150.7,179.3,204,226.5,251.4,281.4]'; n=length(x); r=ones(n-1,1); for i=1:n-1
r(i,1)=(x(i+1,1)-x(i,1))./x(i,1); end
r0=mean(r) r0 =
0.2298 方法二:
x=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6,50.2,62.9,76,92,106.5,123.2,131.7,150.7,179.3,204,226.5,251.4,281.4]; n=length(x); t=1:n;
r0=mean((diff(x)./diff(t))./x(1:n-1)) r0 =
0.2298 1978 96259 1979 97542 1980 98705 1981 100072 1982 101654 1983 103008 1984 104357 1985 105851 1986 107507 1987 109300 1988 111026 1989 112704 1990 114333 1991 115823 1992 117171 1993 118517 1994 119850 1995 121121 1996 122389 1997 123626 1998 124761 1999 125786 2000 126743 2001 127627 2002 128453 2003 129227 2004 129988 2005
130756
49567 51.49 50192 51.46 50785 51.45 51519 51.48 52352 51.50 53152 51.60 53848 51.60 54725 51.70 55581 51.70 56290 51.50 57201 51.52 58099 51.55 58904 51.52 59466 51.34 59811 51.05 60472 51.02 61246 51.10 61808 51.03 62200 50.82 63131 51.07 63940 51.25 64692 51.43 65437 51.63 65672 51.46 66115 51.47 66556 51.50 66976 51.52 67375
51.53
46692 48.51 47350 48.54 47920 48.55 48553 48.52 49302 48.50 49856 48.40 50509 48.40 51126 48.30 51926 48.30 53010 48.50 53825 48.48 54605 48.45 55429 48.48 56357 48.66 57360 48.95 58045 48.98 58604 48.90 59313 48.97 60189 49.18 60495 48.93 60821 48.75 61094 48.57 61306 48.37 61955 48.54 62338 48.53 62671 48.50 63012 48.48 63381
48.47
17245 17.92 18495 18.96 19140 19.39 20171 20.16 21480 21.13 22274 21.62 24017 23.01 25094 23.71 26366 24.52 27674 25.32 28661 25.81 29540 26.21 30195 26.41 31203 26.94 32175 27.46 33173 27.99 34169 28.51 35174 29.04 37304 30.48 39449 31.91 41608 33.35 43748 34.78 45906 36.22 48064 37.66 50212 39.09 52376 40.53 54283 41.76 56212
42.99
2006 2007 2008 2009 2010
131448 132129 132802 133450 134091
67728 68048 68357 68647 68748
51.52 51.50 51.47 51.44 51.27
63720 64081 64445 64803 65343
48.48 48.50 48.53 48.56 48.73
58288 60633 62403 64512 66978
44.34 45.89 46.99 48.34 49.95
范文五:人口预测模型
中国人口增长预测
摘要:
本文通过对题目中所给数据和参考资料以及网站上获得的数据进行分析 , 利用多种 模型对数据规律进行归纳提炼 . 首先我们建立了 ,Malthus 微分方程 , 通过求借建立了我 国人口增长的指数模型 , 通过常识和分析我们知道 , 由于受到资源和多种外在和内在因 素的影响 , 人口的这种增长模式是不可能实现的 , 它只是在理想情况下的一种模式 . 为了 弥补这个模型的缺点 , 我们又分别建立了 [1]L eslie人口模型 , 微分差分混和模型 , 神 经网络模型 , 灰色模型 , 等多种模型方式 . 建立 Leslie 模型来预测未来中国大陆人口增 长模型。根据死亡率,生育率是否变化,我们建立了两个模型,第一个是死亡率变化的 模型,在这个模型中,由于两个因素的变化,使得在预测时只能简单的预测下一年的数 据,虽然精度很大,但是预测的时间太短。于是,在分析了死亡率和生育率在所给五年 的各年龄段的情况,我们提出了忽略两个因素变化所带来的影响,以使模型更大众化。 最后通过检验,发现,在做中短期预测时,结果很令人满意,误差很小。但对于长期的 预测准确度有所下降。 通过对第一个模型— Leslie 人口模型的求解, 我们分析得到了短 期,中期,长期,较长期(在这我们定义 1— 3年为短期, 5— 10年为中期, 10年以上 是长期)的预测人口数量在各个年龄段的分布。再对预测数据进行分析,并结合中国的 实际国情,很容易知道 Leslie 人口模型增长只能用来预测中短期的人口发展规律(对 与中国的实际国情而言) 。于是为了预测探究长期的人口发展模型,我们必须找到更好 的模型,结合别人的资料,然后我们又建立了一个有关人口数量的微分方程,这个微分 方程包括了 各方面影响人口增长和变化的因素,如,育龄女性的百分比,潜在育龄女 性的百分比, 人口老龄百分比等等。 这些因素的介入使得分析人口变化规律更接近实际 的情况。随后又建立了另外的模型 , 多种模型相互结合 , 是本文的一大特色 .
关键字:
Malthus 模型 灰色模型 Leslie 人口模型 神经网络
一、问题重述
中国是一个人口大国, 人口问题始终是制约我国发展的关键因素之一。 根据已有数 据,运用数学建模的方法,对中国人口做出分析和预测是一个重要问题。
近年来中国的人口发展出现了一些新的特点,例如,老龄化进程加速、出生人口性 别比持续升高, 以及乡村人口城镇化等因素, 这些都影响着中国人口的增长。 2007年初 发布的《国家人口发展战略研究报告》 (附录 1) 还做出了进一步的分析。
关于中国人口问题已有多方面的研究,并积累了大量数据资料。附录 2就是从《中 国人口统计年鉴》上收集到的部分数据。
试从中国的实际情况和人口增长的上述特点出发, 参考附录 2中的相关数据 (也可 以搜索相关文献和补充新的数据) ,建立中国人口增长的数学模型,并由此对中国人口 增长的中短期和长期趋势做出预测;特别要指出你们模型中的优点与不足之处。
二、问题分析
对人口的预测主要考虑三方面人口的来源:
1. 上一年留下的人口数 --由前一年人口总数减掉死亡人数 2. 新生儿数 --由当年育龄妇女数和生育率决定 3. 流动口数 --考虑往年的人口流动量
对数据进行数据拟合, 其中预期的数值就是预算那部分的和。 从而得出数据的模型, 建立好成熟模型后,就可以对以后进行预测求解。
三 模型假设
1 中国大陆人口看作一封闭系统 , 没有迁入与迁出 2 同一年龄组内是无区别的
3 在 0t 时刻人口分布情况是已知的 4 无重大自然灾害和重大疾病的发生
四、符号说明
()
n A i 第 n 年年龄为 i 的总人数;
() n b i 第 n 年年龄为 i 的妇女的生育率, 即为第 n 年年龄为 i 的妇女所生的小孩数与 年龄为 i 的妇女的总数之比;
() n d i 第 n 年年龄为 i 的妇女的死亡率;
() n i α 第 n 年年龄为 i 的女性占同龄总人数的比例;
) (t I t
年 15-49岁的女性人口总数;
) (t RI t年 0-15岁女性人口总数;
) (t NI t年各年龄段的男性与 50-90+岁女性人口总数之和; ) (t NI t年各年龄段人口总数;
) (i A 15-49岁中年龄为 i 的女性人口总数; μ t年 15-49岁女性死亡率; β 人口年死亡率;
五、建模过程
模型建立初期不考虑其他因素干扰, 建立简单模型, 在分析和建立模型的过程中进 一步优化,建立过程如下:
模型一:人口指数增长模型(马尔萨斯 Malthus , 1766--1834)
1) 模型假设
1.以 P(t)表示时刻 t 某地区的人口数, 设人口数 P(t)足够大, 可以视做连续函数处理,
且 P(t)关于 t 连续可微。
2.时刻 t 人口增长的速率,即单位时间人口的增长量,与当时人口数成正比,即人口
增长率为常数 r 。 2) 模型建立及求解
据模型假设,在 t 到 t t ?+时间内人口数的增长量为
t
t P r t P t t P ???=-?+) () () (,
两端除以 t ?,得到
)
()
() (t P r t
t P t t P ?=?-?+,
即,单位时间人口的增长量与当时的人口数成正比。
令 0→?t ,就可以写出下面的微分方程:
P
r dt
dP ?=,
如果设 0t t =时刻的人口数为 0p ,则 () p t 满足初值问题:
??
??
?=?=00) (P
t P P r dt dP
(1)
下面进行求解,重新整理模型方程(1)的第一个表达式,可得
dt
r P dP ?=,
两端积分,并结合初值条件得
显然,当 0>r 时,此时人口数随时间指数地增长,故模型称为指数增长模型(或 Malthus 模型) 。如下图 1所示。
3) 模型检验与分析
注意到 0
()
0lim () lim r t t t t P t P e
-→∞→∞
==+∞,而我国资源是有限的,考虑到现实生活中主客 观因素的影响,不可能是人口无限增长,故指数增长模型(Malthus 模型)对未来人口
总数预测非常荒谬,不合常理,应该予以修正。
4) 模型讨论
做进一步的讨论,阐明此模型组建过程中所做的假设和限制是非常必要的。 1.我们把人口数仅仅看成是时间 t 的函数 ) (t p ,忽略了个体间的差异(如年龄、性别、
大小等)对人口增长的影响。 2.假定 ) (t p 是连续可微的。这对于人口数量足够大,而生育和死亡现象的发生在整个
时间段内是随机的,可认为是近似成立的。
3.模型所描述的人群应该是在一定的空间范围内封闭的,即在所研究的时间范围内不
存在有迁移(迁入或迁出)现象的发生。
不难看出,这些假设是苛刻的、不现实的,所以该模型不能用于预测未来人口。
模型二:改进的 leslie 模型
考虑到我国目移民现象很少见, 所以认为中国人口是一个封闭系统。 在这种假设下, 下一年人口的数量取决于本年个年龄人口的生育率、死亡率、人口总数和男女比例。具 体函数关系如下:
1() () () (0)
() (1()) () (1; ) n n n k n n n b k k A k i A i d i A i i i N α=+?
=?=??-≥∈?
∑ 用矩阵形式可表示为:1(1, 2,......) n n A L A n -==,其中
(0)(0)(1)(1)() ()
1(0)0001(1)
0001()
n n n n n n n n n b b b i i d d L d i ααα??
?
?-????
-=?
?????
-?
????
?
(0)(1)() n n n n A A A A i ??
????
??=????????
根据具体情况,比如采集到的数据是按年龄段统计得死亡率、生育率、总人口数及男女
比例,我们就不能再按年龄来预测了,此时可以按年龄段来预测。这是一个可按分组的 数据来预测下一个时刻情况的模型。针对本次竞赛所给数据是按年龄统计到 90岁(90岁和 90岁以上的人归为同一组) ,故我们可将上述矩阵写为 92行 91列的矩阵,如下
(0)(0)(1)(1)(89)(89)
(90)(90)1(0)000
1(1)
00
000
1(89)
0n n n n n n n n n n n b b b b d L d d αααα??
?
?
-????=-?
?
??
??-?
?
[]
(0)
(1)
() (90)T
n n n n n A A A A i A =
[]
111111(0)
(1)() (90)
(91)T
n n n n n n A A A A i A A ++++++= ,
此时, 1() (1) n n A i L A i +=-,即
∑=+=90
01) () () () 0(k n n n
n k A k k b
A α
9010
() (1(1) (1) (1, 2, , 91) n n
n n A i d
i A i i +==
---=∑
在第 n 年此模型死亡率、 生育率、 总人口数及男女比例已知时, 我们就能够预测出第 1
n +个年龄的人口数,当然经过简单处理之后,还可得各年龄段的人口总数。
通过作个年龄段的死亡率的散点图发现, 各年龄段死亡率基本稳定在一个常数值附 近 (图 2) , 并且在近些年不会发生重大的医学进步, 所以我们可以假设死亡率为一个常 数, 并且在计算过程中用 2001-2005的平均死亡率代替它。 通过 2001-2005生育率的散 点图 (图 1) 可以发现 2003年的生育率情况偏离其他年份的情况, 而其他几年的情况图 像形状相似,因此剔除 03年的数据,用剩余四年的平均出生率作为生育率的估计值, 即也假设出生率为一常数。通过统计数据发现出生性别基本稳定在 1.06附近,所以也 假定生育率为常数。在这些假设下即可对我国人口数量进行预测。利用 2001年的各年 龄段的人口数量为基 , 做各年份预测 , 误差图见附录;所以可以得出对 5岁到 75岁之间 的预测准确度是很高的。在此基础上通过拟合用 2001的数据用此模型预测 2002-2005的人口情况,发现拟合很好(见附录 图 1) ,这说明此模型可进行短期和中长期预测并 且效果令人满意。在附录中给出了对 2008年各年龄段人数的预测。同时也给出了长期 预测 (对 2040年的预测 ) 。但是对于长期预测此模型效果不太理想 (见附录(图 2) ) 。
(图 1) 2001-2005年各年龄段生育率比较
(图 2) 2001-2005个年龄段死亡率比较
此时, 1() (1) n n A i L A i +=-,这里
(0)(0)(1)(1)(1) (1)
() () 1(0)000
1(1)
00
000
1(1)
0n n n n n n n n n n n b b b i i b i i d L d d i αααα--??
?
?
-????=-?
?
??
??--?
?
[]
(0)
(1)
() () T
n n n n n A A A A i A m =
即
10(0)() () () m
n n
n n k A b
k k A k α+==∑
10
() (1(1) (1) (1, 2, , ) m n n
n n A i d
i A i i m +==
---=∑
通过矩阵乘法可得
0k
n k A L A += (0,1, 2, , ) i m =
由上述公式,可以预测第 k 年的人口数量。
优点:此模型的优点是在满足假设的前提下能够非常准确的预测出下一年的人口 数。
缺点:过分依赖于前一年的死亡率、生育率、总人口数及男女比例,只有这些参数 已知时,才能预测此下一年,并只能预测一年。
模型三:微分差分混和模型
考虑到中国迁入迁出人口所占总人口数比例较小,故假设中国人口为一封闭系统, 于是基于微分差分的思想,建立微分差分混合模型。
???
??
?
??
???
?
?====-+-=---=+-==++0000) 0(, ) 0(, ) 0(, ) 0() () () 1() () () () () ()
() () () () () () () () (N N NI NI RI RI I I t I t RI t I t I t N t RI t N t I dt t dN t I t RI dt t dI t N t NI t RI t I μλλλβλδμλ 参数的求解公式:
)
()
49() 49(t I k A A -++=
δ )
()
15() 15(t RI k A A -++=
λ
方程 1:中国人口组成的刻画;
方程 2:育龄女性数目的变化趋势; 方程 3:中国总人口的变化趋势; 方程 4:育龄女性人口数的变化 方程 5:给个变量赋予初值
利用 2001年的数据可解得参数如下:
0.13436516λ=, 0.00110974μ=, 0.0997971δ=, 0.0059342β=, 0.11088373γ= 上述模型中个变量的解析解悟求得,但是数值解可以应用龙格 -库塔法,进行编程求得 近似值。
优点:该模型全面考虑了各种因素对人口总数等的影响, 计算结果应该比较贴近实 际情况
缺点:较难以计算出连续数值
模型四:神经网络模型
人脑神经网络模型能模拟人脑神经组织的运行机制,因此具有较强的信息处理能 力,对复杂问题具有自适应和自学习的能力,可以很好的协调多种输入信息的关系。神 经网络因其自身的自适应,自学习性,高效性,具有可逼近任意非线性系统的能力而成 为系统辩识及预测的有力工具。
我们将中国人口的变化看作一非线性的输入输出系统:
() ((1), , (), (1), , ()) y u y t f y t y t n u t u t n =---- ;
其中 () u t 为影响整个系统的控制因素, (1), , () y y t y t n -- 为系统前 y n 次输出对系统新
的输出的反馈影响。 我们采用并联识别模型的离散时间的动态神经网络来识别此非线性 系统,并做出相应的预测: 网络的设计:
我们借助多层前向 BP 网络(Back-Propagation Network)
令 ?() y t (, N A =?(1), , y t - ?(), (1), , ()) y u y t n u t u t n --- ; 将 ?() y t i -经过 i 步时延反馈到网 络的输入端 , 对网络的权值、阈值不断修改,进行自适应训练,以跟踪网络输入样本值
的变化,达到对未来值的预测。
其中 ?() y
t ?(), () (1, 2, , ) u y t i u t j i n --= 为神经网络的输入, ?() y t 为神经网络的输出,代
表神经网络的权空间。
建立以出生率,死亡率,性别比以及老龄化作为四个神经元的输入样本,以全国总 人口数作为一个神经源元的输出样本,通过神经网络,进行模型训练,并预测第 N 年全 国的总人数。
网络的几个主要参数:
1. 网络层数、结点数的确定:
如果网络过于复杂,就不利于网络学习的收敛,得不到良好的学习结果。因此,在确定 输入层时,我们仅选择下一个输出值的前 9个已确定样值和 t 作为网络输入层的输入结 点。由于 9个样值点之间取值差异可能很大,这样的输入数据不利于网络学习及收敛, 因此将数据除以一个整数 100N =对数据进行压缩(如:累计病例作为输入时最大最小 可相差 1000 多,我们选取 N=80,数据压缩到 [0, 13]范围内)。
对于输出层,采用单节点形式。
对于隐层,我们采用隐层个数为输入层的一半,即 5 个。
2. 网络各层激活函数的确定及算法的选用: 我们采用了 BP 网络经典的 Sigmoid 传递函数:1() 1x
f x e
-=
+和改进 BP 算法(动量法 +
学习自适应调整策略)对网络进行训练。 3.训练次数 1000 次 详细算法步骤如下:
Step 1: 初始化:令 i =1; 设定预测年数 N ; Step 2:用过去以有的 n 个样点值 (n 代表天数 ) , 设为 P={ i p , 1i p +, 1n i p +- } 用作为网 络输入的样本向量,用 BP 算法训练此网络:计算各层接收向量 Z 及输出向量 y ;利用实 际输出 y 与该样本理想输出 D 的差值反向修改前面各层的权值矩阵 A,使权值的改变方 向沿着负导数方向, 使实际输出尽量逼近理想输出, 最后在激励 () u n i +下得到将来的一 个预测点值 1n p +;
Step 3:将预测出的 1n p +加入阳电值集合 P ,并执行 /{}i p p p =,将元素 i p 从集合 P 中除去,
1i i =+;
Step 4:若 i 未达到设定的预测天数 N ,转 Step 2,否则推出系统循环。 Step 5:在同一坐标系中作出预测值和实际采样值曲线 ;
模型五:灰色模型
灰色系统是指部分信息已知、部分信息未知的系统 , 它介于一无所知的黑色系统与 全部确知的白色系统之间 , 人口系统正是这样一个灰色系统。影响人口增长变化的因素 很多 , 其中不乏一些不确定因素 , 用灰色系统预测法对人口变动进行分析、预测 , 可以为 国家制定合理的人口控制政策、为各级政府制定相应的人口管理目标 , 提供科学的决策 依据。实际灰色建模中,系统的原始序列数据不一定全部用来建模,不同维数 (或长度 ) 序列建模,所得参数 a,b 的值是不一样的,因而模型的预测效果也不同,这里,我们选 取中长序列 (1991-2004年 ) 、短序列分别对 2005年全国人口进行模拟预测,通过比较分 析得出最佳预测序列。
1. 中长序列灰色增量模型对全国人口的检验及预测
(1) 中长序列灰色增量模型对 2005年全国人口的模拟预测
普通灰色增量模型的模拟预测公式 :
X(t+ i)=-6213.759*exp(-0.05598469*t)+(27561.759),t= 1,2,3,...
新初值灰色增量模型的模拟预测公式 :
X(k) =- 13396.759*exp(-0.05598469*(k-n))+(27561.759),k=1,2,3,.
离散灰色增量模型的模拟预测公式 :
Xl`1(k+l)=0.9503X0 )(k)+ 15 28.58, k=1,2,3,.
下表给出这三种模型对 2005年全国人口检验性预测结果的比较。
(2) 中长序列灰色增量模型对未来 50年全国人口的预测
2005
201020152020202520302035204020452050
1.31.32
1.341.361.381.41.421.441.461.481.5x 10
5
2. 短序列灰色增量模型对全国人口的检验及预测
(1)短序列灰色增量模型对 2005年全国人口的模拟预测,为筛选合适的模型,这里分别 选取 5.9维短序列建立灰色增量模型、新初值灰色增量模型和离散灰色增量模型,对我 国总人口数进行检验性预测。
普通灰色增量模型的模拟预测公式 :
X(t+ l)= -17143.853*exp(-0.05244452*t)+(18100.853), t=1,2,3,. 新初值灰色增量模型的模拟预测公式 :
X(k ) =-138 98 .853*exp(-0.05244452*(k-n))+(18100.853), k=1,2,3, 离散灰色增量模型的模拟预测公式 :
X1'1(k +l )=0.9628X1' 1(k) + 9 00.1719 k= 1,2,3,...
经比较 ,采用 6维模型建立最优预测模型,下表给出这三种模型对 2005年全国 人口检验性预测的检验比较。
2005
2010201520202025203020352040204520502055
1.31.32
1.341.361.381.41.421.441.461.48x 10
5
经过比较分析,中长序列和短序列灰色模型在全国人口总量上的预测精确度较高, 且三类灰色模型在每一种序列中的预测值相差无几, 这表明灰色增量模型关于全国总人 口的预测是十分合理而有效的。 同时我们看到中长序列灰色模型在全国人口总量上的预 测值偏小,短序列灰色模型在全国人口总量上的预测值偏大,可将中长序列、短序列的 预测结果联合起来作为中国未来总人口的预测区间, 即以短序列预测值为上限, 而将中 长序列的相应结果作为下限,全国人口预测值则形成一个喇叭状的预测灰区间,因此, 将较为远期的预测值视为规划值可能更为恰当。 分析与讨论
1. 综上可知,运用灰色增量模型,弱化了干扰因素,揭示了系统的运行规律,因而对 全国总人口的预测具有更高的精度。 在确保当前人口系统运行的条件下, 应有以下预测 结论 :
(1)到 2010年中国总人口增长率将下降到 4.61%o左右,到 2025年将达到现在发达国家总 人口增长率 2.5%0的水平。
(2) 2006到 2010年,中国每年净增人口数将由 715万逐步下降到 600万左右 :到 2030年, 年净增人口数为约 300万 ; 而到 2050年,年净增人口数将在 130万左右。到那时,中国人 口将基本实现零增长。
(3) 2006年底中国人口将为 13.147亿,到 2010年底,中国人口将不超过 13.5亿,到 2030年将最多达到 14.255亿 ;2040年最多为 14.5亿,而到 2050年最多达 14.653亿,中国未来 的人口峰值不会超过 14.8亿。
2. 当前,我国在逐步解决人口数量问题的同时,人口结构问题日趋突出,面临着出生 人口性别比严重失衡、出生缺陷人口居高不下、过快进入老龄化社会,未来 20-30年, 中国将先后面临劳动年龄人口、 老龄人口和总人口这三大人口高峰的严峻考验, 为此我 们必须充分做好各项应对准备。
3.最近,有关中国正处于“人口红利”期的报道,曾引起媒体和社会各界的关注。虽
然这个时期就业压力非常大, 却是经济发展的黄金时期。 现在人们谈及中国所取得的经 济发展成果时,多与改革开放相联系其实, “人口红利”也是一个极其重要的因素。中 国的“人口红利”还能维持 10年,最多 15年。预计到 21世纪 30年代,中国老龄化将达到 高峰,城镇的养老负担将大幅提高,医疗费用也随之大大加重。据统计, 2015年中国老 年人人数将突破 2亿,而到 2040年将达到 4亿。
五.参考文献:
[1]邓聚龙 〈 〈灰色系统理论教程〉 〉华中理工大学出版社 1990
[2]中华人民共和国国家统计局 全国人口普查公报 www.stats.gov.cn/tjgb/rkpcgb 2007
[3]胡守信 李柏年 基于 MATLAB 的数学试验 科学出版社 2004
[4]杜廷松 数值分析及试验 科学出版社 2006
六.附录:
图 (1) 各年份预测人口数量与实际人口数量的相对误差
4
图(2) 2005年真实值(2005real )和各年预测值做比较
Leslie 人口改进模型(死亡率,生育率变化) JA V A 程序
package model;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
public class NextPrediction {
public static void main(String[] args) {
double[] a0 = new double[92]; // 第 n 年年龄为 0岁的人口总数
double[] b0 = new double[91]; // 第 n 年年龄为 0岁的人的生育率
double[] c0 = new double[91]; // 第 n 年年龄为 i 岁的女性占 i 岁人口总数的比例 double[] d0 = new double[91]; // 第 n 年年龄为 i 岁的人口的死亡率
/**
* 初始化文件:
* a0.txt:初始化第 n 年年龄为 0岁的人口总数,每个数据占一行
* b0.txt:初始化第 n 年年龄为 0岁的人的生育率,每个数据占一行
* c0.txt:初始化第 n 年年龄为 i 岁的女性占 i 岁人口总数的比例,每个数据占一行 * d0.txt:初始化第 n 年年龄为 i 岁的人口的死亡率,每个数据占一行
if(args.length != 4) {
System.out.println(
System.out.println(
}
try {
BufferedReader in = new BufferedReader(new FileReader(args[0])); String s;
int i=0;
while((s = in.readLine()) != null) {
a0[i] = Double.parseDouble(s);
i++;
}
in.close();
// 对第 90项重新赋值
a0[90] = a0[89] + a0[90];
in = new BufferedReader(new FileReader(args[1]));
s = in.readLine();
i=0;
while((s = in.readLine()) != null) {
b0[i] = Double.parseDouble(s)*0.001;
i++;
}
in.close();
in = new BufferedReader(new FileReader(args[2]));
s = in.readLine();
i=0;
while((s = in.readLine()) != null) {
c0[i] = Double.parseDouble(s);
i++;
}
in.close();
in = new BufferedReader(new FileReader(args[3]));
s = in.readLine();
i=0;
while((s = in.readLine()) != null) {
d0[i] = Double.parseDouble(s)*0.001;
i++;
}
in.close();
} catch (FileNotFoundException e) {
System.out.println(args[1] +
System.exit(-1);
} catch (IOException e) {
System.out.println(args[1] +
System.exit(-1);
}
File result = new File(
if(result.exists()) {
}
try {
result.createNewFile();
} catch (IOException e) {
System.out.println(
}
PrintWriter out;
try {
out = new PrintWriter(new BufferedWriter(new FileWriter(result))); // 求首项
double first = 0d;
for(int k=0; k<=90; k++)="">=90;>
first += a0[k]*b0[k]*c0[k];
}
out.println(first);
// 求其他项
for(int i=1; i<=91; i++)="">=91;>
double other = (1 - d0[i-1])*a0[i-1];
out.println(other);
}
out.close();
} catch (IOException e) {
System.out.println(result.getName() +
}
}