Math-00.数学分布-14.负二项分布

负二项分布(Negative Binomial distribution,NB)描述达到第 $r$ 次成功所需总实验次数或等价地作为过离散计数模型,是 泊松 在方差 $>\lambda$ 时的标准扩展,广泛用于 RNA-seq

段末注释过离散(overdispersion)指观测方差大于均值;RNA-seq 基因读段计数常呈现此特征。

读前说明:离散分布,下文给出 PMF。系列:12 泊松 | 01 总论


1. 产生背景与直观

图 1 等待 r 次成功

两种等价直觉:

  1. 等待时间视角:独立 伯努利 试验中,第 $r$ 次成功前失败次数 $Y$。
  2. 计数视角:计数 $X$ 的方差 $> \mathbb{E}[X]$,Poisson 无法拟合,用 NB 增加离散参数。

2. 定义与参数

常用参数化(scipy nbinom):$X \sim \mathrm{NB}(n, p)$

要素 内容
支撑集 ${0, 1, 2, \ldots}$
参数 $n>0$(成功次数阈值 / 离散度),$p \in (0,1)$

另一参数化:均值 $\mu$ 与离散参数 $\alpha$,$\mathrm{Var}=\mu+\alpha\mu^2$。


3. PMF 与 CDF

图 2 PMF 比 Poisson 更宽

3.1 PMF(scipy 约定)

$$
P(X=k) = \binom{k+n-1}{k} (1-p)^k p^n, \quad k=0,1,2,\ldots
$$

3.2 与 Poisson 对比

Poisson Negative Binomial
$\mathbb{E}$ $\lambda$ $n(1-p)/p$
$\mathrm{Var}$ $\lambda$ $n(1-p)/p^2 > \mathbb{E}$

4. 数字特征

公式($n,p$ 参数化)
$\mathbb{E}[X]$ $n(1-p)/p$
$\mathrm{Var}(X)$ $n(1-p)/p^2$
离散指数 $\mathrm{Var}/\mathbb{E} = 1/p > 1$

5. 与其他分布的关系

关系 说明
几何 $n=1$ 时 NB 为几何分布 → 规划 13
Poisson $r\to\infty$ 适当极限可趋近 Poisson
Poisson–Gamma 混合 $\Lambda \sim \mathrm{Gamma}$,$X
二项 不同生成机制;勿混淆

6. 前提假设

计数型参数化(过离散计数):

假设 含义 违背时
过离散 $\mathrm{Var}(X)>\mathbb{E}[X]$ 等离散 → 泊松
独立计数 各观测独立(或条件独立) 时间相关 → 时间序列模型

等待型参数化(第 $r$ 次成功前的失败数):

假设 含义 违背时
独立 Bernoulli 每次试验独立、同 $p$ 不独立 → 非 NB
$p$ 恒定 成功概率不变 时变 $p$
固定目标 $r$ 等待第 $r$ 次成功 $r=1$ 即 几何

段末注释:负二项兼作 Poisson–Gamma 混合($\lambda$ 随机)与「等待第 $r$ 次成功」两种机制。


7. 适用场景

图 3 RNA-seq 过离散

场景 示例
RNA-seq / scRNA-seq 基因读段计数,DESeq2edgeR 底层
生态计数 过度分散的物种计数
保险索赔 索赔次数方差 $>$ 均值
失败等待 第 $r$ 次合格前的废品数

8. 局限与误用

图 4 局限

问题 说明
零膨胀 零过多 → ZINB
文库组成约束 读段总和固定 → 多项 / Beta-binomial
小样本 $n$ 参数估计不稳
误用 Poisson 低估方差 → 假阳性(差异表达)

9. 参数估计与推断

9.1 MLE / 矩估计

可用 scipy.stats.nbinom.fit 或 DESeq2 的离散度估计 $\alpha$。

9.2 检验

  • NB 回归:$\log \mu_i = \mathbf{x}_i^\top\boldsymbol{\beta}$,检验系数
  • 与 Poisson 比较:似然比检验

10. 示例与代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt

# 模拟过离散计数:方差 > 均值
rng = np.random.default_rng(42)
counts = stats.nbinom.rvs(n=5, p=0.4, size=100)
print(f"mean={counts.mean():.2f}, var={counts.var():.2f}")

# 与 Poisson 对比
lam = counts.mean()
poisson_sim = stats.poisson.rvs(mu=lam, size=100, random_state=rng)
print(f"Poisson sim: mean={poisson_sim.mean():.2f}, var={poisson_sim.var():.2f}")

k = np.arange(0, 25)
fig, ax = plt.subplots(figsize=(8, 4))
ax.bar(k - 0.15, stats.nbinom.pmf(k, n=5, p=0.4), width=0.3, label='NB(5,0.4)', alpha=0.7)
ax.bar(k + 0.15, stats.poisson.pmf(k, lam), width=0.3, label=f'Poisson({lam:.1f})', alpha=0.7)
ax.legend(); ax.set_xlabel('k')
plt.savefig('nbinom_vs_poisson.png', dpi=150)

11. 小结

  • NB 解决过离散计数;RNA-seq 差异分析的事实标准之一。
  • 方差 $\approx$ 均值时用 12 泊松 即可。

系列导航12 泊松 | 21 对数正态

-------------本文结束感谢您的阅读-------------