You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

fGSEA分析富集结果过少的技术咨询

问题解答

关于GSEA的基因过滤阈值

  • 不建议仅用padj < 0.05的基因做GSEA:GSEA的核心逻辑是利用所有基因的表达变化趋势检测通路的整体偏移,而非仅依赖显著差异基因。你观察到的炎症/白细胞招募基因上调的生物学趋势,正是通路整体变化的体现,但仅筛选显著基因会丢失大量趋势性信息,导致GSEA无法捕捉到通路的富集信号。
  • 推荐做法:直接使用所有基因的log2FoldChange值进行GSEA,无需过滤padj。如果担心非显著基因的干扰,可以给绝对值小于0.1的log2FoldChange设为0,或者直接输入DESeq2输出的stat值(该值结合了倍数变化和统计显著性,更适合GSEA排序)。
  • 结果解读调整:即使FDR未达到0.05,只要通路的NES值方向符合预期、p值接近显著(如p<0.1),结合你的生物学背景,可以在讨论中提及这种趋势——尤其是样本量有限的情况下,这种趋势本身就有生物学意义。

关于样本量小的伪批量处理问题

  • 禁止人为拆分伪重复:给单只小鼠创建2个伪重复属于制造假重复,会导致DESeq2错误估计方差,大幅增加假阳性风险。伪批量的核心是保留真实的生物学重复(每只小鼠对应一个伪批量样本),而非拆分细胞。
  • 替代方案:
    1. 调整DESeq2参数:对于n=2的小样本,使用DESeq(..., betaPrior=TRUE),该参数在样本量较小时能更稳定地估计差异表达。
    2. 换用limma-voom做伪批量分析:limma在小样本场景下的表现通常优于DESeq2,更适合处理低重复数据集。
    3. 合并相似细胞亚群:如果同细胞类型的不同亚群功能相近,可以合并后再做伪批量,增加每个样本的细胞数,提升统计效力。
    4. 补充细胞水平秩检验:用Seurat的FindMarkers做Wilcoxon秩和检验作为补充,但需明确说明这是基于细胞水平的检验,存在伪重复风险,仅作为趋势验证。

代码优化建议

以下是调整后的GSEA代码,直接使用所有基因进行分析:

# 加载数据时不筛选padj
data <- analysis_list[["12"]]
# 去除含NA的基因,转换为命名向量
gsea_data <- data %>%
  select(gene, log2FoldChange) %>%
  filter(!is.na(log2FoldChange))

gsea_data_vec <- gsea_data$log2FoldChange
names(gsea_data_vec) <- gsea_data$gene
# 按log2FoldChange降序排序(提升fgsea运行效率)
gsea_data_vec <- sort(gsea_data_vec, decreasing = TRUE)

# 运行fGSEA
gsea_out <- fgsea(filtered_gs,
                  stats = gsea_data_vec, 
                  scoreType = "std", 
                  minSize = 15, 
                  maxSize = 500,
                  nPermSimple = 10000)

# 按p值排序查看结果
gsea_out %>% arrange(pval) %>% head(20)

其他注意事项

  • 确保基因集的基因名与差异分析结果中的基因名完全匹配(比如统一使用MGI符号,无大小写或格式差异)。
  • 可尝试使用更聚焦的基因集(比如仅保留GO:BP中的免疫相关通路),减少多重检验压力。
  • 小样本差异分析中,优先报告效应量(log2FoldChange)而非仅依赖显著性,结合通路趋势支撑生物学结论。

内容的提问来源于stack exchange,提问作者Smeerlap

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 04:29:49