You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R与PRIMER v6的nMDS结果差异及应力值不同的原因问询

PRIMER v6与R metaMDS的nMDS结果差异原因排查

我使用PRIMER v6对物种数据绘制了nMDS图,之后参考R教程用以下代码执行相同分析:

dat <- Sp_Data[1:15,2:8]
dat <- dat %>% filter_all(any_vars(. != 0))
m_dat <- as.matrix(dat, labels = T)
mds <- metaMDS(m_dat, distance = "bray")

# ggplot
#extract NMDS scores (x and y coordinates)
data.scores = as.data.frame(scores(mds))
#add columns to data frame 
pt <- Sp_Data[which(rowSums(Sp_Data[1:15,2:8])>0),]
data.scores$Condition = pt$Condition
head(data.scores)

library(ggplot2)

xx = ggplot(data.scores, aes(x = NMDS1, y = NMDS2)) + 
  geom_point(size = 4, aes( shape = Condition))+ 
  theme(axis.text.y = element_text(colour = "black", size = 12, face = "bold"), 
        axis.text.x = element_text(colour = "black", face = "bold", size = 12), 
        legend.text = element_text(size = 12, face ="bold", colour ="black"), 
        legend.position = "right", axis.title.y = element_text(face = "bold", size = 14), 
        axis.title.x = element_text(face = "bold", size = 14, colour = "black"), 
        legend.title = element_text(size = 14, colour = "black", face = "bold"), 
        panel.background = element_blank(), panel.border = element_rect(colour = "black", fill = NA, size = 1.2),
        legend.key=element_blank()) + 
  labs(x = "NMDS1", y = "NMDS2", shape = "Condition")  + 
  scale_colour_manual(values = c("#009E73", "#E69F00")) 

xx

得到的nMDS图与PRIMER的结果差异极大,且应力值差距明显:R中计算的应力值为0.03435446,远低于PRIMER的结果。

附压缩后的Sp_Data数据:

structure(list(SiteConditionReplicate = c("JU1One", "JU1Two", 
"JU1Three", "JU1Four", "JU1Five", "JSOne", "JSTwo", "JSThree", 
"JSFour", "JSFive", "JU2One", "JU2Two", "JU2Three", "JU2Four", 
"JU2Five", "PU1One", "PU1Two", "PU1Three", "PU1Four", "PU1Five", 
"PSOne", "PSTwo", "PSThree", "PSFour", "PSFive", "PU2One", "PU2Two", 
"PU2Three", "PU2Four", "PU2Five"), `Camptandrium sexdentatum` = c(0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0), Diogenidae = c(0, 4, 0, 0, 1, 53, 0, 
2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 
0, 0), `Nassarius globasus` = c(0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 
0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), 
    `Tellina sp` = c(0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), `Marcia opima` = c(0, 
    0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0), Nereidae = c(0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 17, 18, 17, 12, 4, 3, 12, 
    1, 6, 0, 0, 0, 0, 0), Maldanidae = c(4, 5, 3, 2, 2, 1, 0, 
    0, 0, 0, 1, 0, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), ...9 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, 
    NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
    NA, NA, NA, NA, NA, NA), Site = c("J", "J", "J", "J", "J", 
    "J", "J", "J", "J", "J", "J", "J", "J", "J", "J", "P", "P", 
    "P", "P", "P", "P", "P", "P", "P", "P", "P", "P", "P", "P", "P"), Condition = c("U1", "U1", "U1", "U1", "U1", "S", "S", 
    "S", "S", "S", "U2", "U2", "U2", "U2", "U2", "U1", "U1", 
    "U1", "U1", "U1", "S", "S", "S", "S", "S", "U2", "U2", "U2", 
    "U2", "U2"), Replicate = c("One", "Two", "Three", "Four", 
    "Five", "One", "Two", "Three", "Four", "Five", "One", "Two", 
    "Three", "Four", "Five", "One", "Two", "Three", "Four", "Five", 
    "One", "Two", "Three", "Four", "Five", "One", "Two", "Three", 
    "Four", "Five")), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -30L))

请问造成两种工具的nMDS结果及应力值差异的原因是什么?


内容的提问来源于stack exchange,提问作者LauraEverdeen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 00:32:52