当前位置:文档之家› 人口预测模型1

人口预测模型1

(2)用所有数据预测
>> x=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6,50.2,62.9,76]; t=1:12; fun=inline('c(1)*exp(c(2)*t)','c','t'); c=lsqcurvefit(fun,[1,1],t,x); xx= [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]; tt=1:22; px=c(1)*exp(c(2)*tt); px23=c(1)*exp(c(2)*23)
r0 =
0.2298
1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994
96259 97542 98705 100072 101654 103008 104357 105851 107507 109300 111026 112704 114333 115823 117171 118517 119850
plot(t,xx,'*',t,py) %(见图三)
(2)用所有数据预测
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]'; n=22;
Matlab程序: (1)用前12个数据预测
xx=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6,50.2,62.9,76,]; tt=1:12; fun=inline('c(1)*exp(c(2)*tt)','c','tt'); c=lsqcurvefit(fun,[1,1],tt,xx); px=c(1)*exp(c(2)*tt); plot(tt,xx,'*',tt,px) %(见图一)
[beta,R,J]=nlinfit(t,x,'logisfun',beta0); pt=beta(3)./(1+(beta(3)./beta(1)-1)*exp(-beta(2)*t)); p23=beta(3)./(1+(beta(3)./beta(1)-1)*exp(-beta(2)*23)) plot(t,x,'*',t,pt) %(见图六)
1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010
121121 122389 123626 124761 125786 126743 127627 128453 129227 129988 130756 131448 132129 132802 133450 134091
已知环境能容纳的最大人口数为,人口净增长率随人口数 量的增加而线性减少,即 设t时刻时人口数为x(t),由此建立为微分方程:
求解得
待求参数. 举例说明:
下面是美国近两个世纪的人口统计数据(百万),试建立 数学模型,预测2010年美国的人口数。 年 1790 1800 1810 1820 1830 1840 1850 1860 份
46692 47350 47920 48553 49302 49856 50509 51126 51926 53010 53825 54605 55429 56357 57360 58045 58604
48.51 48.54 48.55 48.52 48.50 48.40 48.40 48.30 48.30 48.50 48.48 48.45 48.48 48.66 48.95 48.98 48.90
人 3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 数
年 1870 1880 1890 1900 1910 1920 1930 1940 份
人 38.6 50.2 62.9 76.0 92.0 106.5 123.2 131.7

年 1950 1960 1970 1980 1990 2000 2010 份
MATLAB程序:
(1)用前12个数据预测
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]'; n=12;
t=1:n; xx=x(1:n); tt=[ones(n,1),(1:n)']; y=log(xx(1:n)); [b,bint,r,rint,stats]=regress(y,tt); x0=exp(b(1)); r=b(2); py=x0*exp(r*t);
t=1:n; xx=x(1:n); tt=[ones(n,1),(1:n)']; y=log(xx(1:n)); [b,bint,r,rint,stats]=regress(y,tt); x0=exp(b(1)); r=b(2); py=x0*exp(r*t); py23=x0*exp(r*23)
plot(t,xx,'*',t,py) %(见图四) py23 =
二 建立模型
Malthus 模型: 要预测,得确定参数.
方法一:(最小二乘法非线性拟合)
C = lsqcurvefit(fun,x0,xdata,ydata,...)
fun是需要拟合的函数; x0是对函数中各参数的猜想值;xdata 则是横 轴坐标的值;ydata 是纵轴的值;C为fun中待预测的系数。
p23 = 298.1139
图六 r0的计算程序: 方法一: 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,2 n=length(x); r=ones(n-1,1); for i=1:n-1 r(i,1)=(x(i+1,1)-x(i,1))./x(i,1); end r0=mean(r) r0 =
散点图Matlab程序:
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 t=1:22; plot(t,x,'*')% scatter(t,x)
图形走势很像指数模型,所以我们先选择指数模型,即 Malthus 模型.

增 长
0.3590
0.3585
0.3333
0.3438
0.3256
0.3567
0.3534
0.2293

年 1870 1880 1890 1900 1910 1920 1930 1940 份
人 38.6 50.2 62.9 76.0 92.0 106.5 123.2 131.7 数
净 增
0.3005
end
t=1:n-1; plot(t,r,’*’) %(见图五)
图五
发现净增长率并不是常数!而是随人口数量的增加而线性减少。
三 建立新的预测模型
Logistic模型
要用非线性回归分析的方法确定参数. 确定非线性回归分析系数的函数:
[beta,R,J]=nlinfit(x,y,'logisfun',beta0) 注:x是自变量,y是函数值,'logisfun' 为事先定义的非线性
人口预测模型
想要预测未来某一年的人口数量,我们要建立人口增长模 型,人口增长模型常见的有以下几种: 1)马尔萨斯(Malthus)模型——指数模型
已知单位时间内人口增长率为r。 设t时刻时人口数为x(t),则时间内增长的人口数为:
当时,得微分方程 求解得
待求参数. 2) 罗杰斯特(Logistic)模型-阻滞型人口模型
49567 50192 50785 51519 52352 53152 53848 54725 55581 56290 57201 58099 58904 59466 59811 60472 61246
51.49 51.46 51.45 51.48 51.50 51.60 51.60 51.70 51.70 51.50 51.52 51.55 51.52 51.34 51.05 51.02 51.10
0.2298
方法二: 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,20 n=length(x); t=1:n; r0=mean((diff(x)./diff(t))./x(1:n-1))
17245 18495 19140 20171 21480 22274 24017 25094 26366 27674 28661 29540 30195 31203 32175 33173 34169
17.92 18.96 19.39 20.16 21.13 21.62 23.01 23.71 24.52 25.32 25.81 26.21 26.41 26.94 27.46 27.99 28.51
人 150.7 179.3 204.0 226.5 251.4 281.4 ? 数
一 建模分析
目标:寻找人口数量随时间变化的规律,即函数关系式. 人口
相关主题