纯素simper分析:修改距离矩阵

纯素simper分析:修改距离矩阵,r,distance,euclidean-distance,vegan,R,Distance,Euclidean Distance,Vegan,我正在使用素食主义者包装中的模拟分析,以确定哪些氨基酸是不同样本之间蛋白质组成变化的原因。据我所知,simper()函数使用Bray Curtis。我需要使用另一个相异指数,通常是欧几里德指数。如何在函数中修改它?谢谢 仅更改差异性是微不足道的,但您使用的差异性应该是按物种添加和分析术语。平方欧几里德距离的项就是这样。然而,simper()使用了各种不同的奇怪技巧,我根本不确定这些技巧对平方欧几里德距离有效(我甚至不确定它们对我们使用的布雷·柯蒂斯有效,但至少它们符合公布的方法)。注意,我们警告

我正在使用素食主义者包装中的模拟分析,以确定哪些氨基酸是不同样本之间蛋白质组成变化的原因。据我所知,simper()函数使用Bray Curtis。我需要使用另一个相异指数,通常是欧几里德指数。如何在函数中修改它?谢谢

仅更改差异性是微不足道的,但您使用的差异性应该是按物种添加和分析术语。平方欧几里德距离的项就是这样。然而,
simper()
使用了各种不同的奇怪技巧,我根本不确定这些技巧对平方欧几里德距离有效(我甚至不确定它们对我们使用的布雷·柯蒂斯有效,但至少它们符合公布的方法)。注意,我们警告不要使用
simper
。这是帮助页面的摘录--我希望您已经阅读了以下内容:

“傻笑”的结果可能很难解释。这个 方法严重混淆了组间差异和组间差异的平均值 群体内的变异,似乎挑出了变异物种 而不是独特的物种(Warton等人,2012年)。即使你 如果使组相互复制,则该方法将成为单个组 我们发现有高贡献的物种,但它们不是 对不存在的组间差异的贡献,但对 物种丰富度的组内变异

这就是说,这里是你应该改变的路线,从布雷·柯蒂斯到平方欧几里得。但是,我建议您不要使用此功能:

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)
diff--git a/R/simper.rb/R/simper.R
索引35fa189..f60c57f 100644
---a/R/simper.R
+++b/R/simper.R
@@ -13,9 +13,8 @@

n、 b仅更改差异性是微不足道的,但是您使用的差异性应该是这样的,即您可以按物种添加和分析术语。平方欧几里德距离的项就是这样。然而,
simper()
使用了各种不同的奇怪技巧,我根本不确定这些技巧对平方欧几里德距离有效(我甚至不确定它们对我们使用的布雷·柯蒂斯有效,但至少它们符合公布的方法)。注意,我们警告不要使用
simper
。这是帮助页面的摘录--我希望您已经阅读了以下内容:

“傻笑”的结果可能很难解释。这个 方法严重混淆了组间差异和组间差异的平均值 群体内的变异,似乎挑出了变异物种 而不是独特的物种(Warton等人,2012年)。即使你 如果使组相互复制,则该方法将成为单个组 我们发现有高贡献的物种,但它们不是 对不存在的组间差异的贡献,但对 物种丰富度的组内变异

这就是说,这里是你应该改变的路线,从布雷·柯蒂斯到平方欧几里得。但是,我建议您不要使用此功能:

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)
diff--git a/R/simper.rb/R/simper.R
索引35fa189..f60c57f 100644
---a/R/simper.R
+++b/R/simper.R
@@ -13,9 +13,8 @@

n、 b谢谢@Jari。事实上,我读到了与使用SIMPER分析相关的限制。在我的例子中,我使用simper()作为adonis permanova的事后测试,以估计每个氨基酸对样本之间蛋白质组成变化的贡献。到目前为止,除了对每种氨基酸进行简单的方差分析外,我还没有找到一个好的替代simper的方法。但这并不能回答同样的问题。您可能还有其他建议?谢谢@Jari。事实上,我读到了与使用SIMPER分析相关的限制。在我的例子中,我使用simper()作为adonis permanova的事后测试,以估计每个氨基酸对样本之间蛋白质组成变化的贡献。到目前为止,除了对每种氨基酸进行简单的方差分析外,我还没有找到一个好的替代simper的方法。但这并不能回答同样的问题。你可能还有其他建议吗?