GSEA富集分析实践理论

第一部分:核心理念 - 为什么要用GSEA?

1. 传统富集分析(如超几何检验/Fisher精确检验)的局限性:

方法:基于一个“显著基因列表”(例如,p-value < 0.05 & |logFC| > 1),看某个通路中的基因是否在该列表中过度出现。

问题:

阈值依赖性强:不同的阈值会产生不同的“显著基因列表”,导致结果不稳定。

忽略细微但一致的变化:如果某个通路中的大部分基因都发生了轻微但一致的表达变化(例如,logFC都在0.5-0.8之间),它们可能因为达不到阈值而被排除在分析之外,即使该通路在生物学上确实被激活/抑制了。

丢失信息:完全忽略了基因在排序列表中的位置信息。

2. GSEA的优势:

无阈值:它不需要预先定义“显著”基因。它使用整个排序的基因列表。

捕捉细微变化:能够识别出那些在通路上整体协调性、但单个效应不大的基因集合的变化。

核心思想:GSEA要问的问题是:“某个预先定义的基因集S(例如,某个KEGG通路中的基因)的成员,是在整个表达谱的排序列表中是随机分布的,还是更倾向于集中在列表的顶部或底部?”

第二部分:关键步骤与统计概念

步骤1:基因排序

操作:根据基因与表型的关联程度进行排序。最常用的度量是信噪比,也可以是logFC、t-statistic等。

结果:得到一个从“最与表型正相关”到“最与表型负相关”的基因列表 `L`。

步骤2:计算富集分数(Enrichment Score, ES)

目标:量化一个基因集 `S` 在排序列表 `L` 的顶部或底部的富集程度。

方法:

1. 从列表 `L` 的第一个基因走到最后一个基因。

2. 当遇到一个属于基因集 `S` 的基因时,增加一个“行走值”;遇到不属于 `S` 的基因时,减少一个“行走值”。

3. 这个“行走值”的增量与基因的排序指标(如logFC)的绝对值相关,即排名越靠前的基因对得分的贡献越大。

4. ES 就是这个行走过程中,与零点的最大偏差。正ES 表示基因集富集在列表顶部(与表型正相关),负ES 表示富集在列表底部(与表型负相关)。

步骤3:评估ES的显著性

核心方法:表型置换

目的:判断观察到的ES是否显著不同于随机情况。

操作:随机打乱样本的标签(如Case/Control),重新计算ES。重复这个过程1000-10000次,为基因集 `S` 构建一个在零假设(基因集与表型无关)下的ES分布。

结果:

名义p值 (Nominal p-value):基于这个零分布计算的观察ES的p值。

错误发现率FDR:这是GSEA结果中更重要的指标。为了校正多重假设检验,GSEA会计算每个基因集ES的FDR q-value。通常认为 FDR < 0.25 是具有统计学意义的阈值(Broad研究所推荐,比0.05宽松,旨在减少假阴性)。

标准化富集分数(Normalized Enrichment Score, NES):将ES对基因集大小进行标准化,使得不同大小的基因集之间的ES可以比较。在比较不同通路的富集程度时,应看NES而非ES。

第三部分:结果解读的实用要点

1. 核心输出指标:

NES:主要关注对象。绝对值越大,富集程度越强。正负号表示方向。

FDR q-value:首要的显著性指标。FDR < 0.25 通常认为有意义。有时也关注 FWER p-value,它是一个更严格的指标。

ES:了解其原始大小,但比较时用NES。

2. 解读GSEA图:

顶部(绿色)曲线:代表运行富集分数( walking score )。

中间竖线:代表基因集 `S` 中的成员在排序列表 `L` 中出现的位置。

底部(黑色)条带:峰越高,表示该区域的基因对ES的贡献越大。

一个“漂亮”的显著富集通常表现为:绿色曲线在开始或结尾有一个明显的峰值,并且中间的竖线密集地集中在列表的一端。

3. 生物学意义 > 统计学意义:

一个FDR显著的通路,如果与你的实验背景毫无关系,可能需要谨慎对待(可能是假阳性或未知的新机制)。

一个FDR不显著(例如0.3)但NES很高且生物学上非常合理的通路,也值得在报告中提及,作为“提示性”结果。

4. 基因集数据库的选择:

结果高度依赖于你使用的基因集。常用数据库包括:

Hallmark (H):来自MSigDB,是精选的、具有明确生物学状态的基因集,解读最直接。

KEGG, Reactome, BioCarta:经典的通路数据库。

GO (Gene Ontology):分为生物过程(BP)、分子功能(MF)和细胞组分(CC)。结果可能非常具体,也可能非常宽泛,需要仔细筛选。

在报告中必须注明使用的数据库和基因集版本。

第四部分:与代码实践相关的注意事项

1. 输入数据准备:

需要一个基因表达矩阵。

需要一个样本分组信息(用于排序)。

需要提前下载好对应的基因集数据库(.gmt文件)。

2. 参数设置:

`nPerm`:置换次数,通常设为1000或以上,以确保统计的稳健性。

`minGSSize` / `maxGSSize`:过滤掉过大或过小的基因集。太小的基因集可能不稳定,太大的基因集可能缺乏特异性。

`pvalueCutoff`:通常设为0.05或1(如果只想用FDR过滤)。

`pAdjustMethod`:多重检验校正方法,常用"BH"(即FDR)。

3. 软件包选择:

clusterProfiler:在R中最流行、最易用的包,功能强大,绘图方便。

fgsea:速度非常快,特别适合大型分析。

GSEA软件(来自Broad研究所):桌面版软件,有图形化界面,是GSEA的“原版”。