R - 不相似度计算的警告,使用数字矩阵进行聚类

时间:2015-12-30 22:05:00

标签: r cluster-analysis

可重复数据:

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可能是一个很好的指标,但我想看看其他人如何影响群集。 我错过了什么?

1 个答案:

答案 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_test

我通常从下到上读取树状图,因为垂直轴上的点与垂直轴上的点相比,更相似(即距离更远)。

我们可以从这些图中找到一些东西:

  • 4 / 6,5 / 10和7/8使用两个指标组合在一起。如果行相同,我们应该希望这是真的:)
  • 对于两个距离度量,
  • 3与7/8最强烈相关,尽管关联的在二进制距离上比欧几里德距离更强一些。
  • 1,2和9在两个距离度量之间具有一些明显不同的关系(例如,1与欧几里德距离中的2最强烈相关,但二进制距离中为9)。在这种情况下,距离度量的选择会对结果集群产生重大影响。在这一点上,回到您的数据并理解为什么这三个点的距离指标之间存在差异是值得的。

还要记住,有不同的层次聚类方法(例如完整链接和单链接),但您也可以使用相同的方法来比较方法之间的差异。有关?hclust提供的完整方法列表,请参阅hclust

希望有所帮助!