4. 统计学原理对比:精确检验 vs Wald检验 vs LRT

说到差异表达分析,统计检验方法的选择其实很关键。edgeR 和 DESeq2 虽然都做同样的活儿,但背后的统计学思路差异挺大的。我刚开始学这两套工具时,也搞混过它们的检验原理——后来在一个转录组项目中,因为选错了检验方法,差点让一批重要基因漏掉。今天就掰开揉碎,把三种检验方法给你讲透。

4.1 三种检验的家族关系

我们先看一张总览图,把三种方法的位置理清楚:

差异表达检验方法家族 差异表达检验 精确检验 (exactTest) Wald 检验 似然比检验 (LRT) edgeR 默认 负二项模型·小样本 DESeq2 默认 系数估计·大样本近似 两者皆可选 比较嵌套模型 核心差异一句话 精确检验:不依赖渐近近似,直接计算观测数据出现的概率 Wald检验:基于参数估计值和标准误,近似正态分布 LRT:比较完整模型和简化模型的似然值差异

4.2 精确检验——edgeR 的看家本领

edgeR 默认用的是精确检验,全名叫「基于负二项分布的精确检验」。

它怎么工作的?

你先假设所有基因的表达量服从负二项分布。然后给定一个组间无差异的零假设(均值相等),精确检验会直接计算「观测到当前数据或更极端数据」的概率。这个概率就是 p 值。嗯,它不依赖大样本近似,也不需要估计标准误——说白了,就是对每个基因老老实实算一遍条件概率。

我见过的坑: 有一次我在只有 2 个重复的胚胎干细胞数据上跑比较,用 Wald 检验出很多假阳性。后来换回 edgeR 的精确检验,结果马上变合理。因为小样本下,精确检验的保守性反而成了保护伞。

什么时候优先用它? 样本量小(比如每组 ≤ 5)、离散度低、你想避免 Wald 检验的过度乐观 p 值时。不过我提醒一句:它没法处理多因素模型或连续协变量,因为它是为两两比较设计的。

4.3 Wald 检验——DESeq2 的主力武器

DESeq2 默认用 Wald 检验。它的逻辑更接近传统的线性模型思路:先估计出每个基因的对数倍数变化(log2FC)和标准误,然后算「估计值偏离零假设多少倍标准误」,再拿这个比值去标准正态分布里找 p 值。

数学上其实很直白:

Wald = (β̂ - β₀) / SE(β̂)

β̂:估计的对数倍数变化
β₀:零假设下的值(通常是0)
SE:标准误

Wald 统计量近似服从标准正态分布。为什么说「近似」?因为它依赖大样本理论。样本量不够大时,标准误估计本身就不准,导致 Wald 检验有时会偏轻(拒绝太多)或偏重(拒绝太少)。

我踩过的坑: 以前处理一个 3 vs 3 的细胞系比较,Wald 检验给出 2000 多个显著基因。我直觉上觉得不对,因为那个处理只影响了少数通路。换成精确检验,显著基因一下降到 400 多。验证后确认那 400 多个才是真信号。所以——样本量小别太信 Wald 的 p 值。

那为什么 DESeq2 还要用它? 因为 Wald 检验灵活。你可以轻松把批次效应、连续协变量(如时间、剂量)加进模型,DESeq2 的公式接口设计就是为这个服务的。精准度稍差一点,但胜在适用范围广。

4.4 似然比检验(LRT)——比较嵌套模型

LRT 在 edgeR 和 DESeq2 里都可以用,但不是默认选项。它适合一个场景:你想比较「包含某个因素的完整模型」和「移除该因素的简化模型」。比如,问「加入处理条件这个变量后,模型拟合有没有显著改善?」

步骤其实很简单:

  1. 对每个基因,拟合完整模型(包含待检验变量),得到最大似然值 L₁。
  2. 拟合简化模型(去掉那个变量),得到最大似然值 L₀。
  3. 计算偏差:D = -2 × ln(L₀ / L₁),这个 D 近似服从卡方分布(自由度为去掉的参数个数)。
  4. 根据卡方分布算出 p 值。

我个人经验: 在时间序列 RNA-seq 数据分析中,LRT 特别好用。你想知道某个基因的表达量是否随时间显著变化——这时 Wald 检验只能两两比较,而 LRT 可以一次性检验所有时间点共同贡献的显著性。我曾经用 LRT 在一个药物剂量递增实验里找出剂量-效应基因,Wald 检验根本做不到这么直接。

4.5 三大检验对比一览

特性 精确检验 (exactTest) Wald 检验 似然比检验 (LRT)
默认归属 edgeR DESeq2 两者均可
适用场景 两两比较,小样本 多因素模型,大样本 嵌套模型比较
对样本量的要求 不依赖大样本 需要足够样本量 中等
能否处理协变量 否 能 能
计算复杂度 低 低 中等(需拟合两个模型)
假阳性控制 偏保守 小样本时偏宽松 较平衡
R 函数示例 exactTest() results() (DESeq2) glmQLFTest() 或 nbinomLRT()

4.6 实际操作中的选择准则

讲了一大堆理论,你肯定想知道「那我到底该用哪个?」。我在不同项目里摸爬滚打几年后,总结了个简单的决策流程:

  • 只有两个条件、样本量 ≤ 4 每组的 → 首选 edgeR 精确检验。别犹豫,直接上 exactTest。
  • 有多个因素、样本量 ≥ 6 每组的 → DESeq2 Wald 检验更灵活,方便加入协变量。
  • 想检验多个水平的共同效应(如时间序列、多剂量)→ 用 LRT,在 DESeq2 中设置 test="LRT",在 edgeR 中用 glmQLFTest()。
  • 对结果可靠性要求非常高、有点担心假阳性 → 同时跑两种方法,只看两者都显著的基因。我有个老项目就是靠这个双重验证找到核心标志物的。

一句话总结我的态度: 精确检验像老朋友,可靠但死板;Wald 检验像灵活搭档,前提是你得给它足够的数据;LRT 像高阶工具,在正确场景下威力巨大。没有绝对优劣,只有合不合适。