有没有办法将物种添加到 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