NMDS非度量多维尺度分析

NMDS非度量多维尺度分析简介

  非度量多维尺度法是一种将多维空间的研究对象(样本或变量)简化到低维空间进行定位、分析和归类,同时又保留对象间原始关系的数据分析方法。

适用于无法获得研究对象间精确的相似性或相异性数据,仅能得到他们之间等级关系数据的情形。其基本特征是将对象间的相似性或相异性数据看成点间距离的单调函数,在保持原始数据次序关系的基础上,用新的相同次序的数据列替换原始数据进行度量型多维尺度分析。

换句话说,当资料不适合直接进行变量型多维尺度分析时,对其进行变量变换,再采用变量型多维尺度分析,对原始资料而言,就称之为非度量型多维尺度分析。其特点是根据样品中包含的物种信息,以点的形式反映在多维空间上,而对不同样品间的差异程度,则是通过点与点间的距离体现的,最终获得样品的空间定位点图。  


####画NMDS图##
library(vegan)
library(ecodist)
#abund_table <- read.table(file = "OTU_matrix_ITS1.otumap.5seqs.fungi_noS4.txt", sep = "\t", row.names=1,  head = T, check.names  =  FALSE)

require(ecodist)
# 把OTU 变成hellinger-transform to relative abund 进行统计分析
abund_table <- read.table(file = "otutab_norm.txt", sep = "\t", row.names=1,  head = T, check.names  =  FALSE)
abund_table <- t(abund_table) ##先进行OTU纵横轴变换。
abund_table.hell <- decostand(abund_table, "hell") #hellinger: square root of method = "total"
meta_table<-read.table("design.txt",sep = "\t", head = T,row.names=1,check.names=FALSE, fill = T)
set.seed(1234) #每次分析开始的位置,保证分析结果的一致性
emf.bray<-distance(abund_table.hell,"bray-curtis")
otu.nmds<-metaMDS(emf.bray, trace = FALSE)
#otu.nmds
pdf("NMDS.pdf",width=14,height=14)
p<- plot(scores(otu.nmds, choice=c(1, 2)), col=c("purple","green","blue")[meta_table$genotype], 
         cex=1.5, font=1,  pch=1,xlim=c(-0.3,0.3),ylim=c(-0.2,0.2)) ##NMDS作图###
legend('topright', legend=levels(meta_table$genotype), col=c("purple","green","blue"),pch=1,cex=0.8,box.lty =1)###NMDS添加Legend###
with(otu.nmds,ordiellipse(otu.nmds, meta_table$genotype,display = "sites", kind = "se", conf = 0.95, lwd=2,cex=0.8,lty=1,col=c("purple","green","blue"),font=2,label = FALSE))
#dev.off()
env<-meta_table[,c(5:10)]
head(env)
ef1<-envfit(otu.nmds,env,na.rm=TRUE)###环境变量envfit###
p<- p+ plot(ef1,p.max=0.05,col="black") #####plot(ef1)##所有环境因子图添加箭头###
ef1
dev.off()

猜你喜欢

转载自blog.csdn.net/zhouxin518/article/details/80214188
今日推荐