Logistics 模型

276 阅读1分钟

1 算法介绍

logistics 方程由比利时数学家Pierre François Verhulst提出,是一个对S型曲线进行数学描述的模型。这个方程应用于一些特殊的领域建模与预测,例如单位面积内某种生物的数量、人口数量等社会经济指标、某种商品(例如手机)的普及率等。

2 原理

logistics 方程定义:

xt=1c+aebt(1)x_t = \frac{1}{c+ae^{bt}} \tag{1}

其中,t 表示时间变量,a,b,c 为模型的参数;当趋势比较完整时, a>0,b<0,c>0a>0, b<0, c>0 。其曲线如下图:

logistics1.png

根据方程和图像可知:

tx(t)1/ct \to -\infty,x(t) \to 1/c 。为研究 Logistics 曲线好的增长特性,对 Logistics 方程求一阶导数:

dxdt=abebt(c+aebt)2>0\frac{dx}{dt}=\frac{-abe^{bt}}{{(c+a e^{bt})}^2} > 0

2.1 Yule 算法

根据方程 (1),微分写成差分式:

xt+1xtxt+1\frac{x_{t+1}-x_t}{x_{t+1}}

=1xtxt+1= 1 - \frac{x_t}{x_{t+1}}

=1c+aeb(t+1)c+aebt= 1 - \frac{c+ae^{b(t+1)}}{c+ae^{bt}}

=(aebt+cc)(1eb)c+aebt= \frac{(ae^{bt}+c-c)(1-e^b)}{c+ae^{bt}}

=(1eb)c(1eb)xt= (1-e^b)-c(1-e^b)x_t

zt=xt+1xtxt+1,γ=1eb,β=c(1eb)z_t=\frac{x_{t+1}-x_t}{x_{t+1}}, \gamma=1-e^b, \beta=-c(1-e^b),那么上面的方程可以写成线性方程:

zt=γ+βxtz_t=\gamma+\beta x_t

利用最小二乘法(OLS)可以得到这个方程参数的估计值,进而 b 和 c 的估计值也可以进一步得到。

为了得到 a 的估计值,Logistics 方程两边同时取对数:

ln(1xtc^)=lna^+b^t(2)ln(\frac{1}{x_t}-\hat{c})=ln \hat{a}+\hat{b}t \tag{2}

左右分别对 t 求和:

t=1nln(1xtc^)=nlna^n(n+1)2b^(3)\sum_{t=1}^{n} ln(\frac{1}{x_t}-\hat{c})=nln\hat{a}-\frac{n(n+1)}{2}\hat{b} \tag{3}

可以很容易得到 a 的估计值:

a^=exp(1n(t=1nln(1xtc^n(n+1)2b^)))(4)\hat{a}=exp \left( \frac{1}{n} \left( \sum_{t=1}^n ln(\frac{1}{x_t}-\hat{c}-\frac{n(n+1)}{2}\hat{b}) \right) \right) \tag{4}

2.2 Rhodes 算法

根据 Logistics 方程可以得到:

1xt+1\frac{1}{x_{t+1}}

=c+aeb(t+1)= c + ae^{b(t+1)}

=cceb+ceb+aeb(t+1)=c-ce^b+ce^b+ae^{b(t+1)}

=c(1eb)+ebxt=c(1-e^b)+\frac{e^b}{x_t}

zt=1xt+1st=1xtγ=c(1eb)β=ebz_t=\frac{1}{x_{t+1}}、s_t=\frac{1}{x_t}、\gamma =c(1-e^b)、\beta =e^b,那么该方程可以写成线性方程:

zt=γ+βstz_t=\gamma + \beta s_t

利用最小二乘法(OLS)可以得到这个方程参数的估计值,进而 b 和 c 的估计值也可以进一步得到。利用方程 (2)-(4) 可以得到 a 的估计值。

2.3 Nair 算法

Yule 算法的差分式结果可以进一步写成:

xt+1xtxt+1=(1eb)(1cxt)\frac{x_{t+1}-x_t}{x_{t+1}}=(1-e^b)(1-cx_t) 11eb=xt+1(1cxt)xt+1xt\frac{1}{1-e^b}=\frac{x_{t+1}(1-cx_t)}{x_{t+1}-x_t} 1+eb1eb=21eb1\frac{1+e^b}{1-e^b}=\frac{2}{1-e^b}-1 =1xt+1xt+12c1xt1xt+1=\frac{\frac{1}{x_t}+\frac{1}{x_{t+1}}-2c}{\frac{1}{x_t}-\frac{1}{x_{t+1}}}

进一步整理得到;

1xt1xt+1=1eb1+eb(1xt+1xt+1)2c(1eb)1+eb(5)\frac{1}{x_t}-\frac{1}{x_{t+1}} = \frac{1-e^b}{1+e^b}(\frac{1}{x_t}+\frac{1}{x_{t+1}})-\frac{2c(1-e^b)}{1+e^b} \tag{5}

zt=1xt1xt+1st=1xt+1xt+1γ=2c(1eb)1+ebβ=1eb1+ebz_t=\frac{1}{x_t}-\frac{1}{x_{t+1}}、s_t=\frac{1}{x_t}+\frac{1}{x_{t+1}}、\gamma =\frac{2c(1-e^b)}{1+e^b}、\beta = \frac{1-e^b}{1+e^b} ,那么方程 (5) 可以写成线性方程:

zt=γ+βstz_t = \gamma + \beta s_t

利用最小二乘法(OLS)可以得到这个方程的参数估计值,进而 b 和 c 的估计值也可以得到,利用方程 (2)-(4) 可以得到 a 的估计值。

3 Logistics 模型与 Logistics 回归理解与使用

Logistic回归又称logistic回归分析,是一种广义的线性回归分析模型,常用于数据挖掘,疾病自动诊断,经济预测等领域。Logistic回归的因变量可以是二分类的,也可以是多分类的。

3.1 Logistic回归跟多元线性回归差不多,但是有区别

  • 线性回归:y是一个定量的变量,这时y对于不同的自变量来说有相应的值。
  • Logistic回归:y是一个定性的变量,比如y只能等于0或1。

3.2 模型的基本形式

P(Y=1x1,x2,...,xn)=exp(β0+β1x1+...+βnxn)1+exp(β0+β1x1+...+βnxn)P(Y=1 | x_1, x_2, ..., x_n)=\frac{exp(\beta _0+\beta _1x_1 + ... + \beta _n x_n)}{1+exp(\beta _0+\beta _1x_1 + ... + \beta _n x_n)}

在实际应用该模型的时候,常常不是不是直接对P进行回归,而是先 定义单调连续概率函数 π\pi

π=P(Y=1x1,x2,...,xn),0<π<1\pi=P(Y=1 | x_1, x_2, ..., x_n), 0 < \pi < 1

于是Logistic模型就可以变形为:

lnπ1π=β0+β1x1+...+βnxn,0<π<1ln\frac{\pi}{1- \pi}=\beta _0+\beta _1x_1 + ... + \beta _n x_n, 0 < \pi < 1

即:

lnπ1π=β0+β1x1+...+βnxn,0<π<1(1)ln\frac{\pi}{1- \pi}=\beta _0+\beta _1x_1 + ... + \beta _n x_n, 0 < \pi < 1 \tag{1}
π=exp(β0+β1x1+...+βnxn)1+exp(β0+β1x1+...+βnxn)(2)\pi=\frac{exp(\beta _0+\beta _1x_1 + ... + \beta _n x_n)}{1+exp(\beta _0+\beta _1x_1 + ... + \beta _n x_n)} \tag{2}
P={0πA1π1A(3)P=\begin{cases} 0 & \pi \le A \\ 1 & \pi \ge 1 - A \end{cases} \tag{3}

通过多元线性回归解出 β0,β1,...,βn\beta _0, \beta _1, ..., \beta _n ,带入求得 π\pi ,根据 π\pi 的值判断 P 的取值。