我正在运行NMDS,并对纯素包中的纯素函数有几个问题。我已经阅读了这个函数的文档,以及关于素食者、envfit()
和一般物种分数的许多帖子。
envfit()
和wascore()
都用来计算排序技术的物种分数。默认情况下,metaMDS()使用wascore()
。这使用加权平均,我理解。我很难理解envfit()
。envfit()
和wascore(
的结果一样吗?如果wascore()
是默认的,那么它更好吗?我意识到,在某些情况下,wascore()
可能不是一种选择(即。负值),如本文所述。如何获得与metaMDS()排序的“物种评分”?envfit()
和wascore()
似乎都被用于物种评分,它们应该产生相似的结果,对吗?我希望我们能证明这一点.下面显示了使用默认metaMDS()
确定的物种分数( wascore()
)data(varespec)
ord <- metaMDS(varespec)
species.scores <- as.data.frame(scores(ord, "species"))
species.scores
wascore()
对我来说是有意义的,它使用加权平均。McCune和Grace (2002年)第150页的“生态数据分析”对物种得分加权平均有很好的解释。
谁能帮我击垮envfit
吗?
species.envfit <- envfit(ord, varespec, choices = c(1,2), permutations = 999)
species.scores.envfit <- as.data.frame(scores(species.envfit, display = "vectors"))
species.scores.envfit
“您在表中看到的值是用于将向量投影到排序中的线性回归的标准化系数。这些是单位长度箭头的方向。”-- 绘制的不匹配NMDS分数的嵌入向量的注释。
请有人告诉我,这里运行的是什么线性模型,以及正在提取什么标准值?
species.scores
species.scores.envfit
这些价值观彼此之间有很大的不同。我在这里错过了什么?
这是我第一次发这样的帖子,请宽恕我。我会问一些其他相关线程的问题,但我是这样的渣滓,甚至没有声誉的评论。
谢谢!
发布于 2020-04-09 23:15:36
问:wascores()
和envfit()
给出了相同的结果吗?
不,他们并没有给出相同的结果,因为他们正在做两件完全不同的事情。在这个回答中,我解释了envfit()
是如何工作的。wascores()
获取nmds空间中各点的坐标,并计算每个维度上的平均值,通过每个点的物种丰度来加权观测值。因此,wascores()
返回的物种评分是每个物种在NMDS空间中的加权质心,其中权重是物种的丰度。envfit()
适用于指向增加丰度的方向的向量。这意味着NMDS排序上的一个平面,当你与箭头平行移动时,丰度从平面上的任意点线性增加,而wascores()
最好被认为是擎天柱,当你离开加权质心时,丰度会下降,尽管我认为这个类比比CA排序要宽松。
如果您传递标准化的数据,是否是最优的问题;正如您链接到的答案所示,这将意味着负重,但这是行不通的。通常不标准化物种丰度--我们应用了一些转换,比如转换成比例、平方根或日志转换,将数据标准化到0-1区间--但这些转换不会给出负丰度,所以你就不会遇到这个问题。
NMDS中的envfit()
并不一定是一件好事,因为我们不会期望丰度在排序空间上线性变化。wascores()
是比较好的,因为它们暗示了非线性丰度,但在NMDS中有一点不太好。一般来说,ordisurf()
是一个更好的选择,因为它添加了一个GAM (光滑)曲面,而不是向量所隐含的平面,但是在排序中不能显示多个或几个曲面,而可以添加任意多个物种WA分数或箭头。
这里的基本问题是假设envfit()
和wascores()
应该给出相同的结果。没有理由认为,这些是从根本上不同的方法来计算NMDS的“物种分数”,而且每种方法都有自己的假设和优缺点。
https://stackoverflow.com/questions/60937869
复制相似问题