非度量多維尺度分析
導讀
非度量多維尺度分析(nonmetric multidimensional scaling, NMDS)
,是一種簡介的梯度分析方法,也是基於距離或者相異性矩陣。與其它主要用於最大化變異和一致性的方法不一樣,NMDS是一種排序方法。這對於距離缺失的資料有優勢,只要先辦法確定物件之間的位置關係,便可以進行NMDS分析。NMDS的計算過程會以程式碼的形式貼在下方,供大家參考
資料格式
NMDS與PCoA一樣,NMDS可以基於任何型別距離、相異性矩陣物件(樣方)進行排序。當然也可以是原始資料矩陣。這裡我用的是weighted unifrac距離矩陣資料
分析程式碼
NMDS排序分析可以通過生態學分析R包
vegan
中的metaMDS()
函式實現。因為輸入metaNMDS()的資料可以是原始資料矩陣,也可以是距離矩陣,這裡拿上面列舉的資料做示範。
執行NMDS分析
rm(list = ls())
path <- "D:/元基因組/3. 16S 擴增子下游測序分析&其他分析方法集錦/土壤菌群與水稻土溶解有機質/16S"
setwd(path)
library(vegan) ## 載入包
weight_dm <- read.table("weighted_unifrac_otu_table_css.txt",header = T,row.names = 1,
sep = "\t",check.names = F) ## 載入weighted距離矩陣資料
meta_info <- read.csv("meta_info.csv",header = T,row.names = 1,check.names = F) ## 載入樣品分組資訊
#group <- meta_info$group
set.seed(1234) ## 設定隨機種子,以便結果可以重複
weight_nmds <- metaMDS(weight_dm,trace = F) # trace = F 表示的是不要在螢幕上輸出執行的過程和結果
weight_nmds$stress # 壓力值,一般小於0.1比較好,但是也要根據所選擇的的主成分數目來看
圖片來源GUSTA ME[2]
作圖
tiff("NMDS.tiff",width=1000,height=1000)
p<- plot(scores(weight_nmds, choice=c(1, 2)), col=c("purple","green","blue","red")[meta_info$group],
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<-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()
site.scores <- as.data.frame(scores(weight_nmds)) ## 抽提出樣本和NMDS1,NMDS2資訊
site.scores <- cbind(site.scores,group)
head(site.scores)
library("FactoMineR")
library("factoextra")
p <- ggplot(data = site.scores,aes(x=NMDS1,y=NMDS2)) +
geom_point(aes(shape=group,color=group,fill=group),size=3)
p <- p + theme_bw()
p <- p + theme(panel.grid.major = element_blank(), plot.background=element_blank(),
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+geom_vline(xintercept=0,linetype="dashed",color="blue")+geom_hline(yintercept = 0,linetype="dashed",color="blue")
p <- p + geom_text(x=0.12,y=-0.2,label=paste("stress = ",round(weight_nmds$stress,3),sep = ""),color="blue",size=6)
ggsave("NMDS.tiff", height=8, width=8, units="in")
參考
[1] 中文版 《數量生態學-R語言的應用》(賴江山 譯)高等教育出版社出版
[2] https://mb3is.megx.net/gustame/dissimilarity-based-methods/nmds
相關文章
- 取代昂貴量子方法,南科大AI方法實現蛋白質-藥物系統多尺度量子「精煉」AI
- 降維與度量學習
- 近似熵-樣本熵-多尺度熵熵
- MAGNet -MAFM 多尺度感知融合模組
- YOLOv3 中的多尺度融合與訓練YOLO
- 哪個多維分析產品的效能最好
- 時間序列分析 | 相似性度量基本方法
- 單尺度Retinex(matlab)Matlab
- 多維資料分析引擎Saiku的安裝使用AI
- 效能度量
- 計算幾何 —— 二維幾何基礎 —— 距離度量方法
- 一維多維陣列陣列
- 多維資料分析模型設計器Schema Workbench的使用模型
- 多維分析前端頁面卡頓不流暢怎麼辦前端
- 聊聊向上管理中的“尺度”
- 多維陣列轉一維陣列(降維的多種方式)陣列
- 多維分析模型頻繁變動的解決方案有哪些?模型
- 多維陣列陣列
- golang 多維mapGolang
- 每一個資料分析師都必須掌握的方法:多維度分析法
- 在 WEB 端可以對檔案做多維分析的 BI 軟體Web
- BI、OLAP、多維分析、CUBE 這幾個詞是什麼關係?
- BI軟體上的多維度分析有哪些方式?怎麼用?
- 百度流批一體的實時多維分析實踐
- 關於程式碼質量度量和分析的一些總結
- SOTA效能,多尺度學習,中山大學提出蛋白質-藥物相互作用AI框架AI框架
- 第6章:可維護性軟體構建方法 6.1可維護性的度量和構造原則
- 多維標度法
- 多維陣列排序陣列排序
- 距離度量學習
- 如何有效度量前端效能前端
- (1) 地圖尺度和位姿修改地圖
- AbutionGraph中的多標籤/多維度
- 用Python分析《工作細胞》的一萬多條評論後,非漫迷也要入番了Python
- (十一)KPCA非線性降維與核函式PCA函式
- Res2Net:新的深度學習多尺度結構,提升物體檢測立竿見影深度學習
- PHP 多維陣列排序PHP陣列排序
- Kafka多維度調優Kafka