一句话概述:ANCOM-BC(Analysis of Compositions of Microbiomes with Bias Correction)是专门为组成数据设计的微生物组差异丰度分析方法,通过估计和校正测序深度引起的采样偏差,在控制假阳性的同时保持统计功效。
核心知识点速查表
| 概念 | 说明 |
|---|
| ANCOM-BC | 带偏差校正的微生物组成分分析 |
| 组成偏差 | 测序深度不同导致的丰度偏差 |
| 采样分数 | 每个样本中微生物被采样到的比例 |
| ANCOM-BC2 | 升级版,支持多组比较和纵向数据 |
| 结构零 | 物种在某组中真正不存在(ANCOM-BC能识别) |
一、R语言实操
# === 安装 ===
# BiocManager::install("ANCOMBC")
library(ANCOMBC)
library(phyloseq)
# === ANCOM-BC(经典版) ===
result <- ancombc(
phyloseq = ps, # phyloseq对象
formula = "Group", # 模型公式
p_adj_method = "holm", # 多重检验校正方法
alpha = 0.05, # 显著性阈值
group = "Group", # 分组变量
struc_zero = TRUE, # 检测结构零
neg_lb = TRUE, # 使用负下界估计偏差
conserve = TRUE # 保守估计(推荐)
)
# 查看结果
res <- result$res # 提取结果
# res$beta: 效应量(log fold change)
# res$se: 标准误
# res$W: Wald统计量
# res$p_val: p值
# res$q_val: 校正后q值
# res$diff_abn: 是否差异显著(TRUE/FALSE)
# 查看显著差异物种
sig_taxa <- rownames(res$q_val)[res$diff_abn[,1] == TRUE]
cat("显著差异物种数:", length(sig_taxa), "\n")
# === ANCOM-BC2(升级版,推荐使用) ===
result2 <- ancombc2(
data = ps, # phyloseq对象
fix_formula = "Group + Age + BMI", # 固定效应(可控制协变量)
p_adj_method = "holm", # 多重检验校正
alpha = 0.05, # 显著性阈值
group = "Group", # 分组变量
struc_zero = TRUE, # 检测结构零
neg_lb = TRUE, # 负下界
pseudo_sens = TRUE, # 伪计数敏感性分析
n_cl = 4 # 并行线程数
)
# 查看结果
res2 <- result2$res # 提取结果
# 全局检验
result2$res_global # 多组全局检验
# 成对比较
result2$res_pair # 两两比较结果
二、结果可视化
# === 火山图 ===
library(ggplot2)
plot_df <- data.frame(
Taxon = rownames(res$beta),
logFC = res$beta[, 1], # log fold change
qval = res$q_val[, 1], # 校正后p值
significant = res$diff_abn[, 1] # 是否显著
)
ggplot(plot_df, aes(x=logFC, y=-log10(qval), color=significant)) +
geom_point(size=2) +
scale_color_manual(values=c("grey", "red")) +
geom_hline(yintercept=-log10(0.05), linetype="dashed") +
labs(x="Log Fold Change", y="-log10(q-value)",
title="ANCOM-BC Differential Abundance") +
theme_minimal()
三、面试高频考点
- 微生物组数据是组成数据,各物种丰度的总和受测序深度限制
- 直接比较相对丰度会产生虚假差异
- ANCOM-BC通过估计每个样本的采样分数来校正这个偏差
- 白话:就像比较两个人的工资比例,需要先知道他们的总工资才公平
| 方法 | 优点 | 注意事项 |
|---|
| ALDEx2 | 最保守,假阳性最低(79%可重复) | 可能漏掉弱信号 |
| MaAsLin2 | 多变量灵活,可重复性77% | 需选择合适的标准化 |
| ANCOM-BC | 理论基础强,识别结构零 | BC2版本存在一些问题(2025基准) |
Q3: 2025年推荐用哪种差异分析?
- 首选:ALDEx2(最可靠)或MaAsLin2(最灵活)
- 配合:多方法取交集更可靠
- 注意:ANCOM-BC2在最新基准中冲突率(3%)高于理想值
- 趋势:简单方法(Wilcoxon+TSS)反而更可重复
速查表
# === ANCOM-BC速查 ===
library(ANCOMBC)
# ANCOM-BC2(推荐)
ancombc2(ps, fix_formula="Group+Age", group="Group",
struc_zero=TRUE, alpha=0.05)
# 经典版
ancombc(ps, formula="Group", group="Group",
struc_zero=TRUE, alpha=0.05)
# 结果: res$diff_abn (TRUE/FALSE差异标记)
# res$beta (效应量)
# res$q_val (校正后p值)