人口预测与数据拟合1、摘要:随着人口的增加,人们越来越认识到资源的有限性,人口与资源之间的矛盾日渐突出,人口问题已成为世界上最被关注的问题之一。问题给出了1790—2000年间美国的人口数据,通过分析近两百年的美国人口统计数据表,得知每10年的人口数和人口增长率的变化。预测美国未来的人口。首先,人口增长率是变化值。对于问题(1)假设了人口上限因此我们选择建立Logistic模型(模型1)其次,根据表中的人口数据,进行曲线拟合(模型2),通过Matlab进行人口预测。关键词:预测模型人口增长率Logistic2、实验问题:1970年到1980年间美国人口数的统计数据如表所示年份1790180018101820183018401850186018701880统计3.95.37.29.612.917.123.231.438.650.2年份1890190019101920193019401950196019701980统计62.072.092.0106.5123.2131.7150.7179.3204.0226.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年的增长率R1.....nntttrrRn++=其中t1=1800年…..t21=2000年(1n≤21)。例如1810年相对于1790年的增长率为(3.11+2.99)/2=3.05其他年份同理可得如图2;对增长率R求平均直为Rx=2.64%模型1为阻滞增长模型假设人口增长率r(x)是t时人口x(t)的函数,r(x)应该是x的减函数。一个简单的假设是假设r(x)为x的线性函数r(x)=r-s*x,s0.最大人口数量Xm=500当x=Xm时增长率为零。在线性化假设前提下可以得到r(x)=r(1–x/Xm),(公式1)其中的r我们取之前求得的平均增长率r=0.0264,Xm=500。在公式1假设下,模型可修改为0(1)(0)xtmdxrxdxxx骣÷ç=-÷ç÷ç÷ç÷ç÷ç÷÷ç=桫(公式2)上述方程改为Logistic模型()xt=mx/1+(mx/0x-1)rte-(公式3)e取2.718,t为tD,求出每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年以前只有180018101820误差较小,其它年份误差正负都稍微偏大,1940年以后预测值逐年大于实际值,说明在给定最大人口数后增长率选择不适当,与给定的最大人口数不匹配,有待改进。图(1)图(2)图(3)模型2(1)根据表中的人口数据,进行曲线拟合,建立数学模型;(2)利用(1)中的模型计算各年人口,与实际人口数量比较,计算模型的计算误差;(3)利用(1)中的模型预测美国2010,2020,2030,2040,2050年的人口;利用MATLAB进行曲线拟合,首先在平面上绘出已知数据的分布图,通过直观观察,猜测人口随时间的变化规律,再用函数拟合的方法确定其中的未知参数,从而估计出20102020203020402050年的美国人口。利用MATLAB作出美国人口统计数据的连线图如图4。图4美国人口统计数据连线图图5建模方法1的拟合效果图由图4可以发现美国人口的变化规律曲线近似为一条指数函数曲线,因此我们假设美国的人口满足函数关系x=f(t),f(t)=ea+bt,a,b为待定常数,根据最小二乘拟合的原理,a,b是函数niiixtfbaE12))((),(的最小值点。其中xi是ti时刻美国的人口数。利用MATLAB中的曲线拟合程序“curvefit”,编制的程序如下:首先创建指数函数的函数M——文件用最小二乘拟合求上述函数中待定常数,以及检验拟合效果的图形绘制程序m-function,fun1.mfunctionf=fun1(a,t)f=exp(a(1)*x+a(2));t=1790:10:2000;x=[3.95.37.29.612.917.123.231.438.650.262.976...92106.5123.2131.7150.7179.3204226.5251.4281.4];plot(t,x,'*',t,x);a0=[0.001,1];a=curvefit('fun1',a0,t,x)ti=1790:5:2050;xi=fun1(a,ti);holdonplot(ti,xi);t1=2010;x1=fun1(a,t1)holdoff在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对过去的统计数据吻合得较好,但也存在问题,即人口是呈指数规律无止境地增长,此时人口的自然增长率随人口的增长而增长,这不可能。一般说来,当人口较少时增长得越来越快,即增长率在变大;人口增长到一定数量以后,增长就会慢下来,即增长率变小这是因为,自然资源、环境条件等因素不允许人口无限制地增长,它们对人口的增长起着阻滞作用,而且随着人口的增加,阻滞作用越来越大。而且人口最终会饱和,趋于某一个常数mx这里通过Matlab对模型1中的公式3进行一次计算拟合:functionf=fun3(a,t)f=a(1)./(1+(a(1)/3.9-1)*exp(-(t-1790)*a(2)));x=1790:10:2000;y=[3.95.37.29.612.917.123.231.438.650.262.976...92106.5123.2131.7150.7179.3204226.5251.4281.4];plot(x,y,'*',x,y);a0=[0.001,1];a=curvefit('fun3',a0,x,y)xi=1790:5:2050;yi=fun3(a,xi);holdonplot(xi,yi);x1=2010;y1=fun3(a,x1)holdoff图(6)将r(即a(2))的初值取为小于1的数,比如取a=[200,0.1]时,得到a=[311.950.0280],y1=267.19,即(2)中的r=0.0280,xm=311.95,2010年美国的人口预计为267.19。这个结果还比较合理,当tm时,静增长率趋于零,人口数趋于311.95百万人,即极限人口xm=311.95。拟合效果见图7,这种效果比之前情形好。从图7看出,在前一段吻合得比较好,但在最上面,若拟合曲线更接近原始数据,对将来人口的预测应该更好。因此略加修改将拟合准则改为:211212))(())(()(minniiiniiixtfwxtfaE其中w为右端几个点的误差权重,在此处应该取为大于1的数,这样会使右边的拟合误差减小,相应的,其他点的误差会有所增加。如何才能使这些误差的增减恰当呢?可以通过调整w和n的具体取值,比较他们取各种不同值时的拟合效果,从而确定出一个合适的数值。图7functionf=fun5(a)n=16;w=2;x=1790:10:2000;x1=x(1:n);x2=x(n+1:21);y=[3.95.37.29.612.917.123.231.438.650.262.976...92106.5123.2131.7150.7179.3204226.5251.4281.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.95.37.29.612.917.123.231.438.650.262.976...92106.5123.2131.7150.7179.3204226.5251.4281.4];plot(t,x,'*',t,x);a0=[300,0.03];a=leastsq('fun5',a0)ti=1790:5:2000;xi=fun3(a,ti);holdon;plot(ti,xi,t,x,'*');x1=fun3(a,2010)holdoff1.先取n=17,w=1.5,运行上述程序,得到结果a=[324.0666,0.0276];x1=272.79962.再取n=16,w=2,运行上述程序,得到结果a=[345.1439,0.0270];x1=280.0539把两种情况的拟合曲线画在同一个坐标系中作比较如图8.第二种情形后半段的变化趋势与原始数据更吻合,因此,对将来人口的预测应该更好(只拟合到2010年)经过修改,得到了一个较满意的结果,人口增长率r=0.0270,极限人口xm=345.1439(百万),并预测2010年美国人口为280.05百万。6、实验总结:熟悉使用了MatLab,MathType,SpssStatistics等软件工具。它们可以大大提高工作效率,多数情况下都能给出正确的答案。但它在处理复杂问题时,也有不足之处不同曲线的拟合图几乎是一样