1. RNA-seq差异表达分析简介:为什么需要两种方法
做RNA-seq差异表达分析,DESeq2和edgeR几乎是绕不开的两个名字。
很多人刚开始接触时都会问:既然目的都是找差异基因,为什么非要搞出两种方法?选一个不就行了?
嗯,这个问题我当年也困惑过。后来在几个项目里分别踩过坑,才慢慢理解——不是因为开发者闲得慌,而是数据本身有不同脾气。
1.1 核心目标:都是找差异基因
先明确一点:DESeq2和edgeR要解决的问题完全一样——给定一个基因表达计数矩阵,判断哪些基因在两个(或更多)条件之间有显著变化。
输入数据长啥样?
基因ID 对照组_样本1 对照组_样本2 处理组_样本1 处理组_样本2
GeneA 120 95 340 310
GeneB 8 12 15 11
GeneC 4500 5100 4300 4800
每一行是一个基因,每一列是一个样本,格子里的数字是比对到该基因上的reads数。这种整数计数的数据,就是两者共同的战场。
但同样面对整数计数,两套方法背后的统计学假设却不一样。说白了,它们对“噪音从哪里来”这件事,看法不同。
1.2 根本差异:对离散度的建模方式不同
RNA-seq数据有个天然问题:方差大于均值。如果你做过测序实验就知道,同一个基因在生物学重复之间,计数波动往往挺大。这种“过离散”现象,不能用简单的泊松分布来碰运气。
DESeq2和edgeR都用了负二项分布来建模。但具体怎么估计离散度参数,差别就大了。
| 比较维度 | DESeq2 | edgeR |
|---|---|---|
| 离散度估计策略 | 先拟合基因-均值关系曲线,再向曲线收缩 | 使用经验贝叶斯,先估计共同离散度,再向共同值收缩 |
| 处理低表达基因 | 自带Cook's distance,能自动识别离群点 | 需要手动过滤低表达基因,否则影响离散度估计 |
| 小样本(2~3重复) | 收缩较强,假阳性控制更好 | 如果表达量低,有时容易假阳性偏高 |
| 大样本(>5重复) | 收缩减轻,结果趋于保守 | 可以利用更多数据,估计更准,功效更高 |
| 输出内容 | shrunken log2 fold change + p-value | logFC + p-value + FDR |
我记得有一次项目,样本只有两个生物学重复,对照组和处理组各两个。用edgeR跑出来一大堆显著基因,但热图一看,全是低表达基因在某个样本里突然冒出来两个reads造成的假象。换DESeq2重新跑,那些假阳性就消失了。从那以后,遇到极小样本,我个人会优先考虑DESeq2。
反过来,如果有八个重复以上,edgeR的表现经常比DESeq2更灵敏。它能用更精确的离散度估计为真差异基因“撑腰”。
1.3 两种方法的选择逻辑:看场景下菜碟
你问我哪个更好?说实话,不存在“更好”,只有“更合适”。
来看这张流程图,帮你快速定位该用哪个。
你看,核心判断依据就是样本量。小样本时DESeq2的收缩机制能帮你扛住波动;大样本时edgeR能释放更多统计功效。
当然,这只是一个快速指南。实际项目中,我通常会两个都跑一遍,然后看重叠基因——如果两个方法的结果基本一致,那心里就踏实多了。如果差异很大,那就得回头检查数据质量了。
1.4 数据预处理:两者都不能跳过的一步
不管用哪个方法,原始计数矩阵不能直接往里塞。有几个共同的坑,我先帮你标记出来。
- 低表达基因过滤:DESeq2内部做了自动化处理,但edgeR需要你手动调。我个人习惯用
filterByExpr函数。 - 库大小差异校正:都是通过计算每个样本的细胞/文库大小因子来归一化,但具体算法略有不同——DESeq2用中位数比值的几何平均,edgeR用TMM。
- 批次效应:如果实验有批次问题,千万不要直接扔进去。用
limma::removeBatchEffect先调整,或者把批次因子放到设计矩阵里。
1.5 绕不开的共同假设
虽然方法不同,但两者都依赖一个假设:大部分基因没有差异表达。这个假设是用来自动估计离散度的基础。
如果你做的实验是基因编辑敲除某个关键转录因子,几千个基因同时变化——这种情况其实不太符合这个假设。两种方法处理起来都会吃力,结果也要格外小心解读。
我记得有次做双突变体的RNA-seq,对照组和处理组差异极大,超过一半的基因都在变化。edgeR跑完结果非常激进,DESeq2相对保守,但两者重叠不到60%。后来用qPCR验证了几十个基因,发现DESeq2的假阳性率更低一些。那次之后我更确信:极端情况下,两个结果都做验证是唯一靠谱的方式。
1.6 为什么需要两种方法:给你一个对照
总结一下根本原因:算法设计时对噪声的容忍度和信息利用方式不同,导致不同数据规模、不同表达丰度下,两个方法各有优劣。
有对照,才能交叉验证。如果一个基因在两个方法中都是显著差异,那它是最可靠的一批。如果一个基因只在其中一个方法中显著,需要仔细看看它的表达量、离散度,甚至原始计数。
记住这句话: 差异表达分析不是“一锤子买卖”,而是一次需要反复校对的统计推断。准备两套工具,比只靠一个锤子强得多。
接下来的章节,我会一步步带你拆解DESeq2的完整工作流:从离散度估计到收缩后的log2 fold change计算。你准备好了吗?