19.1. 零截断模型
在计数类场景中,有时会存在没有 \(0\) 的情况,
比如,住院病人住院的天数,不会出现住院天数是 \(0\) 的情况,
这是一个典型的非零数据。当然这个例子中研究的对象是住院病人,
那些不需要住院的病人不在研究范围内。
泊松分布和负二项式分布都是包含 \(0\) 的,
虽然仍然可以使用这两个模型处理非零数据,
但显然它们并不是那么契合此类数据。
要想使得泊松分布或负二项式能更好的适配非零数据,
最直接的方法就是调整下概率分布函数,把 \(0\)
从概率分布函数中去掉。
假设随机变量 \(Y\) 的概率分布函数是 \(f(y)\)
,根据概率和为 \(1\) 约束,可知 \(\sum_{y} f(y) = 1\)
,如果要从 \(f(y)\) 中去掉一个值,就不满足上述约束了,
此时就需要对 \(f(y)\) 重新归一化以满足概率约束。
假设 \(Y\) 是一个计数型离散随机变量,
\(Y=0\) 的概率是 \(f(0)\)
,那么 \(Y>0\) 的概率分布函数为
(19.1.1)\[f(y|y>0) = \frac{f(y)}{1-f(0)}\]
计数数据模型中最常见的泊松模型和负二项式模型,
都可以使用这种方法转换成零截断数据的模型。
19.1.1. 零截断泊松模型
先以泊松分布为例,泊松分布的概率分布函数为
(19.1.2)\[f(y;\mu)=\exp \{ y\ln(\mu) -\mu- \ln \Gamma(y+1) \}\]
\(Y=0\) 的概率为
(19.1.3)\[f(y=0;\mu)=\exp \{ -\mu \}\]
不包含 \(0\) 的泊松分布的概率分布函数为
(19.1.4)\[f(y;\mu|y>0)=\frac{\exp \{ y\ln(\mu) -\mu- \ln \Gamma(y+1) \}}{1-\exp \{ -\mu \}}\]
对数似然函数为
(19.1.5)\[\ell(\mu;y|y>0) = \sum_{i=1}^N
\left \{
\underbrace{ y_i\ln(\mu_i) -\mu_i- \ln \Gamma(y_i+1)}_{\text{原来泊松分布部分}}
- \underbrace{\ln [1-\exp \{ -\mu_i \}]}_{\text{新的归一化项}}
\right \}\]
仔细观察下,零截断泊松模型的对数似然函数相比原始泊松模型对数似然函数,只是多了一个归一化项。
由于对数似然函数结构发生了变化,
IRLS
算法不适用于零截断模型,
严格来说,零截断模型已经不属于 GLM
框架。
对于零截断模型的参数估计,可以单独运用完整最大似然估计求解,
也就是梯度法或者牛顿法。
19.1.2. 零截断负二项式模型
负二项式模型的概率分布函数为
(19.1.6)\[f(y;\alpha,\mu) = \exp \left \{
y \ln \left (\frac{\alpha \mu}{1+\alpha \mu} \right )
- \frac{1}{\alpha} \ln (1+\alpha \mu) + \ln \frac{\Gamma(y+1/\alpha) }{\Gamma(y+1) \Gamma(1/\alpha) }
\right \}\]
\(Y=0\) 的概率为
(19.1.7)\[f(y=0;\alpha,\mu) = \exp \left \{- \frac{1}{\alpha} \ln (1+\alpha \mu) \right \}
= (1+\alpha \mu)^{-1/\alpha}\]
用符号 \(f(y;\alpha,\mu)_{NB}\) 代指 公式(19.1.6)
,符号 \(f(0;\alpha,\mu)_{NB}\) 代指 公式(19.1.7)
,零截断负二项式模型的概率分布函数为
(19.1.8)\[f(y;\alpha,\mu|y>0) = \frac{f(y;\alpha,\mu)_{NB}}{1-f(0;\alpha,\mu)_{NB}}\]
用符号 \(\ell_{NB}\) 表示原始负二项式模型对数似然函数,
则零截断负二项式模型的对数似然函数为
(19.1.9)\[\ell(\mu;y|y>0) = \ell_{NB} - \sum_{i=1}^N
\left \{
\ln [ 1- (1+\alpha \mu_i)^{-1/\alpha} ]
\right \}\]
19.2. 零膨胀模型
零膨胀(zero-inflate)表示数据中的 \(0\) 太多了,
超过了泊松分布和负二项式分布中 \(0\) 的极限。
对于零膨胀的计数数据,常见的处理思想就是把数据进行分割,
模型分成两段式。
所谓两段式是指,假设观测数据由两个过程生成,
先进行一个二分类过程,再进行一个计数过程,
实际应用中,有两种常见的实现方法,
\(0\) 和非 \(0\)
把观测数据分成 \(0\) 和非 \(0\) 两部分,
先用一个二分类模型判断是 \(0\) 还是非 \(0\)
,然后用一个 零截断模型 处理非 \(0\) 的数据。
采用这种方式的模型称为栅栏(Hurdle)模型。
“多余”的 \(0\) 和”正常”的 \(0\)
把数据中的 \(0\) 分成两部分,一部分认为是计数分布中产生的 \(0\)
,这些 \(0\) 和非零数据组成计数模型的部分。
剩余的 \(0\) 认为是”多余”的,用二分类模型处理。
这种方法的模型习惯上称为零膨胀模型(zero-inflate model,ZIM)
。
栅栏模型和零膨胀模型都是两段式模型,第一阶段是二分类模型,
第二阶段是计数模型。
二者在数据的划分上有些许差别,
这个差别使得两种模型有不一样的特性,
零膨胀模型只能处理有过多 \(0\)
的数据,而栅栏模型是可以处理 \(0\) 过少 的数据的。
为了和零膨胀模型区分,Hurdle
模型一般被称为 zero-altered
模型。
19.2.1. Hurdle 模型
Hurdle
在英文语境里指栅栏、障碍,
顾名思义,Hurdle
寓意在数据生成过程中有一个 \(0\) 的栅栏阻碍,
没有跨过去就为 \(0\) ,跨过去就是非零的正整数,
Hurdle
模型相当于是一个二分类模型和零截断模型组成的一个混合模型,
其概率分布函数可以用一个分段函数表示。
(19.2.1)\[\begin{split}f(y ; \pi,\lambda)
=
\begin{cases}
\textsf{Binary}(0 ; \pi) &\quad \text{if } y = 0\\
\left [1-\textsf{Binary}(0 ; \pi) \right ]
\times
\textsf{Zero-Truncate}(y;\lambda)
&\quad\text{if } y > 0
\end{cases}\end{split}\]
其中二分类模型和零截断模型都有可以多种不同的选择。
因为 Hurdle
模型又被称为 zero-altered
模型,
因此采用零截断泊松模型的 Hurdle
模型简称为 ZAP
模型,采用零截断负二项式模型的 Hurdle
模型简称为 ZANB
模型。
Hurdle
模型中二分类部分和零截断计数部分一般拥有不同的线性预测器,
假设二分类模型的线性预测器为 \(\eta^{\gamma}=z^T \gamma\)
,响应函数为 \(F(\eta^{\gamma})\)
。零截断计数模型的线性预测器为 \(\eta^{\beta}=x^T \beta\)
,标准连接的响应函数为 \(R(\eta^{\beta})\)
。下面我们分别看下 ZAP
模型和
ZANB
模型的定义。
ZAP
当 Hurdle
模型中的零截断模型是零截断泊松模型时,简称为 ZAP
模型,
零截断泊松模型的概率分布函数是 公式(19.1.4)
,代入到 公式(19.2.1) 的模板可以给出 ZAP
的概率分布函数
(19.2.2)\[ \begin{align}\begin{aligned}P(y_i=0) &= F(\eta^{\gamma}_i)\\P(y_i>0) &= \left [ 1-F(\eta^{\gamma}_i) \right ]
\frac{\exp \{ y_i \eta^{\beta}_i -R(\eta_i^{\beta}) - \ln \Gamma(y_i+1) \}}
{1-\exp \{ -R(\eta^{\beta}_i) \}}\end{aligned}\end{align} \]
Hurdle
模型的对数似然函数可以按照样本是否为 \(0\)
分成两部分,假设观测样本中为 \(0\) 的子集是 \(\mathcal{D}_0\)
,则 Hurdle
模型的对数似然函数为
(19.2.3)\[\ell = \sum_{i \in \mathcal{D}_0 } \ln P(y_i=0)
+ \sum_{i \notin \mathcal{D}_0 } \ln P(y_i>0)\]
按照这个模板,ZAP
模型的对数似然函数为
(19.2.4)\[ \begin{align}\begin{aligned}\ell = &\sum_{i \in \mathcal{D}_0 } \ln F(\eta^{\gamma}_i)\\&+\sum_{i \notin \mathcal{D}_0 }
\left \{
\ln \left [ 1-F(\eta^{\gamma}_i) \right ] +
\left [ y_i \eta^{\beta}_i -R(\eta_i^{\beta}) - \ln \Gamma(y_i+1) \right ] -
\ln \left \{ 1-\exp [ -R(\eta^{\beta}_i) ] \right \}
\right \}\end{aligned}\end{align} \]
ZANB
当 Hurdle
模型中的零截断模型是零截断负二项式模型时,简称为 ZANB
模型,
零截断泊松模型的概率分布函数是 公式(19.1.8)
,代入到 公式(19.2.1) 的模板可以给出 ZANB
的概率分布函数
(19.2.5)\[ \begin{align}\begin{aligned}P(y_i=0) &= F(\eta^{\gamma}_i)\\P(y_i>0) &= \left [ 1-F(\eta^{\gamma}_i) \right ]
\frac{f(y)_{NB}}{1-f(0)_{NB}}\end{aligned}\end{align} \]
19.2.2. Zero-inflate 模型
零膨胀(Zero-inflate)计数模型是由 Lambert(1992)
首次提出的,
它提供了另一种解决过多零计数的方法。
与 Hurdle
模型一样,它也是两部分模型,由二分类和计数模型组成。
与 Hurdle
模型不同的地方在于,
零膨胀模型提供了同时使用二分类和计数过程对零计数进行建模的功能。
Hurdle
模型将零的建模与计数的建模分开,这意味着只有一个过程会生成零,
从对数似然函数中也能看到这一点。
与之不同的时,零膨胀模型将零计数合并到二分类和计数过程中。
和 Hurdle
模型是类似的是,零膨胀模型也是一个两段式的模型,二分类模型和计数模型组合在一起,
不同的地方在于,划分的方法不太一样。
零膨胀模型把数据中的 \(0\)
看做两部分,一部分是二分类模型产生,另一部分由计数模型产生。
这里的计数模型既负责一部分 \(0\) 的数据,又负责非 \(0\) 的数据,
所以这里的计数模型是一个完整的计数模型,而不是零截断计数模型,这一点和 Hurdle
模型不同。
(19.2.6)\[\begin{split}f(y)
=
\begin{cases}
\textsf{Binary}(0 ; \pi) + [1-\textsf{Binary}(0 ; \pi) ] \text{Count}(0;\lambda) &\quad \text{if } y = 0\\
[1-\textsf{Binary}(0 ; \pi)] \text{Count}(y;\lambda)
&\quad\text{if } y > 0
\end{cases}\end{split}\]
二分类模型部分,通常使用的是伯努利模型,连接函数常用的是 logit
, probit
和 complementary log-log
。计数模型部分常用的是泊松模型和负二项式模型,
采用泊松模型的零膨胀模型通常简称为 ZIP
模型
,采用负二项式模型的零膨胀模型通常简称为 ZINB
模型。
二分类部分和计数部分一般拥有不同的线性预测器,
假设二分类模型的线性预测器为 \(\eta^{\gamma}=z^T \gamma\)
,响应函数为 \(F(\eta^{\gamma})\)
。计数模型的线性预测器为 \(\eta^{\beta}=x^T \beta\)
,响应函数为 \(R(\eta^{\beta})\)
。下面我们分别看下 ZIP
模型和
ZINB
模型的定义。
ZIP 模型
计数模型是泊松模型的零膨胀模型称为 ZIP
模型,
把泊松模型的概率分布函数 公式(19.1.2)
代入到 公式(19.2.6)
可得到 ZIP
模型的概率分布函数。
(19.2.7)\[ \begin{align}\begin{aligned}P(y_i=0) &= F(\eta^{\gamma}_i) + \left [ 1-F(\eta^{\gamma}_i) \right ] \exp \left [ -R(\eta^{\beta}_i) \right ]\\P(y_i>0) &= \left [ 1-F(\eta^{\gamma}_i) \right ]
\exp \left \{ y_i \eta^{\beta}_i - R(\eta^{\beta}_i) -\ln \Gamma(y_i+1) \right \}\end{aligned}\end{align} \]
用 \(\mathcal{D}_0\) 表示观测样本集中 \(0\) 的子集,
ZIP
模型的对数似然函数可以写成两部分的和。
(19.2.8)\[\ell = \sum_{ i \in \mathcal{D}_0 }
\ln \left \{
F(\eta^{\gamma}_i) + [1-F(\eta^{\gamma}_i)] \exp \left [ -R(\eta^{\beta}_i) \right ]
\right \}
+
\sum_{ i \notin \mathcal{D}_0 }
\left \{
\ln [1-F(\eta^{\gamma}_i)]
+ y_i \eta^{\beta}_i - R(\eta^{\beta}_i) -\ln (y_i!)
\right \}\]
对数似然函数的一阶偏导数为
(19.2.9)\[ \begin{align}\begin{aligned}\frac{\partial \ell}{ \partial \beta_j} &=
-\sum_{ i \in \mathcal{D}_0 } x_{ji}
\frac{ \left [ 1-F(\eta^{\gamma}_i) \right ] R(\eta^{\beta}_i) \exp \left [ -R(\eta^{\beta}_i) \right ] }
{F(\eta^{\gamma}_i) + \left [1-F(\eta^{\gamma}_i) \right] \exp \left [ -R(\eta^{\beta}_i) \right ] }
+
\sum_{ i \notin \mathcal{D}_0 } x_{ji}(y_i - R(\eta^{\beta}_i))\\\frac{\partial \ell}{ \partial \gamma_j} &=
\sum_{ i \in \mathcal{D}_0 } z_{ji}
\frac{F'(\eta^{\gamma}_i) \left \{ 1- \exp \left [ -R(\eta^{\beta}_i) \right ] \right \} }
{F(\eta^{\gamma}_i) + \left [1-F(\eta^{\gamma}_i) \right] \exp \left [ -R(\eta^{\beta}_i) \right ] }
- \sum_{ i \notin \mathcal{D}_0 } z_{ji}
\frac{F'(\eta^{\gamma}_i)}{ 1-F(\eta^{\gamma}_i) }\end{aligned}\end{align} \]
其中 \(F'(\eta^{\gamma}_i)\) 表示 \(F(\eta^{\gamma}_i)\)
对 \(\gamma\) 的导数。
ZINB 模型
计数模型是负二项式模型的零膨胀模型称为 ZINB
模型,
把负二项式模型的概率分布函数 公式(19.1.6)
代入到 公式(19.2.6)
可得到 ZINB
模型的概率分布函数。
(19.2.10)\[ \begin{align}\begin{aligned}m &= 1/\alpha\\p_i &= 1/(1+\alpha \mu_i)\\\mu_i &= R(\eta^{\beta}) = \exp(x_i \beta)\\P(y_i=0) &= F(\eta^{\gamma}_i) + [ 1- F(\eta^{\gamma}_i) ] p_i^m\\P(y_i>0) &= [ 1- F(\eta^{\gamma}_i) ] \frac{\Gamma(m+y_i)}{\Gamma(y_i+1)\Gamma(m)}p_i^m(1-p_i)^y_i\end{aligned}\end{align} \]
ZINB
模型的对数似然函数为
(19.2.11)\[ \begin{align}\begin{aligned}\ell = &\sum_{ i \in \mathcal{D}_0 } \ln \left \{ F(\eta^{\gamma}_i) + [ 1- F(\eta^{\gamma}_i) ] p_i^m \right \}\\&+ \sum_{ i \notin \mathcal{D}_0 }
\left \{ \ln [ 1- F(\eta^{\gamma}_i) ]
+ \ln \Gamma(m+y_i)
- \ln \Gamma(y_i+1)
- \ln \Gamma(m)
+m \ln p_i
+ y_i \ln(1-p_i)
\right \}\end{aligned}\end{align} \]
其一阶偏导导数为
(19.2.12)\[\frac{\partial \ell}{\beta_j} =
\sum_{ i \in \mathcal{D}_0 } x_{ji}
\frac{-[ 1- F(\eta^{\gamma}_i)] \mu_i p_i^{m+1}}
{F(\eta^{\gamma}_i) + [ 1- F(\eta^{\gamma}_i)] p_i^m}
+ \sum_{ i \notin \mathcal{D}_0 }
x_{ji}p_i(y_i-\mu_i)\]
(19.2.13)\[\frac{\partial \ell}{\gamma_j} =
\sum_{ i \in \mathcal{D}_0 } z_{ji}
\frac{F'(\eta^{\gamma}_i)(1-p_i^m)}
{F(\eta^{\gamma}_i)+[ 1- F(\eta^{\gamma}_i)]p_i^m}
+ \sum_{ i \notin \mathcal{D}_0 } z_{ji}
\frac{-F'(\eta^{\gamma}_i)}{1-F(\eta^{\gamma}_i)}\]
(19.2.14)\[ \begin{align}\begin{aligned}\frac{\partial \ell}{\partial \alpha} = &-
\sum_{ i \in \mathcal{D}_0 }
\frac{m^2p_i^m \ln p_i -m\mu_i p_i^{m-1}}
{F(\eta^{\gamma}_i) + [1-F(\eta^{\gamma}_i)] p_i^m}\\&- \sum_{ i \notin \mathcal{D}_0 } \alpha^{-2}
\left \{
\frac{\alpha(\mu_i-y_i)}{1+\alpha \mu_i}
-ln(1+\alpha \mu_i)
+ \psi(y_i + 1/\alpha) - \psi(1/\alpha)
\right \}\end{aligned}\end{align} \]
其中 \(\psi\) 表示双伽马函数(digamma function)