PERMANOVA多元方差分析
一句话概述:PERMANOVA(Permutational Multivariate Analysis of Variance)是基于距离矩阵的非参数多元方差分析,通过置换检验判断不同分组的微生物群落组成是否显著不同,是微生物组研究中最重要的统计检验方法。
核心知识点速查表
| 概念 | 说明 |
|---|
| PERMANOVA | 置换多元方差分析(白话:用打乱标签的方式检验组间差异) |
| adonis2 | R语言vegan包中PERMANOVA的函数名 |
| R² | 分组变量解释的变异比例(效应量) |
| 置换检验 | 随机打乱分组标签999次,看真实结果是否显著 |
| 前提假设 | 组间方差齐性(betadisper检验) |
| 多因素 | 可同时分析多个分组变量的效应 |
一、R语言实操
# === 基本PERMANOVA ===
library(vegan)
# 计算距离矩阵
bc_dist <- vegdist(otu_table, method="bray") # Bray-Curtis距离
# 单因素PERMANOVA
result <- adonis2(
bc_dist ~ Group, # 距离 ~ 分组变量
data = metadata, # 元数据
permutations = 999 # 置换次数(最少999)
)
print(result)
# 关注: R2(解释比例), F值, Pr(>F)(p值)
# 多因素PERMANOVA
result_multi <- adonis2(
bc_dist ~ Group + Age + BMI + Antibiotics, # 多个变量
data = metadata,
permutations = 999,
by = "margin" # margin=各变量独立效应
)
print(result_multi)
# === 方差齐性检验(PERMANOVA的前提) ===
# PERMANOVA假设组间方差齐性,如果不齐性,显著结果可能是方差差异而非中心差异
bd <- betadisper(bc_dist, metadata$Group) # 方差齐性检验
anova(bd) # p>0.05=方差齐性(好)
permutest(bd) # 置换检验
# 如果方差不齐性:
# 1. 报告betadisper结果
# 2. 考虑用ANOSIM替代
# 3. 在论文中讨论这个limitation
# === 成对比较(pairwise PERMANOVA) ===
# 多组比较时,需要两两检验
library(pairwiseAdonis)
pairwise_result <- pairwise.adonis(
bc_dist, # 距离矩阵
metadata$Group, # 分组变量
p.adjust.m = "BH" # 多重检验校正
)
print(pairwise_result)
二、面试高频考点
Q1: PERMANOVA的原理是什么?
- 计算样本间距离矩阵
- 计算真实分组下的F统计量(组间变异/组内变异)
- 随机打乱分组标签999次,每次重新计算F值
- 看真实F值在置换分布中的位置 → p值
- 白话:就像打牌,看你的牌是不是特别好(比随机洗牌的结果好多少)
Q2: PERMANOVA和ANOSIM的区别?
| PERMANOVA(adonis2) | ANOSIM |
|---|
| 输入 | 距离矩阵 | 距离矩阵 |
| 统计量 | F值(R²) | R值(-1到1) |
| 多因素 | 支持 | 不支持 |
| 敏感度 | 对中心和方差都敏感 | 主要对中心敏感 |
| 推荐 | ★首选 | 方差不齐时考虑 |
Q3: R²值怎么解读?
- R²=0.05: 分组解释5%的变异(微生物组中常见,生物学意义不大)
- R²=0.10: 解释10%(有一定生物学意义)
- R²>0.20: 解释20%以上(效应较强)
- 微生物组受很多因素影响,单一因素R²通常<10%是正常的
速查表
# === PERMANOVA速查 ===
library(vegan)
# 单因素
adonis2(dist ~ Group, data=meta, permutations=999)
# 多因素
adonis2(dist ~ Group+Age+BMI, data=meta, by="margin")
# 方差齐性检验
betadisper(dist, meta$Group) |> permutest()
# 成对比较
library(pairwiseAdonis)
pairwise.adonis(dist, meta$Group, p.adjust.m="BH")
# 报告格式: PERMANOVA R²=0.15, F=5.2, p=0.001