【发布时间】:2016-03-08 15:16:33
【问题描述】:
我想计算二进制矩阵的相异指数,并在 R 中找到了几个函数,但我无法让他们同意。我在这四个函数中以jaccard系数为例:vegdist()、sim()、designdist()和dist()。我将使用结果进行聚类分析。
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")
有人知道为什么dist1 和dist4 与dist2 和dist3 不同吗?
【问题讨论】:
-
你研究过文档吗?如果这没有提供答案,您是否研究过源代码?
-
然后你忘记了包 stringdist :-)。它有一个用于进行 Jaccard 距离的度量,但基于 q-gram 配置文件。
-
我无法从文档中得到我的问题的答案,而且我阅读源代码的能力也不是很强,所以我希望对你们有所帮助。
-
如果你想在 vegan
vegdist中使用二进制差异,你必须这样说:使用vegdist(test, method="jaccard", binary=TRUE)。dist3的等式定义了 similarities 而不是 dissimilarities。对于不同之处,请使用designdist(test, "(b+c)/(a+b+c)", abcd=TRUE)或1 - designdist(test, "a/(a+b+c)", abcd=TRUE)。从名称上看,sim函数也定义了相似之处。在 R 中,您通常需要聚类分析中的差异,至少在使用标准工具时是这样。
标签: r cluster-analysis vegan