使用R语言进行perMANVOA分析NMDS结果多个分组之间显著性
生活随笔
收集整理的這篇文章主要介紹了
使用R语言进行perMANVOA分析NMDS结果多个分组之间显著性
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
library(vegan)
otu_table.csv <- read.csv("C:/Users/baixin/Desktop/data_nmds.csv",header = T,row.names = 1,check.names=FALSE)
#check.names=FALSE,防止把數(shù)值列名轉(zhuǎn)換成添加字母的形式,row.name=1,規(guī)定首列為行名,header = T首行為列名
#View(otu_table.csv)#Seeing the data by the type of table.以表格形式查看
#otu_table.csv#輸出臺查看
otu_transition <- data.frame(t(otu_table.csv))#將OTU 豐度表轉(zhuǎn)換為需要的格式,otu正常為首行表示樣本名稱,首列表示多個樣本檢測指標名稱
#View(otu_transition)
#otu_transition
#樣本分組文件
group <- read.csv("C:/Users/baixin/Desktop/groups.csv")#讀入分組文件
#View(group)##PERMANOVA 分析(所有分組間比較,即整體差異)
#(2)若是使用 OTU 豐度表,則需要在計算時指定所依據(jù)的距離類型,這里依然使用 Bray-Curtis 距離
adonis_result_otu_transition <- adonis2(otu_transition ~ site, group, permutations = 999, distance = 'bray',by="margin")
#這條命令的詳情和上述命令所表示的信息一致,表中必須全為數(shù)值,不能有一行或列全為0,by="margin"表示變量排列順序?qū)ε袛酂o關(guān)
#adonis_result_otu_transition#可選輸出
otuput <- data.frame(adonis_result_otu_transition, check.names = FALSE, stringsAsFactors = F)
if (otuput[1,'Pr(>F)'] <= 0.001) otuput[1, 'SIG'] <- '***' else if (otuput[1,'Pr(>F)'] <= 0.01) otuput[1, 'SIG'] <- '**' else if (otuput[1,'Pr(>F)'] <= 0.05) otuput[1, 'SIG'] <- '*'
otuputwrite.csv(otuput,"C:/Users/baixin/Desktop/otuput.csv")##PERMANOVA 分析(使用循環(huán)處理,進行小分組間比較,如兩組間)
#推薦使用 OTU 豐度表作為輸入數(shù)據(jù),每次篩選分組后重新計算樣本距離,避免由于樣本數(shù)減少可能導致的距離變動而造成誤差
group_name <- unique(group$site)#判定一共分為幾組,得到組名附值給group_name
#group_name#輸出“b”,“a”,“c”
adonis_result_two <- NULL
for (i in 1:(length(group_name) - 1)) {#從范圍中選擇i和jfor (j in (i + 1):length(group_name)) {group_ij <- subset(group, site %in% c(group_name[i], group_name[j]))#選擇兩個分組otu_ij <- otu_transition[group_ij$yangdian, ]#group_ij$yangdian將行名符合group_ij的數(shù)據(jù)提取出來賦值給otu_ijadonis_result_otu_ij <- adonis2(otu_ij~site, group_ij, permutations = 999, distance = 'bray',by="margin")#隨機置換檢驗 999 次adonis_result_two <- rbind(adonis_result_two,c(paste(group_name[i], group_name[j], sep = '/'), '以Bray-Curtis比較', unlist(data.frame(adonis_result_otu_ij, check.names = FALSE)[1, ])))}
}
#View(otu_ij)
#可選標記 “*” 顯著性,nrow(adonis_result_two)表示adonis_result_two數(shù)量
#'Pr(>F)'需要在輸出控制臺復制,不同版本可能表達不同,
adonis_result_two <- data.frame(adonis_result_two,check.names = FALSE, stringsAsFactors = F)
for (i in 1:nrow(adonis_result_two)) {if (adonis_result_two[i, 'Pr(>F)'] <= 0.001) adonis_result_two[i, 'SIG'] <- '***'else if (adonis_result_two[i, 'Pr(>F)'] <= 0.01) adonis_result_two[i, 'SIG'] <- '**'else if (adonis_result_two[i, 'Pr(>F)'] <= 0.05) adonis_result_two[i, 'SIG'] <- '*'
}#此段代碼只能放在上一行轉(zhuǎn)置代碼后
adonis_result_two
write.csv(adonis_result_two ,"C:/Users/baixin/Desktop/output_two.csv")
總結(jié)
以上是生活随笔為你收集整理的使用R语言进行perMANVOA分析NMDS结果多个分组之间显著性的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 开发人工智能小程序
- 下一篇: Pycharm 编辑器文本中间出现有一条