21  DESeq2 差异分析(下):从统计检验到火山图、热图的生物学解读

21.1 【导语】万事之源:为何要这样做?

经过上一章的标准化校准后,我们现在终于拥有了一份可以在“公平”基准上进行比较的数据。差异表达分析的下一程,也是其核心所在,是利用严谨的统计模型,为转录组中的每一个基因,都独立地进行一次严格的“假设检验”。

这个过程的本质,是在为每一个基因回答一个根本性的科学问题:“我们观察到的这个基因在处理组与对照组之间的表达量差异,究竟是一个真实的、由实验处理所驱动的生物学信号,还是有极大的可能性,仅仅是由生物学重复样本内部的随机波动所导致的?”最终,我们产出的那份差异表达基因列表,就是在这场对上万个基因进行的大规模假设检验中,通过了最严格筛选的“胜出者”集合。

21.2 【核心实践】从原理到决策

21.2.1 【一步运行差异分析:DESeq()函数】

DESeq2将复杂的统计流程,高度封装在了一个核心函数DESeq()之中。这并非一个“黑箱”,而是一个逻辑清晰的整合性命令。

当你运行dds <- DESeq(dds)时,这个函数会在后台为你依次、无缝地执行三大核心步骤:第一,计算每个样本的标准化缩放因子(`Size Factor Estimation);第二,为每一个基因估算其在样本内的表达波动程度,即离散度(Dispersion Estimation);第三,将数据拟合到负二项分布广义线性模型中,并对你指定的实验设计进行统计检验(Model Fitting and Hypothesis Testing)。

21.2.2 【提取与解读结果:results()函数】

DESeq()运行完毕后,results()函数就是你用来提取最终分析结果的唯一窗口。

## 提取结果表
res <- results(
  dds,
  contrast = c(
    "group", "Treated", "Control"
  )
)

核心输出列

log2FoldChange:差异倍数的log2转换值。它代表了生物学效应的大小。正值表示在Treated组中上调,负值表示下调。

pvalue:名义P值,代表了统计检验的原始结果。

padj:经过多重检验校正后的P值,也常被称为FDR(错误发现率)。这是你判断统计学显著性的唯一标准

参数决策contrast参数是一项至关重要的“比较方向”决策。contrast = c("group", "Treated", "Control")这行代码,是在明确地告诉DESeq2:“请用Treated组的平均表达量,作为分子,去除以Control组的平均表达量,来计算FoldChange”。如果你将后两者的顺序颠倒,那么你得到的log2FoldChange值的正负号将完全相反,这将彻底颠覆你对基因上下调的判断。

21.2.3 【筛选差异基因的“双重阈值”决策】

一份可靠的差异基因列表,必须同时通过统计学和生物学的双重过滤。

padj < 0.05:这是“统计学显著性”的门槛。它用于严格控制分析结果的假阳性率,确保我们筛选出的基因,其差异不太可能是由随机因素造成的。

abs(log2FoldChange) > 1:这是“生物学意义”的门槛。它用于进一步筛选那些表达水平变化足够大(通常定义为变化2倍以上,即log2(2) = 1)的基因。一个padj很显著但log2FoldChange极小的基因,其统计差异可能是真实的,但生物学效应可能微乎其微。

同时满足这两个条件的基因,才是我们通常意义上所说的“显著差异表达基因”。

21.2.4 【结果可视化:火山图与热图】

火山图 (volcano plot):这是一种宏观、直观地概览差异表达全景的经典图形。它将“统计学意义”(通常用-log10(padj)表示,值越大越显著)作为Y轴,将“生物学意义”(log2FoldChange)作为X轴,展现在一张二维散点图上。通过这张图,你可以一眼看出差异基因的总体分布、数量以及上下调的平衡情况。

热图 (heatmap):与火山图不同,热图是一种更聚焦的、用于展示表达模式的可视化方法。我们通常会提取差异最显著的前N个基因(例如,top 50),用热图来展示它们在所有样本中的相对表达水平。热图是检查我们筛选出的差异基因,能否清晰地将不同实验组别的样本分离开,以及观察上下调基因内部是否存在共表达模式的“金标准”视图。

21.3 【认知升维】常见的思维陷阱与对策

21.3.1 思维陷阱一:只用pvalue不用padj

当我们在一个转录组数据中同时检验上万个基因时,如果仅仅使用传统的p < 0.05作为阈值,那么由于“多重检验问题”,我们必然会因为纯粹的概率,而引入大量的假阳性结果。

其对策是,必须用一个生动的例子来建立心智模型:如果你连续购买一万张中奖率为5%的彩票,你几乎必然会中几百张奖,但这并不代表你拥有任何特殊的运气。在基因组学分析中,pvalue就是单张彩票的中奖率,而padj(或FDR)则是对你中得所有奖项的真实性进行了校正后的评估。因此,必须建立铁律:在任何高通量数据分析中,必须使用padj作为统计显著性的最终评判标准

21.3.2 思维陷阱二:差异基因数量太少或太多

当分析结束后,得到0个或几千个差异基因时,新手往往会不知所措。

其对策是,提供一个系统性的“诊断清单”来指导思考: 差异基因太少?

  1. 样本间差异是否过大?(检查PCA图,看生物学重复是否分散)

  2. 生物学效应是否本身就极其微弱?(这是生物学问题,而非计算问题)

  3. 实验重复数是否不足?(如只有2v2,统计功效会极低)

差异基因太多?

  1. 生物学处理效应是否本身就极强?(例如, knockout vs wildtype)

  2. 是否存在未被校正的、强烈的批次效应?(PCA图上,样本是否首先按批次分开)

  3. 筛选阈值是否设置得过于宽松?(尝试提高log2FC的门槛)

21.4 【总结与拓展】构建你的思维框架

我们必须将差异表达分析的整个过程,视为一次严谨的、多阶段的“信号筛选”工程。在这个工程中,你的核心任务,是设定科学、合理的统计学(padj)和生物学(log2FoldChange)双重“过滤器”,从充满噪音的全转-录组原始数据中,层层筛选,最终提纯出那些最有可能驱动你所观察到的生物学表型的、核心的基因集合。

基于此框架,请思考一个能够深化你对统计结果理解的启发性问题:在你的差异分析结果表格中,你发现了两个有趣的基因。基因A的log2FoldChange高达5(表达量变化了32倍),但它的padj值却不显著(例如,0.1)。与此同时,另一个基因B的log2FoldChange只有1.2(表达量变化约2.3倍),但它的padj值却达到了极显著的水平(例如,1e-10)。你认为,造成这两种截然不同现象的根本原因是什么?(提示:请思考基因表达量的“离散度”,即样本内的方差大小)。在这两个基因中,哪一个所代表的生物学故事,在统计学上是更“可靠”的?


探索生命科学前沿,提升实战技能!欢迎微信搜索并加入「生信实战圈」,获取最新技术干货、实战案例与行业动态。 点击关注,与同行一起成长!