Codar
下载

GSEA 基因集富集分析与 ssGSEA、GSVA

GSEA(Gene Set Enrichment Analysis)不预先挑选差异基因,而是把全部基因按与表型的关联强度排序,检验一个基因集的成员是否集中在排序列表的顶端或底端。它适合「单个基因变化不大、但整条通路协同变化」的情形,并给出方向。ssGSEA 和 GSVA 是样本级延伸,把基因 × 样本矩阵转为基因集 × 样本评分矩阵,便于做组间比较、相关和聚类。常用工具有 GSEA 桌面版、clusterProfiler、fgsea 和 GSVA 包,基因集多来自 MSigDB。

什么时候用

  • 差异基因很少,但怀疑某些通路整体上调或下调
  • 需要知道通路变化的方向,而不只是「是否相关」
  • 用 MSigDB Hallmark 等基因集概括一次实验的整体转录变化
  • 为每个样本计算通路或细胞特征评分,再与分组或表型关联
  • 单细胞亚群比较时,对差异统计量或 pseudobulk 结果做通路排序分析

不适合的情况

  • 只有一份没有排序指标的基因列表,应使用 GO/KEGG 过表征分析
  • 每组只有两三个样本却对 ssGSEA 评分做组间检验,方差估计不可靠
  • 把 ssGSEA 免疫特征评分当作细胞比例,二者含义不同

需要准备的数据

排序基因列表
全部检测基因及其排序指标,如 DESeq2 的 stat;去除重复基因名和缺失值,不要只放差异基因
表达矩阵
GSEA 桌面版和 GSVA 需要基因 × 样本矩阵,行名 ID 类型须与基因集一致
基因集
GMT 文件,或用 msigdbr 按物种和集合(H、C2、C5 等)获取
样本分组
两组比较的表型标签;评分后的差异分析还需要设计矩阵和协变量

分析步骤

  1. 1

    选择排序指标

    推荐用兼顾效应量和可信度的统计量,如 DESeq2 的 Wald stat 或 limma 的 t 值;只用未收缩的 log2FC 会把低表达基因的噪声推到两端。排序后先看两端基因是否符合预期。

  2. 2

    准备基因集

    先用 MSigDB Hallmark(H)集合做整体概览,再按研究问题加入 C2 通路或 C5 GO。用 msigdbr 获取时确认物种和基因 ID 类型与排序列表一致,记录 MSigDB 版本。

  3. 3

    运行 GSEA

    R 中可用 clusterProfiler 的 GSEA() 或 fgsea,输入是按降序排列、带基因名的数值向量。固定随机种子保证置换结果可复现,并检查有多少基因因 ID 不匹配被丢弃。

  4. 4

    筛选与排序结果

    按校正后 P 值或 FDR q 值筛选,再按 NES 排序。正负 NES 分开整理,分别代表在比较组和参照组中整体偏高的基因集,避免在同一张图里混读。

  5. 5

    核查曲线与核心基因

    对重点基因集画富集曲线,确认 ES 峰值出现在列表一端而非中段;提取 leading edge 基因,看信号是由多数成员共同贡献,还是只靠少数几个基因。

  6. 6

    计算样本级评分

    需要每个样本的分数时,用 GSVA 包计算 GSVA 或 ssGSEA 评分;log 尺度表达用 Gaussian 核,原始整数计数用 Poisson 核。得到基因集 × 样本矩阵后先画热图看整体模式。

  7. 7

    评分的下游分析

    可用 limma 对 GSVA 分数做组间差异,或与表型变量做相关。报告时写明评分方法、核函数和基因集版本,因为不同方法得到的分数尺度不同,不能混合比较。

关键参数与决策

排序指标

常用 stat、t 值或 sign(log2FC)×−log10(P)。fgsea 提示存在大量相同数值(ties)时,说明指标离散,建议换成连续统计量,而不是忽略警告。

置换类型

按表型置换能保留基因间相关结构,更严谨;GSEA 官方建议任一组少于 7 个样本时改用 gene_set 置换。R 中预排序 GSEA 只能做基因集置换,解读 FDR 时要考虑这一点。

基因集大小范围

GSEA 桌面版默认只分析 15–500 个基因的集合。过小的集合 NES 波动大,过大的集合内部方向混杂、难以解释,一般沿用这一范围即可。

显著性阈值

GSEA 文档指出在探索性分析中 FDR<0.25 可作为候选;写入核心结论时建议同时看校正 P 值,并采用 0.05 这类更严格的阈值。

GSVA 的 kcdf

决定如何估计每个基因的表达分布:标准化后的 log 表达或芯片数据用 Gaussian,RNA-seq 原始整数计数用 Poisson。选错会让评分分布失真。

ssGSEA 还是 GSVA

两者都给样本级分数,且都会参考整批样本做归一化,样本增删后需整体重算。ssGSEA 常用于免疫细胞特征打分,GSVA 在样本较多时分布更平滑,选定一种并说明理由。

常见错误

  • 只用差异基因做 GSEA:方法依赖全部基因的排序,截取后背景被破坏,置换检验失去意义,结果整体偏向显著。
  • 排序列表中有重复基因名:Ensembl 转基因名常出现多对一,不去重会让同一基因占据多个位置,抬高 NES。
  • 比较方向弄反:NES 的正负取决于哪组是比较组,若对照写在前面,所有结论方向都会反过来,出图前要核对对比设置。
  • 把 FDR<0.25 当作最终结论:该阈值本意供假设生成使用,论文的核心结论应配合更严格的校正 P 值或独立数据验证。
  • 直接比较不同数据集的 GSVA 分数:评分是相对本批样本计算的,跨数据集合并比较会把批次差异误当作生物学差异。
  • 把 C2、C5 等集合混在一起统一检验:同一通路在多个集合中重复出现,既加重多重检验负担,又导致重复报告。

结果怎么看

GSEA 结果表

核心列为 NES、P 值、校正 P 值或 FDR q 值以及 leading edge。NES 绝对值大且 q 值小的基因集最可信;若显著条目几乎都是相似通路,说明是同一信号的重复。

富集曲线图

上方曲线是 running ES,峰值越靠左表示在比较组中越偏高;中间竖线是基因集成员在排序中的位置。若竖线均匀分布、ES 峰值很低,即使 P 值显著也应谨慎解读。

leading edge 核心基因

列出对 ES 贡献最大的成员。多个显著基因集共享同一批核心基因时,可合并为一个生物学主题;核心基因只有两三个时,结论稳健性较差。

GSVA/ssGSEA 评分热图

行为基因集、列为样本,按分组排列。看分组是否沿某些通路明显分开;若样本主要按批次而非分组聚在一起,说明评分前没有处理批次效应。

山脊图(ridgeplot)

每条山脊是一个显著基因集中核心基因的 log2FC 分布。整体右移表示该集合在比较组中偏高;若分布很宽、正负都有,说明集合内部方向不一致,解读时应结合 leading edge 基因。

和相近方法怎么选

GSEA 与 GO/KEGG 富集

GO/KEGG 过表征分析依赖阈值筛出的差异基因,GSEA 使用完整排序,不需要阈值,并给出方向。差异基因多且明确时两者结论通常一致;差异基因少或需要方向时以 GSEA 为主。

ssGSEA 与 GSVA

两者都把表达矩阵转为样本级评分。ssGSEA 常见于免疫和特征基因集打分,GSVA 在样本数较多时分布更平滑。选定一种并说明理由,不要两种都算后挑结果更好看的。

GSVA 评分与免疫浸润反卷积

GSVA 给出的是基因集的相对富集评分,不是细胞比例;CIBERSORT 等反卷积方法估计细胞组成比例。想比较细胞比例时应使用反卷积方法,评分只能作补充。

clusterProfiler 与 fgsea

fgsea 计算快,适合大量基因集;clusterProfiler 的 GSEA 系列函数默认调用 fgsea 计算,并配有 gseaplot2、ridgeplot 等可视化函数,适合直接出图。

常见问题

GSEA 结果怎么看?

先看 NES 正负确定方向,再看 FDR 或校正 P 值判断可信度,然后打开富集曲线确认峰值位于列表一端,最后查看 leading edge 基因是否合理。只看 P 值、不看曲线和核心基因,容易误读。

NES 是什么,为什么不直接看 ES?

ES 是富集曲线偏离零的最大值,受基因集大小影响;NES 是把 ES 除以置换得到的同向 ES 均值后的标准化结果,可在不同大小的基因集之间比较,所以筛选和排序都用 NES。

GSEA 用 log2FC 排序还是用 stat 排序?

两种都常见。stat 或 t 值同时考虑效应和方差,对低表达噪声更稳健,通常更推荐;若坚持用 log2FC,建议先用 DESeq2 的 lfcShrink 做收缩,减少低计数基因的极端值。

ssGSEA 和 GSVA 的评分能做差异分析吗?

可以,常用 limma 对评分矩阵做组间比较,因为评分近似连续分布。基因集数量就是检验次数,必须做多重校正;样本很少时,结果只宜作为探索性证据。

为什么每次运行 GSEA 结果略有不同?

P 值来自随机置换,不同运行会有小幅波动。固定随机种子即可复现;如果某条通路在多次运行间时而显著时而不显著,说明它处于阈值边缘,不宜作为主要结论。

在 Codar 里怎么做

在 Codar 中,上传差异分析结果或表达矩阵并说明比较方向,Codar 会先确认排序指标、基因集来源和物种,再运行 GSEA;需要样本级评分时计算 ssGSEA 或 GSVA 分数。交付 GSEA 结果表、富集曲线图、leading edge 基因列表、基因集评分矩阵与热图、报告和可复现脚本。

可以这样提问
我有人肺癌细胞系敲低 vs 对照各 3 个重复的 DESeq2 结果和表达矩阵,想用 Hallmark 做 GSEA,并算每个样本的 GSVA 评分画热图。
了解网络与系统生物学插件

相关实践案例