引言Introduction
做转录组差异分析时,很多人卡在第一步。样本怎么分组,原始counts怎么读,低表达基因怎么过滤,结果又该如何解释。edgeR是Bioconductor中经典的差异分析工具 ,适合从零开始建立规范流程。
1. edgeR是什么,为什么适合零基础入门
1.1 从原始counts出发,适合标准RNA-seq流程
edgeR处理的是原始计数数据 ,不是已经标准化后的TPM或FPKM。它基于负二项分布建模,核心任务是识别两组样本中表达显著变化的基因。对医学生、医生和科研人员来说,这一点很重要。因为它对应的是更接近统计建模的标准差异分析流程。
edgeR常用于mRNA、miRNA、lncRNA等表达差异分析。课程中也强调了这一点。同一套代码框架可迁移到不同类型的表达矩阵 ,只是输入数据不同。对于做ceRNA、肿瘤分型、药物反应分析的人,这种通用性很高。
1.2 edgeR的核心优势
edgeR的优势不在“复杂”,而在“稳定”。它的标准流程清晰,适合建立可复用分析模板。常见步骤包括:
- 读取原始counts。
- 创建分组信息。
- 构建DGEList对象。
- 过滤低表达基因。
- 计算标准化因子。
- 估计离散度。
- 进行显著性检验。
- 导出差异基因结果。
只要理解这8步,edgeR差异分析代码就能真正上手。
这也是为什么很多生信文章和课程会把它作为入门工具。
2. 差异分析前必须先做的三件事
2.1 先确认输入的是原始counts
edgeR不适合直接拿归一化后的表达值跑。因为它的统计模型建立在计数型数据 上。也就是说,你的输入矩阵应该满足以下特点:
- 行是基因。
- 列是样本。
- 值是整数计数。
- 不应是log后数据。
如果输入类型不对,后续标准化和统计检验都会失真。很多初学者报错,不是因为代码错,而是因为数据类型错。
2.2 分组信息决定结果方向
差异分析里,分组是最容易被忽略的地方。分组顺序会直接影响logFC的方向解释。
例如 tumor-control 和 control-tumor,得到的上下调方向是相反的。
课程中给出的典型做法,是根据样本名自动识别分组。比如通过列名某几位字符判断样本属于control还是case。对于TCGA类数据,这种方法很实用,但前提是你要先熟悉自己的样本命名规则。
2.3 低表达基因要先过滤
低表达基因会增加噪声,影响离散度估计和检验稳定性。edgeR分析前通常会先去掉表达过低的基因。课程中提到的做法是过滤均值小于1的基因。
这一步的意义很直接:
- 降低假阳性。
- 提高统计效率。
- 减少无信息基因对结果的干扰。
过滤不是删数据,而是提高分析质量。
3. edgeR差异分析代码的标准流程
3.1 加载包并读取数据
在正式运行前,先加载edgeR包,并读取原始表达矩阵。常见分析中,数据可能来自DESeq2整理后的原始文件,也可能是保存好的R数据对象。课程提到可用load()快速读取,这在大数据项目中很常见。
读取后,建议先检查结构:
head()查看前几行。- 确认行名是基因名。
- 确认列名是样本名。
- 确认矩阵维度正确。
先验证数据,再开始建模,是避免后续返工的关键。
3.2 创建分组向量与DGEList对象
edgeR分析的关键对象是DGEList。它把原始counts和分组信息整合到一起,便于后续标准化、离散度估计和检验。
典型逻辑如下:
- 创建
group向量,标识control和case。 - 使用
rep()生成组别信息。 - 用
DGEList()构建对象。
这一步的本质,是把“表达矩阵”升级成“可分析对象”。
没有这一步,后面的edgeR函数无法正常工作。
3.3 过滤低表达并做标准化
接下来要做两件事。第一,过滤低表达基因。第二,使用calcNormFactors()计算标准化因子。edgeR默认使用TMM方法进行归一化,主要是校正样本间文库大小和组成偏差。
标准化后,建议查看因子结果。因为如果某个样本的标准化因子明显异常,往往意味着:
- 样本质量存在问题。
- 文库构成差异过大。
- 需要回到原始数据排查。
标准化不是形式步骤,而是决定比较是否公平。
4. 结果怎么看,哪些指标最重要
4.1 离散度和显著性检验
edgeR的统计核心之一是离散度估计。课程中提到使用estimateDispersion或类似函数思路来计算离散度,然后进行差异检验,最终获得P值。
对初学者来说,可以这样理解:
- 离散度反映样本间波动。
- 波动越大,检验越保守。
- 波动越小,越容易检出差异。
edgeR基于负二项分布模型,适合处理RNA-seq中常见的过度离散问题。相比简单的t检验,它更贴合转录组数据特征。
4.2 topTags输出的是完整差异结果
差异检验后,通常使用topTags()查看结果。通过设置n参数,可以输出全部基因,而不是只看前几条。
结果中常见字段包括:
- 基因ID。
- logFC。
- logCPM。
- PValue。
- FDR。
其中logFC和FDR是筛选差异基因最常用的两个指标。
4.3 logFC和FDR怎么解释
logFC表示倍数变化的对数值。
如果logFC大于0,说明目标组上调。
如果logFC小于0,说明目标组下调。
FDR是多重假设检验校正后的结果,通常比原始P值更适合用于筛选。因为转录组一次会检测上万基因,直接看P值容易产生假阳性。
实践中常见阈值包括:
- PValue < 0.05。
- |logFC| > 2。
- 或结合FDR进一步收紧。
真正有意义的差异基因,必须同时满足统计学和生物学幅度。
5. 结果筛选、保存与可视化
5.1 筛选上下调基因
课程中给出的筛选逻辑很明确:先按P值和fold change筛选,再区分上下调。常见条件为:
- p值小于0.05。
- |fold change|大于2。
随后可用ifelse()判断表达方向,并添加Regulation字段,标记为up或down。这样处理后,结果表更适合后续作图和富集分析。
这一步的价值在于把统计结果转成可读结果。
科研里,能直接解释的表格比原始输出更重要。
5.2 导出结果并补充基因名
分析完成后,通常要把结果转换成数据框,再补充基因名,最后写入文件。这样方便:
- 下游富集分析。
- 火山图和热图绘制。
- 论文附表整理。
- 与实验验证结果对照。
建议保存时同时保留完整结果和筛选结果。前者用于追溯,后者用于展示。
5.3 火山图和热图是最常见的输出
edgeR结果出来后,最常见的可视化有两类。
-
火山图。
横坐标常用-log10(FDR),纵坐标用logFC。
上调、下调和未达阈值的基因可以用不同颜色区分。 -
热图。
通常提取显著差异基因表达矩阵,使用热图展示样本间表达模式。
低表达可设为蓝色,高表达设为红色。
火山图看整体,热图看分组模式。两者结合最有说服力。
6. edgeR与DESeq2怎么选
6.1 没有绝对优劣,关键看场景
课程中明确提到,edgeR和DESeq2没有绝对优劣。两者都属于主流RNA-seq差异分析方法。很多研究中,两者结果重叠度可达到80%以上。
如果你的目标是建立规范流程,理解统计逻辑,edgeR非常适合。
如果你需要更偏向另一种建模框架,也可以用DESeq2。
重点不是追求“唯一正确”,而是保证方法适配数据。
6.2 初学者最容易犯的错误
常见问题主要有四类:
- 把TPM/FPKM当作counts输入。
- 分组方向设置错误。
- 过滤低表达基因不充分。
- 只看P值,不看FDR和logFC。
这些错误会让结果看起来“有很多差异基因”,但其实可信度不高。
所以初学者最需要做的,不是堆代码,而是理解每一步的统计意义。
7. 从代码到实战,如何更快上手
7.1 建议把edgeR流程整理成模板
对于医学生、医生和科研人员,最有效的学习方式不是死记函数,而是把流程整理成模板。你可以固定以下模块:
- 读取数据。
- 自动分组。
- 构建DGEList。
- 过滤低表达。
- 标准化。
- 估计离散度。
- 差异检验。
- 导出和作图。
这样以后只需替换样本名和条件,就能重复分析新数据。
模板化,是提高生信效率的核心能力。
7.2 用解螺旋课程和工具减少试错
如果你已经有原始数据,但不确定怎么分组、怎么写edgeR差异分析代码,或者不知道结果该怎么筛选和画图,可以直接借助解螺旋的系统课程和实战资源。它的价值在于把零散知识串成完整流程,帮助你少走弯路。
对想快速做出可复现结果的人来说,解螺旋可以把“会看代码”变成“会做分析”。
总结Conclusion
edgeR差异分析的核心并不神秘。它本质上是一个从原始counts出发,经过分组、过滤、标准化、离散度估计和显著性检验,最终得到可信差异基因的标准流程。只要理解输入数据、分组方向、低表达过滤和FDR筛选这几个关键点,零基础也能逐步上手。
如果你正在学习RNA-seq分析,建议把本文当作入门框架,再结合实际数据反复练习。想进一步提高效率、少踩坑,可以直接进入解螺旋 ,用更系统的课程和实战工具,把edgeR差异分析真正做规范、做完整、做可复现。

- 引言Introduction
- 1. edgeR是什么,为什么适合零基础入门
- 2. 差异分析前必须先做的三件事
- 3. edgeR差异分析代码的标准流程
- 4. 结果怎么看,哪些指标最重要
- 5. 结果筛选、保存与可视化
- 6. edgeR与DESeq2怎么选
- 7. 从代码到实战,如何更快上手
- 总结Conclusion






