首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中dist函数的差异

R中dist函数的差异
EN

Stack Overflow用户
提问于 2016-03-08 15:16:33
回答 1查看 1.6K关注 0票数 2

我想计算二元矩阵上的不同指数,并在R中找到了几个函数,但我无法使它们一致。我在四个函数中以jaccard系数为例:vegdist()sim()designdist()dist()。我将使用这个结果进行聚类分析。

代码语言:javascript
复制
library(vegan)
library(simba)

#Create random binary matrix
function1 <- function(m, n) {
  matrix(sample(0:1, m * n, replace = TRUE), m, n)
}
test <- function1(30, 20)

#Calculate dissimilarity indices with jaccard coefficient
dist1 <- vegdist(test, method = "jaccard")
dist2 <- sim(test, method = "jaccard")
dist3 <- designdist(test, method = "a/(a+b+c)", abcd = TRUE)
dist4 <- dist(test, method = "binary")

有人知道为什么dist1dist4dist2dist3不同吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-10 05:56:58

我也把这个作为回答。这里是您计算出的不同之处的主要注释:

  • dist1:您必须在vegan::vegdist()中设置binary=TRUE (这已记录在案)。
  • dist2simba::sim()计算Jaccard的相似性,您必须使用1-dist2?sim文档给出了一个错误的Jaccard相似性公式,但在代码中使用了正确的公式。然而,记录在案的公式定义了一个相似之处。
  • dist3:您的vegan::designdist()公式给出了Jaccard的相似性,您应该将其更改为不同。有很多方法可以做到这一点,下面的代码给出了一种方法。
  • dist4:这是正确的。

用这些替换最后四行就可以完成任务,并给出与所有函数数值相同的结果:

代码语言:javascript
复制
#Calculate dissimilarity indices with jaccard coefficient
dist1 <- vegdist(test, method = "jaccard", binary = TRUE)
dist2 <- 1 - sim(test, method = "jaccard")
dist3 <- designdist(test, method = "(b+c)/(a+b+c)", abcd = TRUE)
dist4 <- dist(test, method = "binary")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35871157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档