有没有办法将物种添加到 R 中的 ISOMAP 图?
Is there a way to add species to an ISOMAP plot in R?
我正在使用 R 中 vegan 包中的 isomap-function 来分析附生苔藓和地衣的群落数据。我开始使用 NMDS 分析数据,但由于数据的结构 运行 出现问题,这就是为什么我切换到 ISOMAP 的原因,它工作得非常好并且 returns 非常好的结果。到目前为止一切顺利……但是,该函数的输出不支持在 ISOMAP 图中绘制物种,因为物种分数不可用。无论如何,我真的很想添加物种信息以增强输出的可解释性。
你们中的任何人对此问题有解决方案或提示吗?有没有办法将 post hoc 的物种添加到图中,因为它可以用环境数据来完成?
如果您能就此主题提供任何帮助,我将不胜感激!
谢谢你,并致以最诚挚的问候,
英伽
不,没有将物种分数添加到 isomap
的功能。它看起来像这样:
`sppscores<-.isomap` <-
function(object, value)
{
value <- scale(value, center = TRUE, scale = FALSE)
v <- crossprod(value, object$points)
attr(v, "data") <- deparse(substitute(value))
object$species <- v
object
}
或者:
`sppscores<-.isomap` <-
function(object, value)
{
wa <- vegan::wascores(object$points, value, expand = TRUE)
attr(wa, "data") <- deparse(substitute(value))
object$species <- wa
object
}
如果 ord
是您的 isomap
结果并且 comm
是您的社区数据,您可以将它们用作:
sppscores(ord) <- comm # either alternative
我(还)不知道这些备选方案中哪个更正确。第一个添加物种分数作为它们线性增加的向量,第二个添加它们在排序中的加权平均值 space,但扩展后我们允许一些物种比它们出现的站点单位更极端。
这些会将新元素 species
添加到结果对象 ord
。然而,在 vegan 中使用这些需要更多的编码,但你可以用 vegan::scores
提取物种分数,但它们的缩放比例是基于群落数据的原始比例,并且可能相对于站点单位点的缩放比例很差,为此需要做更多的工作。但是,您可以单独绘制它们,或者然后乘以一个常数,给出与站点单位分数类似的比例。
sp <- scores(ord, display="species", choices=1:2)
plot(sp, type = "n", asp = 1) # does not allow plotting text
text(sp, labels = rownames(sp)) # so we must add text
我正在使用 R 中 vegan 包中的 isomap-function 来分析附生苔藓和地衣的群落数据。我开始使用 NMDS 分析数据,但由于数据的结构 运行 出现问题,这就是为什么我切换到 ISOMAP 的原因,它工作得非常好并且 returns 非常好的结果。到目前为止一切顺利……但是,该函数的输出不支持在 ISOMAP 图中绘制物种,因为物种分数不可用。无论如何,我真的很想添加物种信息以增强输出的可解释性。
你们中的任何人对此问题有解决方案或提示吗?有没有办法将 post hoc 的物种添加到图中,因为它可以用环境数据来完成?
如果您能就此主题提供任何帮助,我将不胜感激!
谢谢你,并致以最诚挚的问候, 英伽
不,没有将物种分数添加到 isomap
的功能。它看起来像这样:
`sppscores<-.isomap` <-
function(object, value)
{
value <- scale(value, center = TRUE, scale = FALSE)
v <- crossprod(value, object$points)
attr(v, "data") <- deparse(substitute(value))
object$species <- v
object
}
或者:
`sppscores<-.isomap` <-
function(object, value)
{
wa <- vegan::wascores(object$points, value, expand = TRUE)
attr(wa, "data") <- deparse(substitute(value))
object$species <- wa
object
}
如果 ord
是您的 isomap
结果并且 comm
是您的社区数据,您可以将它们用作:
sppscores(ord) <- comm # either alternative
我(还)不知道这些备选方案中哪个更正确。第一个添加物种分数作为它们线性增加的向量,第二个添加它们在排序中的加权平均值 space,但扩展后我们允许一些物种比它们出现的站点单位更极端。
这些会将新元素 species
添加到结果对象 ord
。然而,在 vegan 中使用这些需要更多的编码,但你可以用 vegan::scores
提取物种分数,但它们的缩放比例是基于群落数据的原始比例,并且可能相对于站点单位点的缩放比例很差,为此需要做更多的工作。但是,您可以单独绘制它们,或者然后乘以一个常数,给出与站点单位分数类似的比例。
sp <- scores(ord, display="species", choices=1:2)
plot(sp, type = "n", asp = 1) # does not allow plotting text
text(sp, labels = rownames(sp)) # so we must add text