由于 metaMDS,物种评分不可用
Species scores not available as result of metaMDS
我正在 R 中进行排序分析,但在处理 vegan 函数 metaMDS 的结果时遇到了问题。更具体地说,我无法从 metaMDS 结果中获得物种分数。我在这里 发现了一个类似的问题,但它的答案对我不起作用。
我的数据可以在这里找到:https://drive.google.com/file/d/1btKzAWL_fmJ80GjcgMnwX5m_ls8h8vpY/view?usp=sharing
这是我到目前为止编写的代码:
library(vegan)
mydata <- read.table("nmdsdata.txt", h=T, row.names=1)
dist.f <- vegdist(mydata, method = "bray")
dist.f2 <- stepacross(dist.f, path = "extended")
results<-metaMDS(dist.f2, trymax=500)
我被告知要使用 stepacross 函数,因为我的站点的物种组成非常不同,如果不使用它,我无法在 metaMDS 中获得收敛结果。到目前为止一切顺利。
当我尝试绘制结果时我的问题出现了:
plot(results, type="t")
当我 运行 该行时,我在控制台上收到以下消息:“物种分数不可用”。我尝试按照我之前引用的 link 上推荐的方法,通过 运行 代码:
NMDS<-metaMDS(dist.f2,k=2,trymax=500, distance = "bray")
envfit(NMDS, dist.f2)
不过,这里好像不行。它 returns 我是网站得分,而不是物种得分,就像使用我之前评论的 post 中的数据时那样。我的代码中唯一的区别是我使用“bray”而不是“euclidean”距离。此外,我在 运行ning envfit 之后收到一条警告:“警告消息:在 complete.cases(X) & complete.cases(env) 中:较长的对象长度不是较短对象长度的倍数".
我需要站点分数和物种分数来绘制结果。我在这里错过了什么吗?我是 R 的新手,所以请考虑一下,
如有任何帮助,我们将不胜感激。提前致谢。
如果您想获得物种分数,您必须提供有关物种的信息。差异性没有任何关于物种的信息,因此它们不起作用。您有两个明显的(并记录在案的)替代方案:
- 向
metaMDS
提供数据矩阵,它将计算差异,如果需要,还会执行 stepacross
:
## bray dissimilarities is the default, noshare triggers stepacross
NMDS <- metaMDS(mydata, noshare = TRUE, autotransform = FALSE, trymax = 500)
这也会关闭自动数据转换,因为您也没有在差异中使用它。
- 当您没有提供物种信息时,在分析后将物种分数添加到结果中:
NMDS <- metaMDS(dist.f2, trymax = 500)
sppscores(NMDS) <- mydata
如果您转换社区数据,您应该对 sppscores
中的 mydata
使用类似的转换。
我正在 R 中进行排序分析,但在处理 vegan 函数 metaMDS 的结果时遇到了问题。更具体地说,我无法从 metaMDS 结果中获得物种分数。我在这里
我的数据可以在这里找到:https://drive.google.com/file/d/1btKzAWL_fmJ80GjcgMnwX5m_ls8h8vpY/view?usp=sharing
这是我到目前为止编写的代码:
library(vegan)
mydata <- read.table("nmdsdata.txt", h=T, row.names=1)
dist.f <- vegdist(mydata, method = "bray")
dist.f2 <- stepacross(dist.f, path = "extended")
results<-metaMDS(dist.f2, trymax=500)
我被告知要使用 stepacross 函数,因为我的站点的物种组成非常不同,如果不使用它,我无法在 metaMDS 中获得收敛结果。到目前为止一切顺利。
当我尝试绘制结果时我的问题出现了:
plot(results, type="t")
当我 运行 该行时,我在控制台上收到以下消息:“物种分数不可用”。我尝试按照我之前引用的 link 上推荐的方法,通过 运行 代码:
NMDS<-metaMDS(dist.f2,k=2,trymax=500, distance = "bray")
envfit(NMDS, dist.f2)
不过,这里好像不行。它 returns 我是网站得分,而不是物种得分,就像使用我之前评论的 post 中的数据时那样。我的代码中唯一的区别是我使用“bray”而不是“euclidean”距离。此外,我在 运行ning envfit 之后收到一条警告:“警告消息:在 complete.cases(X) & complete.cases(env) 中:较长的对象长度不是较短对象长度的倍数".
我需要站点分数和物种分数来绘制结果。我在这里错过了什么吗?我是 R 的新手,所以请考虑一下,
如有任何帮助,我们将不胜感激。提前致谢。
如果您想获得物种分数,您必须提供有关物种的信息。差异性没有任何关于物种的信息,因此它们不起作用。您有两个明显的(并记录在案的)替代方案:
- 向
metaMDS
提供数据矩阵,它将计算差异,如果需要,还会执行stepacross
:
## bray dissimilarities is the default, noshare triggers stepacross
NMDS <- metaMDS(mydata, noshare = TRUE, autotransform = FALSE, trymax = 500)
这也会关闭自动数据转换,因为您也没有在差异中使用它。
- 当您没有提供物种信息时,在分析后将物种分数添加到结果中:
NMDS <- metaMDS(dist.f2, trymax = 500)
sppscores(NMDS) <- mydata
如果您转换社区数据,您应该对 sppscores
中的 mydata
使用类似的转换。