人口增长模型

设第今年的人口为 (x_0),年增长率为 (r),预测 (k) 年后的人口为 (x_k),则有

[x_k = x_0(1+r)^k \tag{1} ]

这个模型的前提是年增长率 (r) 在 (k) 年内保持不变.

利用 (1) 式可以根据人口估计年增长率,例如经过 (n) 年后人口翻了一番,那么这期间的年平均增长率约为 ((70/n)\%).

证明:

[\begin{aligned} &x_n = x_0(1+r)^n \Longrightarrow 2x_0 = x_0(1+r)^n \Longrightarrow (1+r)^n = 2 \Longrightarrow \ln(1+r)=\frac{\ln 2}{n}\ \Longrightarrow & 1+r=e^{\frac{\ln 2}{n}} \Longrightarrow r = e^{\frac{\ln2}{n}}-1 \sim \frac{\ln2}{n} \approx (\frac{70}{n})\% \end{aligned} ]

1.1 人口增长模型的建立

将人口看作连续时间 (t) 的连续可微函数 (x(t)). 于是有

[\frac{\mathrm{d}x}{\mathrm{d}t} = rx,\quad x(0) = x_0 \tag{2} ]

求解上述微分方程:

[\begin{aligned} &原式 \ = \frac{1}{x}\mathrm{d}x = r\mathrm{d}t\ \ \Longrightarrow & \ln x = rt+C\ \ \Longrightarrow & x = e^{rt}\cdot C\ \end{aligned} ]

由于 (x(0) = x_0),代入上式可得 (x_0 = C),可以解出

[x(t) = x_0e^{rt} \tag{3} ]

可以用 R 语言定义指数增长模型方程

## 指数增长模型方程
fun1 <- function(t) x0 * exp(r*t) < code></->

1.2 参数估计

以书本 P142 美国人口数据为例

1.1.1 线性最小二乘估计

对 (3) 取对数,有 (\ln x = \ln x_0 + rt),于是 (\ln x) 与 (t) 存在线性关系,令10年为一个单位.

下面用 R 进行参数估计.

> ## &#x7F8E;&#x56FD;&#x4EBA;&#x53E3;&#x6570;&#x636E;&#x7684;&#x5BFC;&#x5165;
> x <- c(3.9, 5.3, 7.2, 9.6, 12.9, 17.1, 23.2, 31.4, + 38.6, 50.2, 62.9, 76.0, 92.0, 105.7, 122.8, 131.7, 150.7, 179.3, 203.2, 226.5, 248.7, 281.4)> ## &#x7EBF;&#x6027;&#x6700;&#x5C0F;&#x4E8C;&#x4E58;&#x4F30;&#x8BA1;
> y <- log(x)> t <- sequence(length(x), 0, 1)> lm(y~t) -> sol
> summary(sol)

Call:
lm(formula = y ~ t)

Residuals:
     Min       1Q   Median       3Q      Max
-0.43901 -0.19764  0.00609  0.23405  0.32145

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
(Intercept)  1.79999    0.10538   17.08 2.14e-13 ***
t            0.20201    0.00859   23.52 4.80e-16 ***
Signif. codes:  0 &#x2018;***&#x2019; 0.001 &#x2018;**&#x2019; 0.01 &#x2018;*&#x2019; 0.05 &#x2018;.&#x2019; 0.1 &#x2018; &#x2019; 1

Residual standard error: 0.02839 on 20 degrees of freedom
Multiple R-squared:  0.8778,    Adjusted R-squared:  0.8717
F-statistic: 143.6 on 1 and 20 DF,  p-value: 1.391e-10

结果分析:

[r = 0.3252461 – 0.0114343t ]

且回归方程的检验统计量(F=143.6, \ p = 1.391e-10 << 0.01, \ R^2 = 0.8778),认为回归方程的拟合程度不错,两者存在非常显著的线性关系;常数项检验 (t = 27.79, \ p << 0.01),一次项系数检验 (t = -11.98, \ p = 1.39e-10 << 0.01),认为回归方程系数显著不为0.

看看拟合图像

&#x62DF;&#x5408;&#x56FE;&#x50CF;
plot(t,R)
abline(sol2, col = "red")

人口增长模型

记 (r = r_0 – r_1t),于是 ((2)) 式变为

[\frac{\mathrm{d}x}{\mathrm{d}t} = (r_0-r_1t)x, \quad x(0) = x_0 \tag{4} ]

用分离变量的方法求解上述微分方程,((4)) 可化为

[\begin{aligned} &\frac{1}{x}\mathrm{d}x = (r_0-r_1t)\mathrm{d}t\ \Longrightarrow &\int \frac{1}{x}\mathrm{d}x = \int (r_0-r_1t)\mathrm{d}t\ \Longrightarrow &\ln x = r_0-\frac{1}{2}r_1t^2 + C\ \Longrightarrow &x = C’\exp(r_0t-\frac{1}{2}r_1t^2)\ \end{aligned} ]

将 (x(0) = x_0) 代入,即可得 (C’ = x_0),于是解得

[x(t) = x_0\exp(r_0t-\frac{1}{2}r_1t^2) ]

可以用 (R) 语言定义上述函数

## &#x5B9A;&#x4E49;&#x51FD;&#x6570;
fun2 <- function(t) x0 * exp(r0*t - r1*t^2 2) < code></->

下面用 (R) 语言做指数增长模型的拟合

## &#x5229;&#x7528;&#x6A21;&#x578B;&#x4F30;&#x8BA1;&#x4EBA;&#x53E3;&#x5E76;&#x505A;&#x62DF;&#x5408;&#x56FE;&#x50CF;
r0 <- 0.3252461 r1 <- 0.0114343 x0 x[1] t sequence(length(x), 0, 1) y_hat3 fun2(t) plot(t, x) lines(t, y_hat3, col="red" ) < code></->

人口增长模型

可以看出改进的指数增长模型的拟合程度明显好于改进前的指数增长模型.

  1. logistic 模型

考虑自然资源、环境条件等因素对人口增长起阻碍作用,并且随着人口的增加,阻碍作用越来越大.

2.1 logistic 模型的建立

随着人口的增长,资源和环境的阻碍作用体现在对增长率 (r) 的影响上,于是 (r(x)) 是 (x) 的函数,主观上我们认为 (r(x)) 是减函数,我们可以画出两者之间的散点图来大致判断两者之间满足何种函数关系(这里我们的增长率用的是1.2.2中做数值微分得到的增长率序列)

## r~x &#x6563;&#x70B9;&#x56FE;
plot(x, R)

人口增长模型

散点图显示两者之间存在线性关系,不妨设 (r(x) = a + bx),为了赋予系数 (a,b) 实际含义,引入两个参数:

  • 内禀增长率(r_0)(\quad r_0) 是(x=0) 的增长率,于是(a = r_0);
  • 人口容量(x_m)(\quad x_m) 是资源和环境所能容纳的最大人口数量,也就是当(x=x_m) 后人口不再增长,即(r(x_m) = r + bx_m = 0),解得(b = -\frac{r}{x_m}).

于是

[r(x) = r_0(1-\frac{x}{x_m}) ]

那么 ((2)) 变为

[\frac{\mathrm{d}x}{\mathrm{d}t} = r_0x(1-\frac{x}{x_m}), \quad x(0) = x_0 \tag{5} ]

上式称为 logistic 方程.

将上式化为

[\begin{aligned} &\frac{x_m}{x(x_m-x)} \mathrm{d}x = r\mathrm{d}t\ \Longrightarrow &\int(\frac{1}{x} + \frac{1}{x_m-x})\mathrm{d}x = \int r_0\mathrm{d}t\ \Longrightarrow &\ln{x} – \ln{(x_m-x)} = r_0t + C\ \Longrightarrow &\frac{x}{x_m-x}=C’e^{r_0t}\ \Longrightarrow &x = \frac{x_m}{1+C”e^{-r_0t}}\ \end{aligned} ]

将点 ((t,x) = (0,x_0)) 代入上式可得

[C” = \frac{x_m}{x_0}-1 ]

综上就可求得

[x(t) = \frac{x_m}{1+(\frac{x_m}{x_0}-1)e^{-r_0t}} \tag{6} ]

上式称为 logistic 曲线. ((5),(6)) 统称为 logistic 模型.

利用 R 语言定义上述函数

## &#x5B9A;&#x4E49;&#x51FD;&#x6570;
fun3 <- function(t) xm (1+(xm x0-1)*exp(-r0*t)) < code></->

2.2 参数估计

2.2.1 线性最小二乘估计

((5)) 式可改写为

[\frac{\mathrm{d}x/\mathrm{d}t}{x} = r_0 – \frac{r_0}{x_m}x, \quad x(0) = x_0 ]

下面用 R 语言做线性估计

`

线性最小二乘估计

lm(R~x) -> sol3
summary(sol3)

Call:
lm(formula = R ~ x)

Residuals:
Min 1Q Median 3Q Max
-0.076819 -0.021568 0.000946 0.023945 0.078560

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 2.805e-01 1.243e-02 22.573 1.06e-15
x -7.968e-04 9.763e-05 -8.162 8.55e-08

Original: https://www.cnblogs.com/hznudmh/p/16343159.html
Author: 帯蟊釜
Title: 人口增长模型

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/591588/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球