【问题标题】:R vegan simper analysis: modify distance matrixR vegan simper 分析:修改距离矩阵
【发布时间】:2016-06-16 20:40:20
【问题描述】:

我正在使用 Vegan 软件包中的简单分析,以确定哪些氨基酸导致不同样品之间的蛋白质组成变化。正如我从discussion 中了解到的那样, simper() 函数使用 Bray-Curtis。我需要使用另一个相异指数,通常是欧几里得。我怎样才能在函数中修改它?谢谢。

【问题讨论】:

    标签: r distance euclidean-distance vegan


    【解决方案1】:

    仅更改相异性是微不足道的,但您使用的相异性应该是您可以按物种添加和分析术语。 平方欧式距离的术语就是这样。然而,simper() 制作了各种不同的奇怪技巧,我完全不确定这些技巧是否适用于平方欧几里德距离(我什至不确定它们是否适用于我们使用的 Bray-Curtis,但至少它们符合公布的方法)。注意,我们警告不要使用simper。这是帮助页面的摘录——我希望你已经阅读了:

    “简单”的结果可能很难解释。这 方法非常严重地混淆了组间差异和 在群体变异中,并且似乎挑选出可变物种 而不是独特的物种(Warton et al. 2012)。即使你 制作彼此复制的组,该方法将单一 出具有高贡献的物种,但这些不是 对不存在的组间差异的贡献,但 物种丰度的组内变异。

    也就是说,从 Bray-Curtis 切换到平方欧几里得,您应该更改以下几行。但是,我建议您不要使用此功能:

    diff --git a/R/simper.R b/R/simper.R
    index 35fa189..f60c57f 100644
    --- a/R/simper.R
    +++ b/R/simper.R
    @@ -13,9 +13,8 @@
             n.b <- nrow(gb)
             for(j in seq_len(n.b)) {
                 for(k in seq_len(n.a)) {
    -                mdp <- abs(ga[k, , drop = FALSE] - gb[j, , drop = FALSE])
    -                mep <- ga[k, , drop = FALSE] + gb[j, , drop = FALSE]
    -                contrp[(j-1)*n.a+k, ] <- mdp / sum(mep)
    +                mdp <- (ga[k,, drop=FALSE] - gb[j,, drop = FALSE])^2
    +                contrp[(j-1)*n.a+k, ] <- mdp
                 }
             }
             colMeans(contrp)
    @@ -53,9 +52,8 @@
             contr <- matrix(ncol = P, nrow = n.a * n.b)
             for (j in seq_len(n.b)) {
                 for (k in seq_len(n.a)) {
    -                md <- abs(group.a[k, , drop = FALSE] - group.b[j, , drop = FALSE])
    -                me <- group.a[k, , drop = FALSE] + group.b[j, , drop = FALSE]
    -                contr[(j-1)*n.a+k, ] <- md / sum(me)
    +                md <- (group.a[k,,drop=FALSE] - group.b[j,,drop=FALSE])^2
    +                contr[(j-1)*n.a+k, ] <- md
                 }
             }
             average <- colMeans(contr)
    

    【讨论】:

    • 谢谢@Jari。事实上,我读到了有关使用 SIMPER 分析的限制。在我的例子中,我使用 simper() 作为 adonis permanova 的事后测试来估计每种氨基酸对样品之间蛋白质组成变化的贡献。到目前为止,除了对每种氨基酸进行简单的方差分析之外,我还没有找到一个很好的替代简单方法的方法。但这并不能回答同样的问题。您可能还有其他建议吗?
    猜你喜欢
    • 1970-01-01
    • 2017-07-21
    • 2022-01-12
    • 2016-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多