非度量多维标度_非度量多维尺度分析

导读

非度量多维尺度分析(nonmetric multidimensional scaling, NMDS),是一种简介的梯度分析方法,也是基于距离或者相异性矩阵。与其它主要用于最大化变异和一致性的方法不一样,NMDS是一种排序方法。这对于距离缺失的数据有优势,只要先办法确定对象之间的位置关系,便可以进行NMDS分析。NMDS的计算过程会以代码的形式贴在下方,供大家参考

数据格式

NMDS与PCoA一样,NMDS可以基于任何类型距离、相异性矩阵对象(样方)进行排序。当然也可以是原始数据矩阵。这里我用的是weighted unifrac距离矩阵数据

图1 weighted 距离矩阵

分析代码

NMDS排序分析可以通过生态学分析R包vegan中的metaMDS()函数实现。因为输入metaNMDS()的数据可以是原始数据矩阵,也可以是距离矩阵,这里拿上面列举的数据做示范。

运行NMDS分析

rm(list = ls())

path

setwd(path)

library(vegan) ## 加载包

weight_dm

sep = "\t",check.names = F) ## 加载weighted距离矩阵数据

meta_info

#group

set.seed(1234) ## 设置随机种子,以便结果可以重复

weight_nmds

weight_nmds$stress # 压力值,一般小于0.1比较好,但是也要根据所选择的的主成分数目来看

图2 strees的scree图,stress随着主成分数的增加而减少

图片来源GUSTA ME[2]

作图

tiff("NMDS.tiff",width=1000,height=1000)

p

cex=1.5, font=1, pch=5) ##NMDS作图###

legend('topleft', legend=levels(meta_info$group), col=c("purple","green","blue","red"),pch=5,cex=1.5,box.lty =1)###NMDS添加Legend###

with(weight_nmds,ordiellipse(weight_nmds, meta_info$group,display = "sites", kind = "se", conf = 0.95, lwd=2,cex=0.8,lty=1,col=c("purple","green","blue","red"),font=2,label = FALSE))

#dev.off()

#env

#head(env)

#ef1

#p

#ef1

dev.off()

图3 常规方法作图

site.scores

site.scores

head(site.scores)

library("FactoMineR")

library("factoextra")

p

geom_point(aes(shape=group,color=group,fill=group),size=3)

p

p

panel.grid.minor = element_blank(),

legend.position="top",

axis.title.x = element_text(size = 16),

axis.text.x = element_text(angle=0,color="black",vjust = 0.95,hjust = 0.95,size=12),

axis.title.y = element_text(size=16),

axis.text.y = element_text(size=14,color="black"),

strip.text.x = element_text(size=18),

legend.text = element_text(size=14),

legend.title = element_text(size=16))

p

p

ggsave("NMDS.tiff", height=8, width=8, units="in")

图4 ggplot2作图

参考

你可能感兴趣的:(非度量多维标度)