置換多元方差分析(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