可重复数据:
Data <- data.frame(
X = sample(c(0,1), 10, replace = TRUE),
Y = sample(c(0,1), 10, replace = TRUE),
Z = sample(c(0,1), 10, replace = TRUE)
)
Matrix_from_Data <- data.matrix(Data)
str(Matrix_from_Data)
num [1:10,1:3] 1 0 0 1 0 1 0 1 1 1 ... - attr(*,&#34; dimnames&#34;)= 2的列表 .. $:NULL .. $:chr [1:3]&#34; X&#34; &#34; Y&#34; &#34; Z&#34;
问题: 我有二进制,对称变量的数据框(大于示例),我想做一些我从未尝试过的层次聚类。没有丢失或NA值。
在尝试从“群集”运行菊花花样之前,我将数据帧转换为矩阵。包,以获得相异矩阵。我想探索计算不同差异度指标的选项,但遇到警告(而不是错误):
library(cluster)
Dissim_Euc_Matrix_from_Data <- daisy(Matrix_from_Data, metric = "euclidean", type = list(symm =c(1:ncol(Matrix_from_Data))))
警告讯息: 在雏菊中(Matrix_from_Data,metric =&#34;欧几里得&#34;,类型=列表(symm = c(1:ncol(Matrix_from_Data)))): 混合变量,公制&#34; gower&#34;自动使用
...这对我来说似乎很奇怪,因为&#34; Matrix_from_Data&#34; 是所有数字变量,而不是混合变量。 Gower可能是一个很好的指标,但我想看看其他人如何影响群集。 我错过了什么?
答案 0 :(得分:2)
很棒的问题。
首先,该消息是Warning
而不是Error
。我个人并不熟悉daisy
,但我无知的猜测是,当您运行该功能时,会弹出该特定警告消息,并且如果警告是,则不会执行任何工作相关的。
无论出现何种警告,在层次聚类中比较由几个不同距离度量完成的聚类的一种简单方法是绘制树状图。为简单起见,我们将"euclidean"
和"binary"
距离指标与dist
进行比较。您可以使用?dist
来了解"binary"
距离在此处的含义。
# When generating random data, always set a seed if you want your data to be reproducible
set.seed(1)
Data <- data.frame(
X = sample(c(0,1), 10, replace = TRUE),
Y = sample(c(0,1), 10, replace = TRUE),
Z = sample(c(0,1), 10, replace = TRUE)
)
# Create distance matrices
mat_euc <- dist(Data, method="euclidean")
mat_bin <- dist(Data, method="binary")
# Plot the dendograms side-by-side
par(mfrow=c(1,2))
plot(hclust(mat_euc))
plot(hclust(mat_bin))
我通常从下到上读取树状图,因为垂直轴上的点与垂直轴上的点相比,更相似(即距离更远)。
我们可以从这些图中找到一些东西:
还要记住,有不同的层次聚类方法(例如完整链接和单链接),但您也可以使用相同的方法来比较方法之间的差异。有关?hclust
提供的完整方法列表,请参阅hclust
。
希望有所帮助!