使用 envfit (vegan) 计算物种分数
Using envfit (vegan) to calculate species scores
我正在 运行NMDS,有几个关于 vegan 包中的 envfit()
函数的问题。我已经阅读了此功能的文档以及关于 SO 和其他关于素食、envfit()
和一般物种评分的大量 posts。
我看到 envfit()
和 wascore()
都用于计算排序技术的物种分数。默认情况下,metaMDS() 使用 wascore()
。这使用加权平均,我理解。我很难理解 envfit()
。 envfit()
和 wascore(
产生相同的结果吗?鉴于它是默认值,wascore()
是否更可取?我意识到在某些情况下,wascore()
可能不是一个选项(即负值),如本 post 中所述。
鉴于 envfit()
和 wascore()
似乎都用于物种评分,它们应该产生相似的结果,对吧?我希望我们可以在这里证明这一点......
下面显示了使用默认值 wascore()
使用 metaMDS()
确定的物种分数:
data(varespec)
ord <- metaMDS(varespec)
species.scores <- as.data.frame(scores(ord, "species"))
species.scores
wascore()
对我来说很有意义,它使用加权平均。 McCune 和 Grace (2002) p. Analysis of Ecological Data 中对物种得分的加权平均有很好的解释。 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
"The values that you see in the table are the standardised coefficients from the linear regression used to project the vectors into the ordination. These are directions for arrows of unit length." - 来自 Plotted envfit vectors not matching NMDS scores
的评论
^有人可以告诉我这里 运行 的线性模型是什么,提取的标准化值是什么?
species.scores
species.scores.envfit
这些值彼此非常不同。我在这里错过了什么?
这是我的第一个SO post,请见谅。我会问一些其他相关线程的问题,但我是 SO 的渣滓,甚至没有发表评论的声誉。
谢谢!
问:wascores()
和 envfit()
的结果一样吗?
不,它们不会给出相同的结果,因为它们在做两件完全不同的事情。在此 中,我已经解释了 envfit()
的工作原理。 wascores()
获取 nmds space 中点的坐标并计算每个维度的平均值,根据每个点的物种丰度对观察值进行加权。因此,wascores()
返回的物种分数是 NMDS space 中每个物种的加权质心,其中权重是物种的丰度。 envfit()
拟合指向丰度增加方向的向量。这意味着在 NMDS 排序上有一个平面,当您平行于箭头移动时,丰度从平面上的任何点线性增加,而 wascores()
最好被认为是最优的,当您远离加权时,丰度会下降质心,虽然我认为这个类比比用 CA 排序更宽松。
优化与否的问题,如果你传入标准化数据,这是一个问题;正如您链接到的答案所示,这意味着负权重不起作用。通常不会对物种丰度进行标准化——我们应用了一些转换,比如转换为比例、平方根或对数转换,将数据标准化为 0-1 区间——但这些不会给你负丰度,所以你;再少可能 运行 进入那个问题。
envfit()
在 NMDS 中不一定是好事,因为我们不希望丰度在排序 space 上 线性变化 。 wascores()
更好,因为它们暗示非线性丰度,但在 NMDS 中它们有点老套。 ordisurf()
通常是一个更好的选择,因为它添加了一个 GAM(平滑)表面而不是向量隐含的平面,但是您不能在排序上显示多个表面,而您可以添加想要多少种 WA 分数或箭头。
这里的基本问题是假设 envfit()
和 wascores()
应该 给出相同的结果。没有理由假设,因为这些是计算 NMDS "species scores" 的根本不同方法,并且每种方法都有自己的假设和优缺点。
我正在 运行NMDS,有几个关于 vegan 包中的 envfit()
函数的问题。我已经阅读了此功能的文档以及关于 SO 和其他关于素食、envfit()
和一般物种评分的大量 posts。
我看到
envfit()
和wascore()
都用于计算排序技术的物种分数。默认情况下,metaMDS() 使用wascore()
。这使用加权平均,我理解。我很难理解envfit()
。envfit()
和wascore(
产生相同的结果吗?鉴于它是默认值,wascore()
是否更可取?我意识到在某些情况下,wascore()
可能不是一个选项(即负值),如本 post 中所述。鉴于
envfit()
和wascore()
似乎都用于物种评分,它们应该产生相似的结果,对吧?我希望我们可以在这里证明这一点...... 下面显示了使用默认值wascore()
使用metaMDS()
确定的物种分数:
data(varespec)
ord <- metaMDS(varespec)
species.scores <- as.data.frame(scores(ord, "species"))
species.scores
wascore()
对我来说很有意义,它使用加权平均。 McCune 和 Grace (2002) p. Analysis of Ecological Data 中对物种得分的加权平均有很好的解释。 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
"The values that you see in the table are the standardised coefficients from the linear regression used to project the vectors into the ordination. These are directions for arrows of unit length." - 来自 Plotted envfit vectors not matching NMDS scores
的评论^有人可以告诉我这里 运行 的线性模型是什么,提取的标准化值是什么?
species.scores
species.scores.envfit
这些值彼此非常不同。我在这里错过了什么?
这是我的第一个SO post,请见谅。我会问一些其他相关线程的问题,但我是 SO 的渣滓,甚至没有发表评论的声誉。
谢谢!
问:wascores()
和 envfit()
的结果一样吗?
不,它们不会给出相同的结果,因为它们在做两件完全不同的事情。在此 envfit()
的工作原理。 wascores()
获取 nmds space 中点的坐标并计算每个维度的平均值,根据每个点的物种丰度对观察值进行加权。因此,wascores()
返回的物种分数是 NMDS space 中每个物种的加权质心,其中权重是物种的丰度。 envfit()
拟合指向丰度增加方向的向量。这意味着在 NMDS 排序上有一个平面,当您平行于箭头移动时,丰度从平面上的任何点线性增加,而 wascores()
最好被认为是最优的,当您远离加权时,丰度会下降质心,虽然我认为这个类比比用 CA 排序更宽松。
优化与否的问题,如果你传入标准化数据,这是一个问题;正如您链接到的答案所示,这意味着负权重不起作用。通常不会对物种丰度进行标准化——我们应用了一些转换,比如转换为比例、平方根或对数转换,将数据标准化为 0-1 区间——但这些不会给你负丰度,所以你;再少可能 运行 进入那个问题。
envfit()
在 NMDS 中不一定是好事,因为我们不希望丰度在排序 space 上 线性变化 。 wascores()
更好,因为它们暗示非线性丰度,但在 NMDS 中它们有点老套。 ordisurf()
通常是一个更好的选择,因为它添加了一个 GAM(平滑)表面而不是向量隐含的平面,但是您不能在排序上显示多个表面,而您可以添加想要多少种 WA 分数或箭头。
这里的基本问题是假设 envfit()
和 wascores()
应该 给出相同的结果。没有理由假设,因为这些是计算 NMDS "species scores" 的根本不同方法,并且每种方法都有自己的假设和优缺点。