r - 杰卡德系数的独特原理
问题描述
嗨,我有一个可以使用以下方法模拟的数据集:
set.seed(123)
v1 <- rbinom(10000, 1, .2)
v2 <- rbinom(10000, 1, .3)
v3 <- rbinom(10000, 1, .25)
v4 <- rbinom(10000, 1, .5)
v5 <- rbinom(10000, 1, .35)
v6 <- rbinom(10000, 1, .2)
v7 <- rbinom(10000, 1, .3)
v8 <- rbinom(10000, 1, .25)
v9 <- rbinom(10000, 1, .5)
v10<- rbinom(10000, 1, .35)
dats <- data.frame(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10)
我正在使用 Jaccard 距离创建一个距离结构,如下所示:
dat.jac <- philentropy::distance(dats, method = "jaccard")
所以这是我的问题:由于这些是二进制变量,这意味着最多有 2^10 = 1024 个唯一组。这是否意味着我有超过 1024 分的数据?问这个问题的另一种方法是我是否需要计算唯一观测值的 Jaccard 距离并将观测值的计数用作权重,或者我可以只计算每个观测值(行)的 Jaccard 距离以获得距离矩阵吗?在编程方面,我应该继续以下哪一项?
dat.jac <- philentropy::distance(dats, method = "jaccard")
或者
dat.jac <- philentropy::distance(unique(dats), method = "jaccard")
我的目标是使用以下代码在层次聚类中使用距离矩阵:
dist.jac.mat<- as.matrix(dist.jac)
dist.jac.mat[is.na(dist.jac.mat)] <- 0
hc <- hclust(as.dist(dist.jac.mat), method = "single")
fviz_nbclust(dats, FUN = hcut, diss = as.dist(dist.jac.mat), k.max = 15,
nboot = 250, method = "silhouette")
解决方案
对于单个链接,仅使用唯一点确实就足够了。因为对于单个完整的链接,数量并不重要。对于其他联系,这通常不成立。在那里,您需要使用加权聚类它们并按重复数加权。
但是,您将遇到不同的问题:
由于您几乎拥有所有组合,因此聚类将毫无用处。只有很少的可能距离,并且在所有东西都连接之前,您的树状图可能只有很少的级别。这是此类数据所固有的。聚类在连续变量上效果最好,重复距离很少。
推荐阅读
- javascript - 使用 sort 方法按字母顺序对数组进行排序
- html - 将图标添加到 jumbotron 中的标题项
- java - 如何在eclipse中导入javafx?
- python - 为什么我在 SQLITE3 中收到此语法错误?
- c++ - QML 错误:未知方法返回类型:std::string
- .net - dotNetRdf 中是否有任何类可以将本体上传到远程服务器中?
- r - 请求的 python 版本不能使用,因为另一个版本已在闪亮的应用程序中初始化
- javascript - PHP 网站中的 Square 支付网关集成不会重定向到支付门户
- python - 我应该使用哪些数据类型作为 redis-py 函数的参数?
- rxjs - Rxjs 间隔不轮询可观察的服务器 API 调用