人口预测与数据拟合

更新时间:2023-03-15 10:06:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

人口预测与数据拟合

1、摘要:

随着人口的增加,人们越来越认识到资源的有限性,人口与资源之间的矛盾日渐突出,人口问题已成为世界上最被关注的问题之一。

问题给出了1790—2000年间美国的人口数据,通过分析近两百年的美国人口统计数据表,得知每10年的人口数和人口增长率的变化。预测美国未来的人口。

首先,人口增长率是变化值。对于问题(1)假设了人口上限因此我们选择建立Logistic模型(模型1)

其次,根据表中的人口数据,进行曲线拟合(模型2),通过Matlab进行人口预测。

关键词:预测模型 人口增长率 Logistic 2、实验问题:

1970年到1980年间美国人口数的统计数据如表所示 年1790 1800 1810 1820 1830 1840 1850 1860 1870 1880 份 统3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2 计 年1890 1900 1910 1920 1930 1940 1950 1960 1970 1980 份 统62.0 72.0 92.0 106.5 123.2 131.7 150.7 179.3 204.0 226.5 计 (1) 根据表中的数据,分别用不同次数的多项式拟合美国人口数量增长的近似曲线图。

(2) 根据表中的数据,建立符合Malthus模型的美国人口数量增长曲线模型。 (3) 设美国人口总体容量为4.5亿,试用Logistic模型建立美国人口增长曲

线模型。

(4) 分别用上述三种方法预测2000年,2005年,2015年,2020年美国人口

数量,并对不同方法的预测结果进行比较分析。 3、实验问题的分析:

根据以上问题的提出我们可以通过两种模型来进行求解,Malthus模型和Logistic模型来预测美国人口数量和统计的结果的差别。Malthus模型:1798年,英国统计学家Malthus在在进行大量统计的基础上发现了一种关于生物种的繁殖规律,就是一种个体数量的增长率与该时刻种群的个体数量成正比。有效地控制人口的增长,认识人口数量的变化规律,建立人口模型,做出较准确的预报,是有效控制人口增长的前提。

整个模型的过程中应当包括:人口增长的变化规律;人口数量的死亡的变化规律;人口平均生育的变化规律;统计人口是的过程等。 人口预测是一个相当复杂的问题,影响人口增长除了人口数与可利用资源外,还与医药卫生条件的改善,人们生育观念的变化等因素有关??. 可以采取几套不同的假设,做出不同的预测方案,进行比较。

人口预测可按预测期长短分为短期预测 (5年以下)、中期预测(5~20年)和

长期预测(20~50年)。在参数的确定和结果讨论方面,必须对中短期和长期预测这两种情况分开讨论。中短期预测中所用的各项参数以实际调查所得数据为基础,根据以往变动趋势可较准确加以估计,推算结果容易接近实际,现实意义较大。

4、 实验模型的假设:

(1)、人口数量在某一年内增长的速度较快,在哪一年内不记人口的死亡人数,和种种影响人口增长的因素。 (2)、假设美国人口上限为5亿,根据表中给出的人口增长率,进行适当的处理,建立微分方程模型; (3)、 利用 (2) 中的模型计算各年人口,与实际人口数量比较,计算模型的计算误差; (4)、 利用(2)中的模型预测美国2010,2020,2030,2040,2050年的人口; (5)、 假设人口增长率服从[1.1,1.3]上的均匀分布,结合 (2) 中建立微分方程模型,预测美国2010,2020,2030,2040,2050年的人口. 5、 模型的建立:

模型1

图1为1790-2000年的人口数据,人口增长率r为每10年的取值。首先对人口增长率进行处理求出其他年份相对于1790年的增长率R

Rtn=rt1+.....+rtnn

其中t1=1800年?.. t21=2000年(10.最大人口数量Xm=500 当x=Xm时增长率为零。在线性化假设前提下可以得到 r(x) = r (1 – x / Xm),(公式1)

其中的r我们取之前求得的平均增长率r=0.0264 , Xm=500。在公式1假设下,模型可修改为

骣dxx÷?=rx(1-)÷??dtxm÷÷ (公式2) ?÷?÷?÷÷?x(0)=x0桫上述方程改为Logistic模型

x(t) =xm/1+(xm/x0-1)e-rt (公式3)

e取2.718,t为Dt,求出每10年的rt值带入方程算出各年的人口数以 及和实际值的误差见图3。

2010年的R*t=5.808,预测人口为362.32; 2020年的R*t=6.072,预测人口为387.59; 2030年的R*t=6.336,预测人口为408.16; 2040年的R*t=6.6 ,预测人口为427.35; 2050年的R*t=6.864,预测人口为442.48;

观察预测结果1930年以前只有1800 1810 1820误差较小,其它年份误差正负都稍微偏大,1940年以后预测值逐年大于实际值,说明在给定最大人口数后增长率选择不适当,与给定的最大人口数不匹配,有待改进。

图(1) 图(2)

图(3)

模型2

(1) 根据表中的人口数据,进行曲线拟合,建立数学模型;

(2) 利用 (1) 中的模型计算各年人口,与实际人口数量比较,计算模

型的计算误差;

(3) 利用 (1) 中的模型预测美国2010,2020,2030,2040,2050年的人口;

利用MATLAB进行曲线拟合,首先在平面上绘出已知数据的分布图,通过直观观察,猜测人口随时间的变化规律,再用函数拟合的方法确定其中的未知参数,从而估计出2010 2020 2030 2040 2050年的美国人口。利用MATLAB作出美国人口统计数据的连线图如图4。

图4 美国人口统计数据连线图

图5 建模方法1的拟合效果图

由图4可以发现美国人口的变化规律曲线近似为一条指数函数曲线,因此我们假设美国的人口满足函数关系x=f(t), f(t)=ea+bt,a, b为待定常数,根据最小二乘拟合的原理,a, b是函数E(a,b)??(f(ti)?xi)2的最小值点。其中xi是

i?1nti时刻美国的人口数。利用MATLAB中的曲线拟合程序“curvefit”,编制的程序如下:

首先创建指数函数的函数M——文件

用最小二乘拟合求上述函数中待定常数,以及检验拟合效果的图形绘制程序 m-function, fun1.m function f=fun1(a,t) f=exp(a(1)*x + a(2)); t=1790:10:2000;

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]; plot(t,x,'*',t,x); a0=[0.001,1];

a=curvefit('fun1',a0,t,x) ti=1790:5:2050; xi=fun1(a,ti); hold on

plot(ti,xi); t1=2010;

x1=fun1(a,t1) hold off

在MATLAB命令窗口运行该程序,输出结果a = 0.0148 -23.8311;x1 =358.48 因此,参数a=0.0148, b=-23.8307,拟合函数在2010处的函数值f(2010)=358.48。通过作图,我们来看看拟合的误差如何,见图5。从图中可看出,拟合曲线与原数据还是比较吻合,因此,预测美国在2010年的人口数为358.48百万。同理 2020年预测人口为413.33; 2030年预测人口为452.57; 2040年预测人口为475.89; 2050年预测人口为494.18。 图6为误差值%

观察误差和图像,模型2对过去的统计数据吻合得较好,但也存在问题,即人口是呈指数规律无止境地增长,此时人口的自然增长率随人口的增长而增长,这不可能。一般说来,当人口较少时增长得越来越快,即增长率在变大;人口增长到一定数量以后,增长就会慢下来,即增长率变小这是因为,自然资源、环境条件等因素不允许人口无限制地增长,它们对人口的增长起着阻滞作用,而且随着人口的增加,阻滞作用越来越大。而且人口最终会饱和,趋于某一个常数xm 这里通过Matlab对模型1中的公式3进行一次计算拟合: function f=fun3(a,t)

f=a(1)./(1+(a(1)/3.9-1)*exp(-(t-1790)*a(2))); x=1790:10:2000;

y=[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]; plot(x,y,'*',x,y); a0=[0.001,1];

a=curvefit('fun3',a0,x,y) xi=1790:5:2050;

yi=fun3(a,xi); hold on

plot(xi,yi); x1=2010;

y1=fun3(a,x1) hold off

图(6)

将r(即a(2))的初值取为小于1的数,比如取a=[200, 0.1]时,得到 a =[311.95 0.0280], y1 =267.19,即(2)中的r=0.0280, xm=311.95,2010年美国的人口预计为267.19。这个结果还比较合理,当tm时,静增长率趋于零,人口数趋于311.95百万人,即极限人口xm=311.95。拟合效果见图7,这种效果比之前情形好。

从图7 看出,在前一段吻合得比较好,但在最上面,若拟合曲线更接近原始数据,对将来人口的预测应该更好。因此略加修改将拟合准则改为:

minE(a)??(f(ti)?xi)?w?(f(ti)?xi)2

2i?1i?n?1n21其中w为右端几个点的误差权重,在此处应该取为大于1的数,这样会使右边的拟合误差减小,相应的,其他点的误差会有所增加。如何才能使这些误差的增减恰当呢?可以通过调整w和n的具体取值,比较他们取各种不同值时的拟合效果,从而确定出一个合适的数值。

图7 function f=fun5(a) n=16;w=2;

x=1790:10:2000;x1=x(1:n);x2=x(n+1:21);

y=[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]; y1=y(1:n);y2=y(n+1:21);

f=[fun3(a,x1),w*fun3(a,x2)]-[y1,w*y2];

主程序: t=1790:10:2000;

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]; plot(t,x,'*',t,x);a0=[300,0.03]; a=leastsq('fun5',a0) ti=1790:5:2000; xi=fun3(a,ti); hold on;

plot(ti,xi,t,x,'*'); x1=fun3(a,2010) hold off

1.先取n=17,w=1.5,运行上述程序,得到结果a = [324.0666, 0.0276]; x1 = 272.7996

2. 再取n=16,w=2,运行上述程序,得到结果a=[345.1439,0.0270];x1=280.0539 把两种情况的拟合曲线画在同一个坐标系中作比较如图8.第二种情形后半段的变化趋势与原始数据更吻合,因此,对将来人口的预测应该更好(只拟合到2010年)

30025020015010050017501) n=17,w=1.52) n=16,w=2 180018501900195020002050 经过修改,得到了一个较满意的结果,人口增长率r=0.0270,极限人口xm=345.1439(百万),并预测2010年美国人口为280.05百万。 6、 实验总结:

熟悉使用了MatLab ,MathType,SpssStatistics等软件工具。它们可以大大提高工作效率,多数情况下都能给出正确的答案。但它在处理复杂问题时,也有不足之处不同曲线的拟合图几乎是一样的不好区分。这就要求对结果进行检验,是否合理。

本文来源:https://www.bwwdw.com/article/q27v.html

Top