1、背景,年 1625 1830 1930 1960 1974 1987 1999,人口(亿)5 10 20 30 40 50 60,世界人口增长概况,中国人口增长概况,年 1908 1933 1953 1964 1982 1990 1995 2000,人口(亿)3.0 4.7 6.0 7.2 10.3 11.3 12.0 13.0,研究人口变化规律,控制人口过快增长,如何预报人口的增长,指数增长模型马尔萨斯提出(,1798,),常用的计算公式,x,(,t,),时刻,t,的,人口,基本假设,:人口(相对)增长率,r,是常数,今年人口,x,0,年增长率,r,k,年后人口,随着时间增加,人口按指数规律
2、无限增长,指数增长模型的应用及局限性,与,19,世纪以前欧洲一些地区人口统计数据吻合,适用于,19,世纪后迁往加拿大的欧洲移民后代,可用于短期人口增长预测,不符合,19,世纪后多数地区人口增长规律,不能预测较长期的人口增长过程,19世纪后人口数据,人口增长率,r,不是常数(逐渐下降),阻滞增长模型(,Logistic,模型),人口增长到一定数量后,增长率下降的原因:,资源、环境等因素对人口增长的阻滞作用,且阻滞作用随人口数量增加而变大,假设,r,固有增长率(,x,很小时),x,m,人口容量(资源、环境能容纳的最大数量),r,是,x,的减函数,dx,/,dt,x,0,x,m,x,m,/2,x,m
3、t,x,0,x,(,t,)S,形曲线,x,增加先快后慢,x,0,x,m,/2,阻滞增长模型(,Logistic,模型),参数估计,用指数增长模型或阻滞增长模型作人口,预报,必须先估计模型参数,r,或,r,x,m,利用统计数据用最小二乘法作拟合,例:美国人口数据(单位百万),1860 1870 1880 1960 1970 1980 1990,31.4 38.6 50.2 179.3 204.0 226.5 251.4,专家估计,阻滞增长模型(,Logistic,模型),r,=0.2557,x,m,=392.1,模型检验,用模型计算2000年美国人口,与实际数据比较,实际为281.4(百万),
4、模型应用预报美国,2010,年的人口,加入2000年人口数据后重新估计模型参数,Logistic,模型在经济领域中的应用(如耐用消费品的售量),阻滞增长模型(,Logistic,模型),r,=0.2490,x,m,=434.0,x,(2010)=306.0(实际308.7),最小二乘拟合,问题:给定 拟合一个函数,y,=,f,(x,t,),,其中,x,为待定的参数向量,记误差,确定x的方法:求x使得误差平方和,最小,MATLAB最小二乘拟合,命令 lsqcurvefit,基本用法,x,resnorm,res=lsqcurvefit(f,x0,t,y,lb,ub),输入:f=f(x,t)x0=参
5、数初值,t=自变量向量 y=函数值向量,lb ub=参数的上下界,输出 x=参数估计值,resnom=(误差平方和),res=r(,误差向量,),例子,已知美国人口数据如下,(单位百万),1860 1870 1880 1960 1970 1980 1990,31.4 38.6 50.2 179.3 204.0 226.5 251.4,用指数增长模型作人口预报,估计模型参数,r的MATLAB方法,1.建立M文件 myexp.m,function f=myexp(x,t),f=x(1)*exp(x(2)*t);,2.建立M文件myexpexec.m,t=0:21,y=3.9,5.3,7.2,9.6
6、12.9,17.1,23.2,31.4,38.6,50.2,62.9,76.0,92.0,106.5,123.2,131.7,150.7,179.3,204.0,226.5,251.4,281.4,x0=4,0.3;,x,norm,res=lsqcurvefit(myexp,x0,t,y),3.利用MATLAB作图,比较结果,plot(t,y,+);,hold on;,y1=myexp(x,t);%理论数据,plot(t,y1,*);,指数模型结果,如果用LOGISTIC 模型作拟合,步骤相同,1.建立m文件 mylogistic.m,function f=mylogistic(x,t),f
7、x(1)/(1+(x(1)/3.9-1)*exp(-x(2)*t);,2.和前面相同,只要将 myexp 换为mylogistic,LOGSTIC模型结果,两个模型结果比较,线性化后再参数估计,对指数模型,MATLAB线性回归命令,b=regress(y,X)返回回归系数向量b,线性模型 y=Xb,X 是 np 矩阵,y 是观察值向量,使用线性回归的M文件,t=0:21,y=3.9,5.3,7.2,9.6,251.4,281.4;,logy=log(y);logy=logy;,X=ones(22,1)t;,b=regress(logy,X);,x(1)=exp(b(1);x(2)=b(2);,y1=myexp(x,t);,plot(t,y,+,t,y1,*);,结果,对logistic 模型,MATLAB M文件,y=3.9,5.3,7.2,251.4,281.4;,dy=diff(y);,dyy=dy./y(1:21);,dyy=dyy;,tt=y(1:21);,X=ones(21,1)tt;,b=regress(dyy,X);,x(1)=-b(1)/b(2);x(2)=b(1);,t=0:20;,y1=mylogistic(x,t);,plot(t,y(1:21),+,t,y1,*);,运行结果,