引言Introduction

差异分析是生信文章最常见的起点,但很多人卡在两个地方。第一,不知道 limma 该怎么写。第二,不知道结果如何写进论文,才符合发文逻辑。本文从 差异分析R代码 、结果解释到生信发文思路,帮你把这一步讲清楚。
科研人员在电脑前分析基因表达矩阵,旁边展示R代码窗口、火山图和差异基因热图,体现“代码+论文写作”场景

1. limma包为什么适合做差异分析

1.1 limma的核心定位

limma 最早用于芯片数据差异分析,后来也广泛用于 RNA-seq 计数数据。它的优势在于流程成熟,统计框架清晰,适合标准化表达矩阵后的组间比较。

对于医学生、医生和科研人员来说,limma的价值不只是“能出结果”,而是“结果可解释、可复现、便于写进文章”。 在规范的生信文章中,差异表达分析往往就是后续火山图、热图、富集分析和PPI网络的入口。

1.2 适用数据与基本前提

limma 适合处理已经整理好的表达矩阵。常见输入包括:

  • 芯片表达矩阵
  • RNA-seq count矩阵
  • 已完成基础预处理的数据

如果是 RNA-seq 数据,通常需要先做标准化,再进入 limma 分析。常见做法是结合 voom 方法,将 count 数据转换为适合线性模型处理的表达值。

关键点是,limma并不是“拿来就跑”的工具。 它依赖合理的分组、合适的标准化和明确的对比设计。分组错了,方向就可能错。对比矩阵错了,结果也会错。

2. limma差异分析的标准流程

2.1 第一步,构建设计矩阵

差异分析的起点不是画图,而是明确分组。你要先回答一个问题,谁和谁比较。

常见场景包括:

  1. 疾病组 vs 对照组
  2. 处理组 vs 未处理组
  3. 高表达组 vs 低表达组
  4. 多亚型之间的两两比较

在 limma 中,通常先用 model.matrix() 构建设计矩阵。这个步骤的作用,是把样本分组信息转化为统计模型可识别的形式。

2.2 第二步,线性建模与对比设置

完成分组后,下一步是拟合线性模型。芯片数据通常可以直接进入 lmFit()。如果是 RNA-seq 数据,常见流程是先 voom(),再 lmFit()

随后根据研究问题设置对比。比如肿瘤组减去对照组,或者处理组减去模型组。这个阶段常用 contrasts.fit() 来指定比较方向。

这里最容易出错的不是代码本身,而是“比较方向”。
如果你写的是 tumor-control,那么 logFC>0 表示肿瘤组上调,logFC<0 表示肿瘤组下调。方向一旦写反,后面的生物学解释也会跟着错。

2.3 第三步,贝叶斯校正与结果提取

limma 的经典优势之一,是使用经验贝叶斯方法稳定方差估计。常见函数是 eBayes()。它的作用,是让小样本分析更稳健,减少单个基因方差波动过大的影响。

之后用 topTable() 提取结果。这个函数通常会输出:

  • 基因名
  • logFC
  • AveExpr
  • t 值
  • P.Value
  • adj.P.Val
  • B 值

如果只记住一个字段,优先记住 logFC 和 adj.P.Val。
前者代表变化幅度,后者代表多重检验校正后的显著性。

3. 差异分析R代码怎么写才规范

3.1 一套常用limma代码框架

下面是一套适合论文分析思路的标准框架。不同项目可按实际数据调整。

library(limma)

# expr:表达矩阵,行为基因,列为样本
# group:分组向量,如 control / tumor

design <- model.matrix(~0 + group)
colnames(design) <- levels(group)

fit <- lmFit(expr, design)

contrast.matrix <- makeContrasts(tumor-control, levels = design)
fit2 <- contrasts.fit(fit, contrast.matrix)

fit2 <- eBayes(fit2)

deg <- topTable(fit2, adjust.method = "BH", number = Inf)

这段代码的逻辑很清楚:

  • 先定义分组
  • 再建模
  • 再设置对比
  • 再做统计校正
  • 最后输出全量结果

这就是差异分析R代码最核心的骨架。

3.2 结果筛选的常用阈值

拿到 topTable() 结果后,通常会再做筛选。最常见的标准是:

  • adj.P.Val < 0.05
  • |logFC| > 1

有些文章会使用更严格标准,例如:

  • adj.P.Val < 0.01
  • |logFC| > 1.5|logFC| > 2

阈值并没有绝对统一答案。关键是和研究设计一致,并在方法部分写清楚。 如果样本量小,过严阈值可能导致差异基因太少。如果样本量大,较严格阈值更有助于提升结果可信度。

3.3 上下调基因的定义

筛选之后,通常还要区分上调和下调:

  • logFC > 0,定义为上调
  • logFC < 0,定义为下调

建议在文章和代码中都明确说明比较方向。例如“tumor versus normal”,不要只写“差异分析”。因为差异分析不是绝对概念,它一定依赖对比对象。

4. 从结果到图:火山图和热图怎么做

4.1 火山图的作用

火山图是差异分析结果最常见的展示方式。它可以同时呈现变化幅度和显著性。

通常:

  • 横轴是 logFC
  • 纵轴是 -log10(P.Value)-log10(adj.P.Val)

火山图的意义不是“好看”,而是快速识别显著差异基因。
红色常表示上调,蓝色常表示下调,灰色表示不显著基因。

4.2 热图的作用

热图更适合展示代表性差异基因在样本间的表达模式。一般会选取显著上调和下调基因中的前若干个,或者选取功能相关基因集。

在论文中,热图常用于回答两个问题:

  1. 差异基因是否能区分样本分组。
  2. 样本聚类是否与临床分组一致。

如果热图显示组内聚类稳定、组间分离清楚,说明你的差异结果有一定说服力。

4.3 可视化要避免的常见问题

很多图看起来“像差异分析”,但实际上不够规范。常见问题包括:

  • 阈值未标明
  • 颜色含义不一致
  • 使用原始P值却不说明
  • 样本分组方向未交代
  • 只放图,不写图注

生信文章中,图不是装饰,而是证据。
每张图都要能回答一个明确问题。

5. limma结果如何写进生信文章

5.1 方法部分怎么写

方法部分要写清楚三件事:

  1. 用了什么数据
  2. 怎么做的差异分析
  3. 用了什么阈值

一个规范的写法思路是:

  • 采用 limma 包进行差异表达分析
  • 根据样本分组构建设计矩阵
  • 使用线性模型拟合并进行贝叶斯校正
  • adj.P.VallogFC 作为筛选标准

方法部分越具体,文章越容易过审。
因为审稿人最关注的是可重复性。

5.2 结果部分怎么写

结果部分不要只写“获得若干差异基因”。要写清楚:

  • 总共筛到多少个差异基因
  • 上调多少个,下调多少个
  • 用什么阈值筛选
  • 差异基因主要涉及哪些生物过程

例如,结果段落通常应包含:

  • 差异基因数量统计
  • 火山图展示
  • 热图展示
  • 后续富集分析入口

数字比形容词更有说服力。
“显著改变”不如“筛得 238 个差异基因,其中上调 146 个,下调 92 个”更适合论文表达。

5.3 发文思路的主线

一个常见的生信发文逻辑是:

  1. 找到差异基因
  2. 做功能富集
  3. 建PPI或调控网络
  4. 筛关键基因
  5. 做外部验证或临床相关分析

差异分析只是起点。真正的发文价值,在于你能否把差异基因进一步转化成机制线索或临床价值。

如果你只是输出一个 DEG 列表,文章通常不够完整。

6. 差异分析中最容易忽略的细节

6.1 样本质量和分组准确性

在正式分析前,建议先看 PCA、聚类图或样本间相关性。这样可以排查离群样本和分组错误。

如果样本本身质量有问题,再精致的代码也救不回来。差异分析的上限,往往由样本质量决定。

6.2 多重检验校正不能省

基因表达分析通常涉及上万次检验。如果只看原始P值,假阳性会明显增加。因此,limma 输出中的 adj.P.Val 非常重要。

常用校正方法是 BH 法。它在控制假发现率方面较为常见,也更适合高通量数据。

6.3 数据类型决定方法细节

芯片和 RNA-seq 虽然都能用 limma,但细节并不完全相同。

  • 芯片数据:通常直接进入线性模型
  • RNA-seq 数据:常结合 voom 转换后再分析

不要把不同平台的数据当成完全一样处理。
这一步做错,后面整篇文章的统计基础都会受影响。

总结Conclusion

limma 是差异分析中最实用、最成熟的工具之一。它适合芯片和 RNA-seq 表达矩阵,能完成从建模、对比、校正到结果提取的标准流程。对医学生、医生和科研人员来说,真正重要的不只是会跑代码,而是理解 差异分析R代码 背后的统计逻辑、结果阈值和论文表达方式。

如果你希望把差异分析结果进一步用于火山图、热图、富集分析和生信发文,建议从一开始就按论文标准设计流程。这样后续写作会更顺,也更容易形成完整的研究链条。
如果你想少走弯路,可以结合 解螺旋 的生信方法体系,把差异分析、可视化和发文思路一起打通。

解螺旋科研助手企业微信二维码,扫码添加免费领取科研资料礼包,包含AI科研提效、SCI投稿技巧、国自然基金、医学科研绘图、科研软件工具等实用资料