置换多元方差分析(PERMANOVA)


http://blog.sciencenet.cn/blog-3406804-1169075.html

http://blog.sciencenet.cn/home.php?mod=space&uid=651374&do=blog&quickforward=1&id=1007083

http://blog.sciencenet.cn/blog-651374-1009079.html

https://www.cnblogs.com/xudongliang/p/8056509.html

置换多元(因素)方差分析(Permutational multivariate analysis of variance,PERMANOVA),又称非参数多因素方差分析(nonparametric multivariate analysis of variance)、或者ADONIS分析,其本质是基于F统计的方差分析,依据距离矩阵对总方差进行分解的非参数多元方差分析方法。使用PERMANOVA可分析不同分组因素对样品差异的解释度,并使用置换检验进行显著性统计。在生态统计中,可以使用PERMANOVA(往往同时配合排序分析来使用,对于PERMANOVA,更常与PCoA排序分析放一起说明问题),查看不同环境的群落组成结构差异是否显著。

根据距离矩阵

文件“bray.txt”为提前计算得到的样本距离矩阵文件(此处展示的是样本间Bray-curtis距离),其内容展示如下。

每一列为一个样本,每一行为一个样本,交叉区域为样本间的Bray-curtis距离(取值范围0-1,越接近于1表明样本间细菌群落组成差异越大)。

3.png          

 

 

 

R代码

##读入文件
#现有的距离矩阵
dis <- read.delim('bray.txt', row.names = 1, sep = '\t', stringsAsFactors = FALSE, check.names = FALSE)
dis <- as.dist(dis)    #将导入的样本间距离转化为 dist 类型
#样本分组文件
group <- read.delim('group.txt', sep = '\t', stringsAsFactors = FALSE)
library(vegan)
 
##PERMANOVA 分析(所有分组间比较,即整体差异)
#若是已经提供好了距离矩阵,则直接使用现有的距离矩阵进行分析即可
adonis_result_dis <- adonis(dis~site, group, permutations = 999) #根据 group$site 这一列样本分组信息进行 PERMANOVA 分析,随机置换检验 999 次
#查看结果
adonis_result_dis
#或者
summary(adonis_result_dis)

#可选输出
otuput <- data.frame(adonis_result_dis$aov.tab, check.names = FALSE, stringsAsFactors = FALSE)
otuput <- cbind(rownames(otuput), otuput)
names(otuput) <- c('', 'Df', 'Sums of squares', 'Mean squares', 'F.Model', 'Variation (R2)', 'Pr (>F)')
write.table(otuput, file = 'PERMANOVA.result_all.txt', row.names = FALSE, sep = '\t', quote = FALSE, na = '')


根据OTU表

   

 

 

 备注:当读入数据为距离矩阵时,需要将读取的数据框转化为dist类型,便于后续的函数识别;当读入本示例的OTU表格时,则首先要进行转置操作,即要求所得数据框格式:每一行为一个样本,每一列为物种信息。

 

R代码

otu <- read.delim('otu_table.txt', row.names = 1, sep = '\t', stringsAsFactors = FALSE, check.names = FALSE)
otu <- data.frame(t(otu))
 
#样本分组文件
group <- read.delim('group.txt', sep = '\t', stringsAsFactors = FALSE)
#使用 OTU 丰度表,则需要在计算时指定所依据的距离类型,这里依然使用 Bray-Curtis 距离
adonis_result_otu <- adonis(otu~site, group, permutations = 999, distance = 'bray')   #这条命令的详情和上述命令所表示的信息一致
 
#或者首先根据丰度表计算样本距离,在将所的距离数据作为输入
dis1 <- vegdist(otu, method = 'bray')
adonis_result_dis1 <- adonis(dis1~site, group, permutations = 999) 
#查看结果
adonis_result_dis
#或者
summary(adonis_result_dis)
#可选输出
otuput <- data.frame(adonis_result_dis$aov.tab, check.names = FALSE, stringsAsFactors = FALSE)
otuput <- cbind(rownames(otuput), otuput)
names(otuput) <- c('', 'Df', 'Sums of squares', 'Mean squares', 'F.Model', 'Variation (R2)', 'Pr (>F)')
write.table(otuput, file = 'PERMANOVA.result_all.txt', row.names = FALSE, sep = '\t', quote = FALSE, na = '')



免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM