【R語(yǔ)言】非度量多維標(biāo)度分析法(Non-metric multidimensional scaling,NMDS)

概述

非度量多維尺度分析(NMDS 分析)是一種將多維空間的研究對(duì)象(樣本或變量)簡(jiǎn)化到低維空間進(jìn)行定位、分析和歸類,同時(shí)又保留對(duì)象間原始關(guān)系的數(shù)據(jù)分析方法,能夠反映對(duì)象間的順序關(guān)系。與PCoA類似,NMDS可以基于任何類型距離矩陣對(duì)對(duì)象(樣方)進(jìn)行排序;但也有不同之處,NMDS不在基于距離矩陣數(shù)值,而是根據(jù)排位順序進(jìn)行計(jì)算。對(duì)于存在距離缺失的數(shù)據(jù)而言有優(yōu)勢(shì),只要想辦法確定對(duì)象間的位置關(guān)系,即可進(jìn)行NMDS分析。由于NMDS不是特征根排序技術(shù),也不再讓排序軸載更多的變差目的;因此NMDS排序圖可以任意旋轉(zhuǎn)、中心化和倒置(賴江山, 數(shù)量生態(tài)學(xué))。

NMDS計(jì)算過(guò)程:

預(yù)先設(shè)定排序軸的數(shù)量m;
在m維空間內(nèi)構(gòu)建對(duì)象的初始結(jié)構(gòu),初始結(jié)構(gòu)是調(diào)整對(duì)象之間位置關(guān)系的起點(diǎn);
在m維空間內(nèi),用一個(gè)迭代程序不斷調(diào)整對(duì)象位置,目標(biāo)是不斷最小化應(yīng)力函數(shù)(Stress function,其值被轉(zhuǎn)化為0~1間的數(shù)值,可以檢驗(yàn) NMDS 分析結(jié)果的優(yōu)劣。通常認(rèn)為 stress<0.2 時(shí)可用 NMDS 的二維點(diǎn)圖表示,其圖形有一定的解釋意義;當(dāng) stress<0.1 時(shí),可認(rèn)為是一個(gè)好的排序;當(dāng) stress<0.05 時(shí),則具有很好的代表性)不斷調(diào)整對(duì)象位置,直至應(yīng)力函數(shù)值不再減少,或已達(dá)到預(yù)定的值;
大部分NMDS會(huì)根據(jù)PCA結(jié)果旋轉(zhuǎn)最終的排序圖,使結(jié)果更容易解讀。

基于vegan包的metaMDS()函數(shù)的NMDS分析

setwd("D:/Rdata") #設(shè)置路徑
#install.packages("vegan") #安裝vegan包
#加載vegan包
library(vegan)
spe <- read.csv("nmds-spec.csv")#讀取物種數(shù)據(jù)#
spe
spe.h <- decostand(spe,"hellinger")#數(shù)據(jù)標(biāo)準(zhǔn)化#
head(spe.h)
原始數(shù)據(jù)(基于多度)
標(biāo)準(zhǔn)化后的數(shù)據(jù)
#NMDS分析
spe.h.nmds <- metaMDS(spe.h,distance="bray")#NMDS分析-基于Bray-Curtis距離
spe.h.nmds
spe.h.nmds$stress#查看stress值
stressplot(spe.h.nmds, main = "Shepard 圖")
map<- scores(spe.h.nmds)#提取前兩軸坐標(biāo)/spe.h.nmds$points#查看前兩軸物種坐標(biāo)
map
#導(dǎo)出前兩軸坐標(biāo)
write.csv(map,"points.csv")
迭代過(guò)程
stress值和前兩軸坐標(biāo)
Shepard圖

Shepard 圖:能夠比較NMDS中對(duì)象間距離與原始距離測(cè)度矩陣中的值或者通過(guò)二者間進(jìn)行線性(Linear fit)或非線性(Non-metric fit)擬合的R^2 評(píng)估,擬合R^2 越大越好/兩個(gè)R^2 值越一致越好。

結(jié)果優(yōu)劣評(píng)估

1、Shepard圖的R^2 :擬合R^2 越大越好/兩個(gè)R^2 值越一致越好;
2、Stress值:Stress<0.2(有一定可靠性);Stress<0.05(結(jié)果較好);Stress<0.02(結(jié)果很好);Stress<0.01(結(jié)果極好)。

基于ggplot2包繪制NMDS圖

#ggplot2繪圖
library(ggplot2)
#我們將nmds_dis_site數(shù)據(jù)導(dǎo)出來(lái),然后加上分組信息再讀入
map<-read.csv("points.csv",header = T)
map<-data.frame(map)
#手動(dòng)添加分組信息
#也可以將excel表中的分組信息(需要導(dǎo)入R中)與前兩軸坐標(biāo)進(jìn)行合并(map = merge(group, map,by="row.names",all=F))
map$name <- rownames(map)
map$group <- c(rep('A', 5), rep('B', 4), rep('C',7))
head(map)
添加分組后的作圖(前六行)數(shù)據(jù)
#正式繪圖
ggplot(data = map, aes(NMDS1, NMDS2))+
  geom_point(size = 2,#繪制散點(diǎn)圖
             aes(color = group, shape = group))+
  stat_ellipse(aes(fill = group),#加上置信橢圓
               geom = 'polygon',
               level = 0.95, #置信區(qū)間95%
               alpha = 0.1, #透明度
               segments = 51, #橢圓類型
               show.legend = F)+
  theme_bw()+#主題
  geom_vline(xintercept = 0, color = 'black', size = 1, linetype = 3)+ #添加過(guò)原點(diǎn)線(y)
  geom_hline(yintercept = 0, color = 'black', size = 1, linetype = 3)+ #添加過(guò)原點(diǎn)線(x)
  xlab("NMDS1")+#x軸標(biāo)題
  ylab("NMDS2")+#y軸標(biāo)題
  theme(axis.title.y = element_text(size = 14))+ #y軸標(biāo)題大小
  theme(axis.title.x = element_text(size = 14))+ #x軸標(biāo)題大小
  geom_text(aes(x=-0.8,y=0.55,label="stress = 0.07"),size = 6)+ #設(shè)置文字位置、內(nèi)容和大小
  geom_text(aes(x=-0.8,y=0.50,label="R^2 = 0.995"),size = 6)+ #添加R^2
  theme(axis.text.x=element_text(size=14,angle=0,color="Black"),#設(shè)置x和y軸字體大小和顏色
        axis.text.y=element_text(size=14,angle=0,color="Black"))+
  theme(legend.position=c(0.95,0.9))+#設(shè)置圖例位置
  theme(legend.text=element_text(size=14))+ #設(shè)置圖例字體大小
  theme(legend.title = element_text(face = "bold", size = 14))#設(shè)置圖例標(biāo)題字和大小
NMDS圖

注:stress=0.12,說(shuō)明結(jié)果不好,但有一定的可靠性。

圖的解讀

圖形中的點(diǎn)代表樣本,不同顏色/形狀代表樣本所屬的分組信息。同組樣本點(diǎn)距離遠(yuǎn)近說(shuō)明了樣本的重復(fù)性強(qiáng)弱,不同組樣本的遠(yuǎn)近則反應(yīng)了組間樣本距離在秩次(數(shù)據(jù)排名)上的差異。樣本相似性距離計(jì)算方式對(duì)結(jié)果有影響,選擇輸入不同相似性距離值的矩陣,得到的結(jié)果存在著不同程度差異。

橫縱坐標(biāo)軸含義:NMDS是距離值的秩次(數(shù)據(jù)排名)信息的評(píng)估,圖上樣本信息僅反映樣本間數(shù)據(jù)秩次信息的遠(yuǎn)近,而不反映真實(shí)的數(shù)值差異,橫縱坐標(biāo)軸并無(wú)權(quán)重意義,橫軸不一定比縱軸更加重要。

NMDS的解釋量

NMDS是非參數(shù)的方法,不應(yīng)該有解釋量,不知道他們這些NMDS的解釋率是怎么算出來(lái)的?我估計(jì)是用主坐標(biāo)分析(PCoA)的解釋量來(lái)作為NMDS的解釋量,但這種張冠李戴的做法可能是不合適的(引自賴江山老師:http://blog.sciencenet.cn/blog-267448-1146112.html)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容