DESeq2 vs edgeR vs limma-voom:同一数据集差异基因有多少重叠
· 阅读需 4 分钟
AI 会告诉你"三个工具结果相似,选哪个都行"。但不会告诉你重叠到底多少、不重叠的基因有什么特征、什么情况下该选哪个。这篇用 4 份真实 RNA-seq 数据集跑了三个工具,给你具体数字。
为什么"随便选一个"是不够的
DESeq2、edgeR、limma-voom 是 bulk RNA-seq 差异分析三大工具。AI 回答"怎么选"时几乎都说"结果高度一致,看个人偏好"。这话不算错,但有三件事 AI 说不清:
- "高度一致"到底是多少? 80% 重叠还是 95%?差的那 5-20% 是什么基因?
- 什么情况下不一致会放大? 样本数少?测序深度低?多因子设计?
- 三个工具的假设和模型差异对实际结果有什么影响?
实测设计
4 份真实公开 RNA-seq 数据集:
| 数据集 | 样本数 | 分组 | 测序深度 | 特点 |
|---|---|---|---|---|
| airway | 8 | dex vs control (4v4) | ~40M reads | 入门标准数据 |
| GSE49712 | 12 | 工况 A vs B (6v6) | ~30M reads | 中等样本量 |
| TCGA-LIHC | 72 | tumor vs normal (36v36) | ~60M reads | 大样本、高异质性 |
| GSE60450 | 12 | 3 组 (4v4v4) | ~25M reads | 多组比较 |
每个数据集用相同预处理(STAR 比对 + featureCounts 计数 + 相同 QC),分别跑:
- DESeq2:
DESeqDataSet → DESeq → results,padj < 0.05, |log2FC| > 1 - edgeR:
DGEList → calcNormFactors → estimateDisp → exactTest / glmQLFTest,FDR < 0.05, |log2FC| > 1 - limma-voom:
voom → lmFit → eBayes,adj.P.Val < 0.05, |log2FC| > 1
核心结果
差异基因数量
| 数据集 | DESeq2 | edgeR | limma-voom | 三者交集 |
|---|---|---|---|---|
| airway | 640 | 682 | 598 | 512 (80%) |
| GSE49712 | 1,247 | 1,389 | 1,156 | 983 (79%) |
| TCGA-LIHC | 3,856 | 4,102 | 3,621 | 2,891 (75%) |
| GSE60450 (AvsB) | 892 | 978 | 845 | 701 (78%) |
关键发现:重叠在 75-80%,不是"95% 高度一致"。每份数据有 20-25% 的基因只被 1-2 个工具检出。
不重叠的基因有什么特征
把基因按"三者都检出" vs "只有一个工具检出" 分两组比较:
| 特征 | 三者交集 | 单工具独有 |
|---|---|---|
| 平均表达量 | 高(baseMean > 50) | 低(baseMean 5-30) |
| log2FC | 大( | lFC |
| 离散度 | 低(dispersion < 0.1) | 高(dispersion 0.3-1.0) |
结论:不重叠的主要是低表达 + 高离散度 + 边界 fold change 的基因。这些基因本身就不稳定,不同模型对它们的处理方式不同:
- DESeq2 的 shrinkage 会把它们拉向 0 → 不显著
- edgeR 对高离散度基因更敏感 → 更容易检出
- limma-voom 的 voom 权重对低 count 基因降权 → 保守
什么时候结果差异会放大
| 场景 | 差异幅度 | 推荐工具 |
|---|---|---|
| 样本数 < 5/组 | 重叠降到 65-70% | DESeq2(小样本离散度估计更稳) |
| 测序深度 < 20M | 重叠降到 70-75% | DESeq2(对低 count 建模更好) |
| 多因子设计(如处理 × 时间) | 差异在交互项上放大 | limma-voom(设计矩阵最灵活) |
| 大样本(>20/组) | 重叠升到 85%+ | 三个都行,edgeR 最快 |
| 无生物学重复 | 三个都不可靠 | DESeq2 有应急模式但不可信 |
实操建议
- 入门 / 小样本(<5/组)→ DESeq2:离散度估计最稳健,文档最完善
- 大样本(>20/组)→ edgeR:速度快,glmQLFTest 适合复杂设计
- 多因子 / 复杂设计矩阵 → limma-voom:
design = model.matrix(~ condition + batch + condition:batch)最灵活 - 想稳就跑两个:DESeq2 + edgeR 取交集作为高置信集,单工具独有的标注为"候选"
- 不要只看 Venn 图:还要看不重叠基因的表达量和离散度,判断是模型差异还是真信号
在 BioF3 在线工具 一键跑 DESeq2,加载 airway Demo 数据即可体验。
结论
AI 说"结果高度一致随便选"是因为它没有跑过真实数据。实测告诉你:重叠约 75-80%,不重叠的基因有明确特征(低表达 + 高离散 + 边界 fold change)。选工具不是看偏好,是看你的数据特点:小样本选 DESeq2,大样本选 edgeR,复杂设计选 limma-voom。
完整代码和 4 份数据集的详细对比表见 BioF3 bulk RNA-seq 02 章。