文档视界 最新最全的文档下载
当前位置:文档视界 › 中国人口增长趋势预测

中国人口增长趋势预测

中国人口增长趋势预测
中国人口增长趋势预测

中国人口增长趋势预测

令狐采学

摘要

人口总数的预测对未来资源分配,划分有着重要的意义,本文根据人口预测模型结合所给数据进行人口预测,并进行模型改进结合最小二乘法拟合出较理想的人口变化趋势。

第一问中,采用Logistic模型描述了人口的增长规律,通过简要的假设设置相应的预测系数

第二问中,根据表中所给的数据,运用Matlab以及Excel 得出人口随时间变化的曲线

第三问中,通过运用非线性最小二乘法拟合,Matlab编程得到相关的系数并判断模型的可用性。

第四问中,根据所得的模型,带入相关数值得到2030年人口数量将达到144210万人

第五问中,通过改进求解拟合参数的方法,将非线性最小二乘法改为线性最小二乘法估计模型参数,通过分析可知2030年可能会达到我国人口数量的峰值近似为145168万人,与国家人口预测结果基本相符合。

关键词: Logistic模型;最小二乘估计;Matlab;线性拟合

一. 问题提出

中国是一个人口大国,人口问题始终是制约我国发展的关键因素之一。关于中国人口问题已有多方面的研究,并积累了大量数据资料,对于表中所给出的数据,研究人口增长的规律。

问题一,作出适当的简化假设,在此基础上建立中国大陆人口群体增长的数学模型。

问题二,对表中所给出的数据,画出1949~2017年中国大陆人口总数随时间变化的曲线;

问题三,对第1问模型中的参数进行估计

问题四,预测2030年中国大陆的人口总数。

问题五,模型的评价与改进。

二.问题分析

由于人口的增长受到自然资源,环境条件等因素的影响,因此第一问的模型选取应该选用能够反映阻滞作用对人口增长率的影响,使增长率r能够随着人口数量的增长而下降,基于此选择了典型的人口增长模型logistic函数,并对相应的参数进行设置。

第二问中由Matlab能够得到表中数据的变化趋势。

第三问中对于大数据处理要得到模型中的相应参数需要用最小二乘法进行系数估计,通过分析曲线的特点评价模型的可用性。

在第四问,根据模型带入相应的时间预测对应的人口总数。

第五问中,由分析可知,线性最小二乘法估计参数要比非线性最小二乘法估计参数的精度要更高,因此通过观察人口增长率的曲线可以近似拟合成一次函数的现象,将估计参数的方法改为线性最小二乘法估计参数,并结合数据实际曲线,确定相应的模型参数。

三.模型的基本假设

(1)生育模式相对不变

(2)所用数据真实可靠

(3)不考虑生存空间等自然资源的制约,不考虑意外灾难等因素对人口变化的影

(4)较短的时期内的死亡率是稳定的

四.符号约定

符号说明

年份

第年的人口数

增长率

自然资源与环境条件所能容

纳的最大人口数

初始年份

初始人口数

五 .模型的建立及求解

5.1问题一模型的建立

5.1.1 Logistic人口阻滞增长模型

对于问题一人口增长受到自然资源/环境条件等影响因素对人口增长的阻滞作用,并且此阻滞作用体现子啊增长率r 上,使得r随人口数量增长而下降,若将r表示为x的函数r(x)。则他应该是一个减函数。于是有:

(1)设增长率为的线性函数,。

(2)(2)自然资源与环境条件所能容纳的最大人口数为

,即当时,增长率。

模型的建立与求解

可以求得模型假设中增长率

于是得

可以得到人口增长模型为

设,

故中国大陆人口群体增长的数学模型。

5.2问题二模型的建立与求解

5.2.1 图像的描绘

针对问题二有假设数据可靠,运用excel划归并根据matlab中的plot绘画工具对表中所给出的数据,画出

1949~2017年中国大陆人口总数随时间变化的曲线;

(图1) 1949~2017年中国大陆人口总数随时间变化的曲线5.3问题三的模型的建立与求解

5.3.1 曲线最小二乘法

设初始人口由公式可以看出,要想预测出人口数量,需求出参数。根据科学实验的统计方法研究,根据一组数据寻找自变量时间与因变量人口总数之间的函数关系,通常采用误差的平方和作为最小误差的度量标准。关于最小二乘法的一般标准,在此实验中对给定一组数据,即取最小值拟合出相应系数,公式为:

根据1949~2017年中国大陆人口总数随时间变化的数据,拟合出为180987.1万人,r=0.0336其曲线为:

根据图可知拟合出来的曲线要比数据曲线相差比较大,因为从

1970年至2010年期间国家生育政策逐渐得到完善和落实,这个时期的人口增长受到国家计划生育政策的控制,人口增长方式与采用1949年至2017年的阶段数据不同。因此数据从1970年取值得到系数分别为:

得到曲线图为

结果分析这段时期的拟合基本符合客观实际情况,这一段时间国家虽然对人口增长进行了干预,但国家的生育政策基本是稳定的,因此参数比较可信。

则模型为

5.4问题四的模型的建立与求解

根据问题三所建立的模型

参数为

得到中国大陆人口群体增长的数学模型为:

因此当时间t=2030时,人口总数为万人

5.5问题五模型的建立与求解

5.5.1改进的logistic模型

在logistic函数中主要通过非线性最小二乘法拟合求解系数,但是通过图像也可以观察到拟合程度尽管接近,但还是存在不

足,究其原因主要运用非线性最小二乘法扩大了误差的影响范围,因此考虑将系数分开来求解。根据人口增长的表格数据,可以求出人口年增长率,人口增长率是指一定时间内(通常为一年)人口增长数量与人口总数之比。通过EXCEL表格计算出1949至2016的增长率,由于增长率同每一年的下一年有关,因此2017的增长率暂不考虑。则得到1949至2016的人口增长率的表格和关于增长率与年份变化的图像分别为:

19810.01556259519990.007550713

通过对散点图的分析可以看出,中国人口增长从1975年后增长近似为直线方式减少。敲好满足logistic线性假设,因此可以运用线性最小二乘法对模型进行改进对参数进行进一步的优化。根据logistic模型,作如下变形:

首先求解,对公式2可知:令为年增长率,根据人口数据利用微分方法算出增长率,然后对增长率进行线性拟合可以求得,对照(5)

式我们可得

求参数,,将的值代入式并变形为

两端取对数得

可得

利用matlab软件可以拟合出的值,进而可以确定出模型解的具体形式

5.5.2人口阻滞增长率函数的拟合

为了得到logistic阻滞增长函数,利用最小二乘法方法来拟合增长率与总人口的关系,运行matlab后得到中国人口阻滞增长函数为:

根据得到的方程,得到,将得到的带入(6)式可以得到a,b的值,分别为:

因此可以得到人口总数与增长率之间的关系图为:

故求出的人口预测的具体形式为:

通过Matlab拟合可以观察到数值的变化:

则从曲线可以看出2030年可能会达到一个顶峰人口预测的结果为:145681万人与国家的预测结果相符。

六、模型的评价与改进

模型采用了能描述人口呈阻滞增长的数学模型logistic函数,运用最小二乘法的原理,通过matlab拟合出模型的参数,并多次比较取不同的起始点时不同的拟合曲线,确定相应的系数,最后通过分析中国人口增长率近似为一条直线下降,所以考虑通过线性最小二乘法将系数分开来求,用最小二乘法拟合相应的系数,并将数据曲线作对比,发现有较好的提升,并能够预测2030年的人口数量。

但是由于仅根据表所给的数据进行拟合,没有考虑地域,年龄,气候带来的影响,所以没有加入可决系数。下一步打算参考国家统计局中的关于人口分布数量的调查,确定相应影响参数-,并加入到模型中,继续进行优化处理,使得模型能够更具预测性,并因此受到启发对其他类似的问题都可以采用此

方法预测。因此此模型也具有一定的推广作用。

七、参考文献

[1] 李华中,logistic模型在人口预测中的应用[J].江苏石油化工学院学报1998,10(2):32-34

[2] 任玉杰,数值分析及其matlab实现[M].北京:高等教育出版社2007

附录:clear

clc

S=xlsread('shuju.xlsx');

for i=24:53

K(i-23)=(S(i,2)-S(i-1,2))/S(i,2);

end

T=S(24:53,2)./10000;

plot(T,K,'.')

% hold on

% A=T;

% B=0.0678-0.0047.*T;

% plot(A,B)

clear

clc

S=xlsread('shuju.xlsx');

for i=2:54

K(i-1)=(S(i,2)-S(i-1,2))/S(i,2); end

plot(S(2:54,1),K,'.')

axis([1949 2017 0 0.14])

clear

clc

S=xlsread('shuju.xlsx');

S1=S(7:54,1);

S2=S(7:54,2);

t=1970:2020;

X=82992*exp(0.01216032*(t-1970)); plot(S1,S2,'.')

hold on

plot(t,X)

clear

clc

S=xlsread('shuju.xlsx');

S1=S(7:54,1);

S2=S(7:54,2);

t=1970:2020;

X=248332./(1+1.992*exp(-0.026*(t-1970))); plot(S1,S2,'.')

hold on

plot(t,X)

clear

clc

S=xlsread('shuju.xlsx');

for i=24:53

K(i-23)=(S(i,2)-S(i-1,2))/S(i,2);

end

T=S(24:53,2)./10000; plot(S(24:53,1),K,'.')

相关文档