代谢组学分析 PCA PLS-DA OPLS-DA 在R语言中的实现
做单细胞代谢组学的有福了:scMetabolism代谢通路分析
一文厘清富集分析:GroupGO、enrichGO、gseGO、enrichKEGG、gseKEGG、enrichMKEGG
1️⃣ GSA:最早的“抽球”统计学
GSA(Gene Set Analysis)属于ORA(Over-representation Analysis)家族。原理其实和高中学的概率题一样——
假设袋子里有100个球,其中红球20个、白球80个;现在随机不放回地取出10个球,其中有n个红球的概率是多少?
在富集分析中:
100个球 → 全基因;
红球 → 基因集中的基因;
取出的10个球 → 差异表达基因(DEG);
计算红球被取中的概率 → 检验该基因集是否“过度代表”(over-represented)。
🟢 优点
理论基础扎实,结果稳健、可重复。
🔴 缺点
只统计“有无”,不考虑基因表达量;
需要人为设阈值筛DEG,容易漏掉中度变化但重要的基因;
假设所有基因独立、通路间互不相关(这在生物学上不成立);
不能区分上调/下调方向。
如果通路中同时存在上调与下调基因,ORA 结果会“混成一锅粥”,难以结合表型解释。
费歇尔精确检验是基于超几何分布计算得来的,额外累加了极端情况下的概率值,这些极端情况下的概率值也都是基于超几何分布计算得来。
2️⃣ GSEA:让通路有了“方向感”
GSEA(Gene Set Enrichment Analysis) 是 Subramanian 等人在 PNAS, 2005 发表的经典算法。它的核心思想:
不再“筛选”基因,而是“排序”所有基因。
具体步骤:
计算每个基因的 log₂FC(或与表型的相关系数);
按照 log₂FC 从高到低排列所有基因;
观察感兴趣基因集的成员是否集中在列表顶部(上调)或底部(下调)。
优点:
不需要设定阈值;
可区分通路的上调与下调趋势;
能发现整体微弱但一致的信号。
需要注意的是,在GSEA中,不仅仅可以用log2FC对基因进行排序,根据自己的研究内容,还可以使用自己构造的参数作为排序依据。GSEA原文是这么说的:“Genes are ranked based on the correlation between their expression and the class distinction by using any suitable metric”。
3️⃣ ssGSEA:GSEA 的单样本版本
ssGSEA(single-sample GSEA) 出自 Nature, 2009(Barbie et al.)。GSEA 比较的是“组 vs 组”,而 ssGSEA 把它变成了“样本 vs 基因集”:
对每一个样本单独进行富集分析。
📊 输出结果:
行:基因集;
列:样本;
值:每个样本在该通路上的富集得分(NES)。
与 GSEA 的区别:
GSEA 基因排序依据 log₂FC;
ssGSEA 基因排序依据单样本的绝对表达量;
结果是一个“样本 × 通路”的矩阵,可进一步用于聚类、热图、分型分析。
4️⃣ GSVA:富集分析的自由形态
GSVA(Gene Set Variation Analysis) 出自 BMC Bioinformatics, 2013。它进一步扩展了 ssGSEA 的思路——
不再依赖“分组”或“表型”,而直接在表达矩阵上计算每个样本中各通路的变异得分。
换句话说:输入:基因为行、样本为列的表达矩阵 + 基因集数据库;输出:基因集为行、样本为列的得分矩阵。
然后你可以进一步:
用 limma 做差异分析,寻找显著变化的通路;
做聚类或亚型识别,让“通路表达谱”取代“基因表达谱”。
🧩 优势
不依赖分组信息;
适合复杂样本(如 scRNA-seq 或 TCGA 大队列);
得到的结果更稳定、更具生物学可解释性。
一图总结
方法输入是否需要分组核心思想输出
GSA (ORA)DEG列表✅抽球概率检验通路显著性
GSEA全基因排序✅富集在上下端?NES分数
ssGSEA表达矩阵❌单样本富集样本×通路矩阵
GSVA表达矩阵❌通路变异得分样本×通路矩阵
https://www.bioconductor.org/packages/devel/bioc/vignettes/GSVA/inst/doc/GSVA.htmlhttps://zhuanlan.zhihu.com/p/506912398https://www.jianshu.com/p/47f9f0107ffehttps://cloud.tencent.com/developer/article/2449439https://doi.org/10.1360/N052016-00139