当前位置:首页>排行榜>富集分析方法怎么选:ORA、GSEA 与单样本打分

富集分析方法怎么选:ORA、GSEA 与单样本打分

  • 更新时间 2026-09-28 08:25:03
富集分析方法怎么选:ORA、GSEA 与单样本打分

大家好!上一篇我们讲了富集分析中如何选择数据库,也提到有时需要根据研究领域自建特定的基因集。这一篇我们来讲富集分析的另一个重要决策:用什么方法做富集分析。

无论用哪种方法,富集分析要做的事情都是一样的:把基因层面的结果,转化为通路、生物学过程等功能层面的描述。不同方法的区别在于:用了数据中的哪些信息,以及用什么方式判断"富集"。

最常用的方法有两大类:ORA 和 GSEA。此外,还有一类以单个样本为单位的打分方法,如 ssGSEA、GSVA。这几类方法没有绝对的优劣,只有各自适用的场景。

01

ORA(Over-Representation Analysis,过表达分析)是最基础的方法:把我们关注的基因列表,与数据库中的每个基因集取交集,再用统计检验判断这个交集是否比随机情况下预期的更多。具体原理在上一篇中已经介绍过。

ORA 的核心特点是:只需要一个基因列表。这带来两个好处:

1. 基因集来源不受限制。 列表不一定来自组间比较的表达数据,任何实验得到的基因、蛋白或代谢物列表都可以分析,例如:

  • Co-IP 质谱鉴定到的互作蛋白;
  • ChIP-seq 找到的蛋白结合靶基因;
  • 测序中发现的突变基因;
  • 单细胞数据中某个亚群的 marker 基因。

2. 统计逻辑简单,结果可以追溯到具体基因。 ORA 检验的就是"列表与某个基因集的交集,是否比随机抽取时预期的更多"。和 GSEA 的排序、置换检验相比,这个逻辑更容易理解。结果中也可以直接看到是列表里的哪几个基因落在了这个条目中,方便回到具体基因做下一步验证。

ORA 的局限主要有两点:

1. 结果依赖阈值。 以转录组测序为例,做 ORA 之前必须先设阈值筛选差异基因。用 |log2FC| > 0.5、P < 0.05 和用 |log2FC| > 1、P < 0.05 得到的基因列表不同,富集结果也可能不同。阈值筛选还会带来两个问题:

  • 变化幅度较小的基因会被直接舍弃。如果某条通路里的很多基因都只是小幅变化,ORA 很可能检测不到这条通路。
  • 如果处理比较温和,差异基因本身就不多(比如只有一两百个),富集结果往往不显著或不稳定。

2. 方向难以判断。 按阈值筛选时,我们通常会得到上调、下调两个基因列表,分别做富集分析。如果某个条目在上调和下调中都富集到了,就很难判断这个生物学过程整体是被激活还是被抑制。

这些局限,引出了第二种方法:GSEA。

02

GSEA(Gene Set Enrichment Analysis)需要两个维度的输入:

  1. 数据库中的基因集,这一点和 ORA 相同;
  2. 每个基因的变化倍数或统计量(如 log2FC),这是 ORA 不用的信息。GSEA 按这个指标给所有基因排序,并把它作为权重:变化幅度越大的基因,对结果的贡献越大。

GSEA 的第一个好处是不需要阈值。 比如按阈值筛选,你可能得到上调 300 个、下调 200 个基因;而 GSEA 会把检测到的所有基因都纳入分析,看某个基因集的基因在整个排序中是整体偏向前端(上调)还是后端(下调)。所以即使单个基因的变化都不大,只要同一个基因集里的许多基因朝同一个方向变化,GSEA 也能检测到。

GSEA 早期的奠基性工作(Mootha 等,2003)正是在糖尿病患者的肌肉组织中发现,氧化磷酸化相关基因的表达平均只下降了约 20%,单个基因都达不到显著水平,但作为一个整体呈现一致的下调。

第二个好处是方向明确。 GSEA 对每个基因集只给出一个方向:以处理组相对对照组排序时,NES > 0 表示整体上调,NES < 0 表示整体下调。它不会把基因集拆成上调、下调两部分分别看。需要注意的是,如果一个基因集里上调和下调的基因数量相当,GSEA 通常不会给出显著结果。这本身也是一种信息:说明这条通路并没有整体朝一个方向变化。

当然,GSEA 也有局限:

1. 需要每个基因的变化信息。 如果你手上只有一个基因列表(比如 Co-IP 质谱得到的互作蛋白),没有变化倍数或统计量可以用来排序,就无法做 GSEA。

2. 需要以全部检测到的基因作为输入。 GSEA 的排序应该覆盖所有检测到的基因,而不是筛选后的差异基因。如果只把几百个差异基因拿去排序,就失去了 GSEA 不依赖阈值的意义。另外,如果检测平台本身覆盖的基因就少(比如靶向测序 panel),和数据库基因集重叠的基因也少,很多基因集会因为达不到软件设定的最小基因数(常见默认值为 10 或 15)而被过滤掉,统计效力也会下降。

03

单样本打分:关注每个样本的通路活性。前两种方法关注的通常是 A 与 B 的比较,即处理组 vs 对照组(当然,ORA 的基因列表也可能来自其他类型的实验)。

但有时我们需要另一类方法:不预先给样本分组,而是针对某条感兴趣的通路或生物学过程,计算它在每个样本中的活性。常用的方法有 ssGSEA、GSVA,单细胞数据中常用 AUCell 等。

以肿瘤队列为例,流程大致如下:

  1. 选取通路:比如关注铁死亡,可以用 KEGG 中的 Ferroptosis 通路(hsa04216),也可以按上一篇介绍的思路自建基因集;
  2. 样本打分:根据通路内基因在每个样本中的表达情况,给每个样本算一个分数;
  3. 样本分组:按分数高低把患者分成高、低(或高、中、低)活性组,或者直接从这个维度去理解患者之间的异质性。

这类方法的前提是多样本数据:十几、几十、上百例的队列,或单细胞数据中成千上万个细胞。如果只有处理组、对照组各 3 个样本,通常不会用这类方法。

在多样本队列中,打分把所关注的通路、生物学过程或基因集量化成了一个指标。这个指标可以和队列中的其他信息做关联分析,例如:

  • 生存分析;
  • 临床生理生化指标;
  • 其他基因的表达(如候选基因 X);
  • 治疗反应,如药物敏感性。

比如你想知道铁死亡是否和肿瘤耐药有关,可以分析铁死亡评分与药物敏感性指标之间的相关性。在这个过程中,你没有预先把样本分成 A 组和 B 组,而是从每个样本的评分出发,建立生物学过程和临床表型之间的联系。

这类方法的边界主要有以下几点:

1. 适用于多样本,不适用于简单的两组比较。 如果只是处理组和对照组的少量样本,用 GSEA 更直接。

2. 打分本身不是检验。 它只是把基因表达转换成通路分数,不判断组间差异是否显著。后面还需要结合统计检验、生存分析、相关分析等。

3. 分数的含义取决于基因集的组成。 打分反映的是基因集内基因的整体表达水平,不等同于通路真实的活性。如果基因集里同时有促进和抑制这个过程的基因,分数高不一定代表这个过程更活跃。这时可以考虑把基因集拆成促进、抑制两部分分别打分。

4. 分数是相对的。 以 GSVA 为例,打分时会参考同一次分析中所有样本的表达分布,所以分数只在同一次分析的样本之间可比。更换或合并队列后,同一个样本的分数可能会变。

04

最后我们讨论一下如何选择富集方法

第一步:除了基因列表,还有什么信息?

  • 如果只有一个基因列表,既没有每个基因的变化值,也不来自组间比较(例如 Co-IP 质谱的互作蛋白、ChIP-seq 的靶基因),用 ORA即可。
  • 如果有表达数据或差异分析数据,进入第二步。

第二步:样本情况和分析目的是什么?

  • 样本只有处理组和对照组,关心的是两组之间的差异:用 ORA 或 GSEA,进入第三步。这种情况不需要做单样本打分。
  • 样本是多样本队列或单细胞数据,关心的是每个样本(或细胞)的特征,或者想把通路活性与生存、临床指标等做关联:用 ssGSEA、GSVA 或 AUCell。

第三步:做组间比较时,选 ORA 还是 GSEA?

  • 所有检测到的基因都有变化倍数或统计量:可以同时做GSEA和ORA。
  • 只有筛选后的差异基因列表:用 ORA。

方法本身没有优劣之分。先弄清楚自己手里有什么数据、想回答什么问题,再选择对应的方法;在设计实验时,也可以提前想好后续要用哪种富集方法,并据此安排样本量和检测方案。

随机文章