1. DESeq2简介:背景、原理、与edgeR/limma的比较归纳总结

1.1 为什么要学DESeq2

做RNA-seq差异表达分析,说白了就是回答一个问题:这个基因在对照组和实验组里,表达量到底变没变?

我刚开始做这个的时候,以为直接用read count做个t-test就完事了。后来才发现——根本行不通。为什么?因为你拿到的counts数据,方差不是均匀的。表达量低的基因,波动大;表达量高的基因,相对稳定。用普通统计模型处理这种数据,假阳性会高得离谱。

DESeq2就是为解决这个问题而生的。它基于负二项分布模型,专门处理RNA-seq count数据的过离散问题。我个人觉得,它是目前最稳健的差异表达分析工具之一。

1.2 核心原理速览

DESeq2的核心思想其实不复杂:

  • 假设每个基因的counts服从负二项分布
  • 用所有基因的信息去估计每个基因的方差
  • 通过缩小估计(shrinkage)提高小样本下的稳定性

嗯,这里要注意一个关键点——过离散参数。普通泊松分布假设均值等于方差,但真实RNA-seq数据里,方差通常比均值大很多。DESeq2就是通过引入一个额外的离散参数来解决这个问题的。

个人经验:我记得最早用DESeq(第一版)分析一个小鼠数据集时,发现它对低表达基因的处理比直接跑edgeR好很多。后来DESeq2改进了离散估计的算法,效果更稳定了。

1.3 与edgeR和limma的对比

这三兄弟都是差异表达分析的主流工具。我工作中经常被问到“该用哪个?”——其实没有绝对答案,但各有侧重。

维度 DESeq2 edgeR limma
核心模型 负二项分布 负二项分布 线性模型+经验贝叶斯
离散估计方法 基因-wise + 缩小到回归曲线 条件似然 + 经验贝叶斯 不直接估计离散,用voom转换
小样本表现 优秀 较好 需要大样本更好
适用数据类型 counts(整数) counts(整数) counts/log2转化后均可
标准化方法 几何均值比率 TMM voom自动处理
处理因子设计 公式接口灵活 可处理多因子 最灵活的线性模型

你想想看,如果数据只有两三个生物学重复,DESeq2的缩小估计能帮你稳住方差。如果样本量很大(比如10个以上),limma加voom可能更快。

避坑指南:我曾经在一个项目中,用edgeR处理了一个只有2个重复的数据集,结果差异基因列表反复横跳。后来换成DESeq2,结果稳定多了。但这不是说edgeR不好——在重复数足够时,它们的结论基本一致。

1.4 什么时候优先选DESeq2

我个人习惯这样判断:

  1. 重复数少(2-4个)→ DESeq2
  2. 数据中有大量低表达基因 → DESeq2的缩小估计更稳健
  3. 需要处理复杂实验设计(时间序列、多因子)→ 三者都可以,但DESeq2的公式接口比较直观
  4. 大规模分析(上千个样本)→ limma+voom更快,DESeq2会慢一些

1.5 一个简单的DESeq2工作流

先看一眼基础代码长什么样,心里有个底:

library(DESeq2)

# 构建DESeqDataSet对象
dds <- DESeqDataSetFromMatrix(
  countData = counts_matrix,
  colData = sample_info,
  design = ~ treatment
)

# 核心分析
dds <- DESeq(dds)

# 提取结果
res <- results(dds, contrast = c("treatment", "treated", "control"))

# 查看显著差异基因
res_sig <- subset(res, padj < 0.05 & abs(log2FoldChange) > 1)

你看,核心函数其实就一个 DESeq()。它内部封装了:估计size factor → 估计离散 → 拟合模型 → 假设检验。整个流程非常清晰。

1.6 整体知识框架

我把本章的核心逻辑画成了下面的结构图。你可以把它当作后续课程的总纲:

DESeq2差异表达分析核心知识框架 输入数据 counts矩阵 + colData 整数read count 数据预处理 过滤低表达基因 估计size factor 核心模型 负二项分布 ~ 均值 + 离散参数 离散估计 模型拟合 假设检验 差异基因列表 DESeq2核心

注意:DESeq2要求输入是未标准化的整数counts。不要先做RPKM/FPKM标准化,否则会破坏统计模型的假设。

1.7 本章小结

这一章我们聊了:

  • DESeq2是为RNA-seq差异表达设计的专用工具——不是t-test的替代品,是更好的选择
  • 核心原理是负二项分布 + 缩小估计,解决了count数据的过离散问题
  • 与edgeR相比,DESeq2在小样本下更稳健;与limma相比,它更贴合count数据特性
  • 选择哪款工具,取决于你的样本量、实验设计和分析目标

说实话,我自己的项目里,80%的情况我直接用DESeq2。只有在样本量超过50且需要快速迭代时,才会考虑limma。