DESeq2与edgeR差异可视化对比教程 - 第2节

负二项分布模型:为什么是它?

做 RNA-seq 差异分析的第一步,你得知道计数数据长什么样。 说白了,RNA-seq 测到的基因计数是离散的,而且方差通常比均值大——这就是 过离散(overdispersion)。 如果用普通的泊松分布去拟合,你会发现 p 值小得离谱,假阳性一大堆。 我当年第一次跑差异分析时就踩过这个坑,结果老板让我重做…

所以 DESeq2 和 edgeR 都用了 负二项分布,它有两个参数:

  • 均值(μ)——代表真实表达水平。
  • 离散度(dispersion)——描述方差怎么随均值变化。

形式上看,方差 = μ + α·μ²,其中 α 就是离散参数。 这个“额外”的 αμ² 项就是过离散的来源。 两个工具在处理离散度估计上其实思路一致,但算法细节有差别,后面会讲。

小技巧: 如果你的实验设计有多组生物学重复,离散度估计会更稳定。 我习惯先跑一个 quick 的 edgeR 看看整体离散趋势,再决定是否用 DESeq2 做精细筛选。

标准化方法:median-of-ratios vs TMM

测序深度不同、文库组成不同,直接比原始计数没有意义。 你需要把不同样本拉到同一个“尺子”上。 DESeq2 和 edgeR 用了不同的标准化策略,这是它们最核心的差异之一。

DESeq2 的 median-of-ratios

原理:对每个基因,计算该基因在各样本中的计数与几何均值的比值,然后取所有比值的中位数作为该样本的缩放因子。 这样做的好处是:不受高表达基因的干扰,对低表达和零计数也比较鲁棒。 我个人的习惯是:当实验组之间组成差异较大(比如 treated vs control 中有很多基因关闭),median-of-ratios 会更稳定。

edgeR 的 TMM(Trimmed Mean of M-values)

TMM 核心思想:先选一个参考样本(通常是表达量中等的),然后计算其他样本相对于参考样本的 log2 倍数变化(M 值)和平均表达量(A 值),对 M 值进行“修剪”——去掉上下 30% 的极端值,再求加权平均值,最后得到缩放因子。 这个方法对高表达基因的异常倍数变化不敏感,适合文库大小差异大的情况。 有一次我处理肿瘤 vs 正常组织的数据,文库总量差了 3 倍,TMM 给的结果比 median-of-ratios 更平稳。

median-of-ratios vs TMM 核心对比
特性DESeq2 (median-of-ratios)edgeR (TMM)
缩放因子计算每个基因比值的中位数修剪后的 M 值加权平均
对极端值的敏感性低(中位数天然稳健)低(修剪后加权)
处理零计数的能力好(比值跳过零)一般(需要过滤低表达)
适用场景组成差异大、重复数多文库大小差异大、重复数少
我曾经踩过的坑: 有一回用 edgeR 默认 TMM 标准化,结果两组的缩放因子算出来差了 5 倍,检查后发现参考样本选错了——它是个 outlier。 从那以后,我每次跑 edgeR 前都会先用 plotMDS() 看一眼样本聚类,确认参考样本合理。

统计检验策略:差异表达判断

标准化之后,两组的均值有了可比性,接着就要判断差异是否显著。 这里 DESeq2 和 edgeR 走了不同的技术路线。

DESeq2 的 Wald 检验与似然比检验

Wald 检验:直接估计组间倍数变化的标准误,然后计算 z 统计量。 速度快,适合简单两两比较。 似然比检验(LRT):比较完整模型(含分组变量)和简化模型(不含分组变量)的似然值,适合多因素设计(比如 time + treatment)。 我建议你做时间序列或杂交设计时用 LRT,否则 Wald 足够用。

edgeR 的精确检验与准似然 F 检验

精确检验:直接用负二项分布计算两组计数的精确 p 值,适合两组比较,对小样本很友好。 准似然 F 检验(QL F-test):在精确检验基础上引入准似然色散(quasi-likelihood dispersion),对离散度估计更保守,尤其适合有技术重复或批次效应的数据。 我的经验:如果你只有 2~3 个生物学重复,用精确检验更容易出结果;如果重复数 ≥ 4,QL F-test 更稳健。

# DESeq2 的 Wald 检验示例
dds <- DESeq(dds)
res <- results(dds, contrast = c("condition", "treated", "control"))

# edgeR 的精确检验示例
fit <- exactTest(y, pair = c("control", "treated"))
top <- topTags(fit)

你想想看,两个工具底层统计模型一样(负二项分布), 但标准化和检验方式的不同,直接影响了最终的差异基因列表。 实际项目中,我常常两个都跑一遍,取交集或者分别验证,毕竟没有绝对的“最优”。

一个常见的误区: 很多人以为 DESeq2 和 edgeR 的结果应该完全一致。 事实是:当离散度估计稳定、重复数够多时,它们重叠率能达到 80%‑90%; 但遇到低表达基因、离群样本或复杂设计时,差异会很大。 所以别偷懒,至少做一次交叉验证。
DESeq2 vs edgeR 核心流程对比 原始计数矩阵 负二项分布模型 (μ, α) DESeq2 标准化 median-of-ratios edgeR 标准化 TMM Wald 检验 / LRT (DESeq2) 精确检验 / QL F-test (edgeR) 差异基因列表 共同基础:负二项分布 → 差异化标准化 → 不同检验策略 → 结果常互补