使用R语言进行perMANVOA分析NMDS结果多个分组之间显著性

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,防止把数值列名转换成添加字母的形式,row.name=1,规定首列为行名,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 丰度表转换为需要的格式,otu正常为首行表示样本名称,首列表示多个样本检测指标名称
#View(otu_transition)
#otu_transition
#样本分组文件
group <- read.csv("C:/Users/baixin/Desktop/groups.csv")#读入分组文件
#View(group)

##PERMANOVA 分析(所有分组间比较,即整体差异)
#(2)若是使用 OTU 丰度表,则需要在计算时指定所依据的距离类型,这里依然使用 Bray-Curtis 距离
adonis_result_otu_transition <- adonis2(otu_transition ~ site, group, permutations = 999, distance = 'bray',by="margin")   
#这条命令的详情和上述命令所表示的信息一致,表中必须全为数值,不能有一行或列全为0,by="margin"表示变量排列顺序对判断无关
#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'] <- '*'
otuput

write.csv(otuput,"C:/Users/baixin/Desktop/otuput.csv")



##PERMANOVA 分析(使用循环处理,进行小分组间比较,如两组间)
#推荐使用 OTU 丰度表作为输入数据,每次筛选分组后重新计算样本距离,避免由于样本数减少可能导致的距离变动而造成误差
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和j
  for (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的数据提取出来赋值给otu_ij
    adonis_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数量
#'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'] <- '*'
}#此段代码只能放在上一行转置代码后
adonis_result_two
write.csv(adonis_result_two ,"C:/Users/baixin/Desktop/output_two.csv")

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用R语言进行不同样区物种的NMDS分析的步骤: 1. 导入数据:将数据导入R语言中,数据格式为物种数量矩阵(species abundance matrix)。可以使用以下命令导入数据: ```r # 导入数据 data <- read.table("data.txt", header = TRUE, row.names = 1) ``` 其中,data.txt为数据文件名,header = TRUE表示第一行为表头,row.names = 1表示第一列为行名(即物种名)。 2. 计算相异度矩阵:使用Bray-Curtis相异度计算样区之间的相异度矩阵,可以使用以下命令: ```r # 计算相异度矩阵 dist_matrix <- vegdist(data, method = "bray") ``` 其中,vegdist()函数是R中的一个函数,用于计算物种数量矩阵的相异度矩阵,method = "bray"表示使用Bray-Curtis相异度计算相异度矩阵。 3. 进行NMDS分析使用metaMDS()函数进行NMDS分析,可以使用以下命令: ```r # 进行NMDS分析 nmds <- metaMDS(data, distance = dist_matrix) ``` 其中,metaMDS()函数是R中的一个函数,用于进行非度量多维标度分析NMDS),distance = dist_matrix表示使用相异度矩阵作为输入数据。 4. 绘制NMDS图:使用plot()函数绘制NMDS分析结果的图形,可以使用以下命令: ```r # 绘制NMDS图 plot(nmds, type = "n") text(nmds, display = "species", cex = 0.8) ``` 其中,plot()函数用于绘制NMDS图,type = "n"表示先画出坐标轴,但不画出点;text()函数用于在坐标轴上标注物种名称,display = "species"表示标注物种名称,cex = 0.8表示标注字体大小为0.8倍。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值