基于Logistic回归模型的人口预测分析
- 格式:docx
- 大小:405.57 KB
- 文档页数:20
基于Logistic回归模型的人口预测分析
尹东旭,李阳,马雨晨
指导老师:徐慧
(空军工程大学,西安XXXXXX)
摘要:本文在数值微分法和最小二乘法曲线拟合的基础上对Logistic回归模型进行参数估计,预测了人口城镇化和老龄化两个影响因素以及2016-2030年我国的人口总数以及人口所能达到的最大值并对其加以检验。
关键词:Logistic回归模型;数值微分;参数估计;曲线拟合;人口预测1问题重述与社会背景
对于中国这样一个人口大国,人口问题始终是制约我们经济、文化等各方面发展的关键因素之一。
如何使用数学模型来对我国的人口增长进行准确而有效的预测,关乎我国的人民幸福,更关乎国家的发展大事。
近年来中国的人口发展呈现了一些新的特点,比如老龄化进程加速,男女比例失调,以及农村人口城镇化,特别是计划生育政策的施行,这些都不同水平的影响着人口的增长,而这些因素影响着人口增长趋势预测的准确性。
为此,如何综合考量各方面的因素,较为精确的刻画出人口增长趋势,是本文的主要目标。
经过分析与讨论后,我们着重探讨了以下问题:
1. 如何从中国的实际情况和人口增长的特点出发,参考表1中的相关数据及其他材料,建立中国人口增长的数学模型;
2如何利用建立的数学模型对中国人口增长做出预测并加以检验。
2基本假设
1.预测时间内没有重大瘟疫、战争、自然灾害等非正常因素影响人口发展。
从图
1中可以看出2003年60岁以上老人的死亡率因为SARS流行达到五年年来最大值,其余年份假设基本保持平稳。
(见图1)
图1(数据来源于中国统计年鉴)
2.不考虑多胞胎情况。
3.忽略人口统计时漏报误报现象。
4.假设人口只受我国国内的出生率、死亡率和迁移因素影响,不考虑国家之间的
移民。
3模型的分析与建立
3.1logistic模型的介绍
Logistic模型是1938年Verhulst—Pearl在修正非密度方程时提出来的,他认为在一定的环境中种群的增长总存在一个上限,当种群的数量逐渐向着上限上升时实际增长率就要逐渐地缩小,所以也被称为 —方程。
广义Logistic曲线可以模仿一些情况的人口增长(P)的S形曲线。
起初阶段大致是指数增长;然后随着人口开始变得饱和,增加变慢;最后,达到成熟时增加停止,所以又叫sigmoid曲线(S型曲线)。
(摘自百度文库)
logistic方程即微分方程:
(摘自百度百科)
众所周知,人口增长呈现指数型增长,但人口是会受到环境最大容纳量、政策变化、经济发展、科技进步等的影响,因此这些影响因素都成为一种阻滞作用,而人口越接近最大值,这种阻滞作用就越大,所以,我们在数值微分和最小二乘法曲线拟合的基础上对Logistic数学模型进行了参数估计,此方法对许多事物如经济、生物种群、医疗卫生的发展和预测具有很大的应用价值。
只要满足指数增长的事物(S型曲线),就可以使用这种预测方法。
3.2logistic模型建立
首先,我们不妨设时刻t的人口总量为,并将看作连续、可微的函数。
记初始时刻(t=0)的人口为。
规定人口的增长率为常数r,即单位时间内的增量等于r 乘以。
我们考虑t到时间内人口的增量,则有
(1)
令,则得到满足如下的微分方程
(2)
对人口的阻滞体现在对r的影响上,表现为r随着人口数量的增加而下降.我们不妨把人口的增长率r表示为关于人口数量的函数,显而易见为减函数,于是(2)式可写为
(3)
设是的线性函数,即
(4)
此时r表示当人口数目比较少时(理论上设)的增长率,就是假设此时的人口是不受自然资源等限制的固有增长率。
我们要明确参数s的含义,可以引入最大人口环境容纳量,即我国在现在及未来国情下所能容纳的最大人口数量。
则当时,人口达到最大,此时人口增长率为0,即增长率从而得到,于是(4)式可改写为
(5)
将(5)代入(3)得如下的模型
(6)
由分离变量法得方程(6)的通解。
利用初始条件得。
把c代入通解并简化得。
(7)
(7)式可简写为,(8)
其中。
从(8)式可以看出要想预测出人口数量,需求出参数,r或、的值。
我们采用最小二乘法求
的最小值,通过求,并令它们等于零,利用Matlab软件进行处理可以估算,r 的值,并对解取倒数,得到。
利用等长度时刻,,(=2)所对应的三个人口数量求得相关参数
,
(t=)。
3.3 Logistic回归模型的参数估计
对Logistic模型进行参数估计的方法有很多,通常我们使用的方法有Bayes估计、最小二乘法估计、稳健估计等等。
这里我们使用数值微分和预测拟合法对logistic模型进行参数估计,并对结果进行合理验证。
由解(8)中可知,只要对参数,,,进行估计即可得出结果,主要方法和步骤如下:
(1)首先求,对(6)式变形得到
(9)
设为年增长率,根据已经得到的人口总量的数据并且利用数值微分的方法计算得方程的左边就是增长率,然后对进行线性拟合可以求得,由此我们可得。
(2)求参数a、b.将(8)式变形为
两边取对数得,令,,,就能使复杂的指数形式的解变形为一个线性函数,这时我们可以利用Matlab2013a
软件拟合出A与B的值,接着就可以求出的值,从而确定出人口模型解的具体形式。
3.4 Logistic模型在人口城镇化以及老龄化中的应用
根据国家统计局公布的1980年后的人口城乡比以及各年龄段分布,基于上述模型,可以用Matlab仿真模拟出未来的变化趋势(见图2、图3、图4)
图2 人口城镇化预测
从图2可以明显看出我国城镇人口比例正在快速增长,说明我国经济正在飞速发展,拟合曲线与散点图拟合程度高,说明预测结果较为准确。
图3 农村人口预测
从图3可以看出,拟合曲线与散点图拟合程度并不高,说明我国农村人口数会随着政策变化、经济发展等不可控因素发生变化,也从侧面说明人口城镇化正在加速。
图4 人口老龄化预测
从图4可以看出,随着科技的发展,人的寿命越来越长,再加之优生优育的政策,老龄化也随之加剧,老龄化会影响人口的预测,所以这是不得不考虑的一个因素。
3.5 Logistic模型在人口预测中的应用
根据中国统计局在《统计年鉴》中公布的“1949--2008”年人口统计数据(见附录2),为了得到较为准确有效的数据结果,我们选取了1980年到2005年的人口数据加以预测。
首先我们可以求出人口年增长率的值,然后再利用Matlab软件进行拟合,使用Matlab软件可以做出数据的散点图(见图5)我们发现该曲线为单调函数的图像,并且是呈指数型增长的函数,所以可以选用一次多项式进行拟合并仿真。
图5 人口散点图
图6 拟合求最大值
由表一中的数据可以拟合出(单位:亿)(见图6),,,可以得到我国人口总数的Logistic回归模型的表达式为:
通过Matlab2013a进行数据拟合可以直观且方便地看到人口数值的变化情况(见图7),从图中我们可以发现预测的数据和实际数据曲线拟合得比较好。
图7 拟合图像与仿真结果
于是求出预测中国人口的具体公式
我们取1980年的人口总数为=9.8705(注:单位:亿)据上式可以得出2000和2005年的人口数:
当t=20时:
当t=25时:
其相对误差分别为
误差都较小,说明预测结果比较准确。
以此类推,我们可以估算出未来几年的中国人口数(见表2)
表2
4该模型的优点与不足
【1】Logistic回归模型对人口、资源、环境等的发展和预测具有应用价值,是一种实用价值很高的预测方法,基于此模型计算了我国2001年和2005年总人口数的误差情况,并预测了2016年—2030年我国的人口总数。
只要满足呈指数型增长且阻滞作用随着增长加大的事物,就可以使用Logistic函数模型进行预测,而在用Logistic函数进行预测的时候,本文中的估计方法就
能发挥作用。
所以logistic模型的适用面较广,只需更改数据库,即可快速得到所需预测数据,并对此加以验证,非常方便。
【2】本模型充分考虑国情,1980年我国开始推行计划生育政策,所以80年后的数据比较有可参考性,且对人口城镇化与老龄化做出了预测,符合中国国情。
【3】本文利用logistic模型仿真预测未来我国的人口变化并对此进行了检验,可靠性高。
【4】我们把一些难以确定但对预测结果影响不大的参数如重大自然灾害导致的人口锐减、育龄妇女比率的确定设为不变量,这会导致一定误差。
【5】农村人口变化的预测曲线与原始数据拟合程度不高,会产生误差。
参考文献:
【1】任玉杰,数值分析及MATLAB实现[M],北京,高等教育出版社,2007(2):213-216
【2】统计年鉴,中华人民共和国国家统计局/2016年8月27日星期六
【3】李华中,Logistic模型在人口预测中的应用[J],《江苏石油化工学院学报》, 1998(2):32-34
【4】Matlab在数据拟合中的应用,百度文库
/view/f93db08d680203d8ce2f24db.html?fro
m=search2016年8月27日星期六
【5】Logistic函数,百度百科
/link?url=MoN2vPEKjgagGHPhIk1t_4hgmhE
KQr6zBtgU-ekKe271uj0ZZIMDOXvDhufwWgazrdkI6ofmiSnMsVrF
BIzgfa2016年8月27日星期六
附录1
本文数据处理与分析使用了Matlab 2013a、Microsoft Excel
2016 ;论文撰写使用Microsoft Word 2016。
Matalba程序源代码
1 预测拟合代码
%f=a(1)./(1+(a(1)/9.8705-1)*exp(-(t-1980)*a(2)))logistic模型,用拟合的方法求出未知数r和人口最大值。
得到时间和人口的关系
% % 总人口预测
x=1980:1:2005;%data
y=xlsread('data','sheet1','B5:B30');%读取数据
y=y/10000;%化为以亿为单位
y=y';
figure(1)
plot(x,y,'*',x,y);%原始曲线
xlabel('年份')
ylabel('总人口数 / 亿')
title('logistic总人口预测')
a0=[20,1];%a0初始值可以随便设,自己尝试,选最佳
a=lsqcurvefit('hanshu',a0,x,y)%拟合,其中a(1)为人口最大值,a(2)为r
xi=1980:2030;%预测时间
yi=hanshu(a,xi);%预测结果
hold on
plot(xi,yi,'r');
hold off
% % 城镇人口预测
x=1980:1:2005;%data2
y1=xlsread('data2','sheet1','C4:C29')%读取数据
y1=y1/10000;%化为以亿为单位
y1=y1';
figure(2)
plot(x,y1,'*',x,y1);%原始曲线
xlabel('年份')
ylabel('城镇人口数 / 亿')
title('logistic城镇人口预测')
a01=[2,0.8];%a0初始值可以随便设,自己尝试,选最佳
a1=lsqcurvefit('hanshu1',a01,x,y1)%拟合,其中a(1)为人口最大值,a(2)为r xi=1980:2030;%预测时间
yi=hanshu1(a1,xi);%预测结果
hold on
plot(xi,yi,'r');
hold off
% % 农村人口预测
x=1980:1:2005;%data2
y2=xlsread('data2','sheet1','D4:D29')%读取数据
y2=y2/10000;%化为以亿为单位
y2=y2';
figure(3)
plot(x,y2,'*',x,y2);%原始曲线
xlabel('年份')
ylabel('农村人口数 / 亿')
title('logistic农村人口预测')
a02=[0.5,0.02];%a0初始值可以随便设,自己尝试,选最佳
a2=lsqcurvefit('hanshu2',a02,x,y2)%拟合,其中a(1)为人口最大值,a(2)为r xi=1980:2030;%预测时间
yi=hanshu2(a2,xi);%预测结果
hold on
plot(xi,yi,'r');
hold off
% % 人口老龄化预测
x1=1985:5:2005;%data3
y3=xlsread('data3','sheet1','H7:H11');%读取数据
y3=y3';
figure(4)
plot(x1,y3,'*',x1,y3);%原始曲线
xlabel('年份')
ylabel('老龄人口占比 % ')
title('logistic人口老龄化')
a03=[10,1];%a0初始值可以随便设,自己尝试,选最佳
a3=lsqcurvefit('hanshu3',a03,x1,y3)%拟合,其中a(1)为人口最大值,a(2)为r xi=1980:5:2030;%预测时间
yi=hanshu3(a3,xi);%预测结果
hold on
plot(xi,yi,'r');
hold off
2 拟合函数代码
function f=fun3(a,t)
f=a(1)./(1+(a(1)/9.8705-1)*exp(-(t-1980)*a(2))); end
function f=hanshu1(a,t)
f=a(1)./(1+(a(1)/1.9140-1)*exp(-(t-1980)*a(2))); end
function f=hanshu2(a,t)
f=a(1)./(1+(a(1)/7.9565-1)*exp(-(t-1980)*a(2))); end
function f=hanshu3(a,t)
f=a(1)./(1+(a(1)/5.4-1)*exp(-(t-1985)*a(2))); end
附录 2
人口数据。