【问题标题】:R - warning for dissimilarity calculation, clustering with numeric matrixR - 差异计算警告,使用数值矩阵进行聚类
【发布时间】:2016-04-04 22:12:07
【问题描述】:

可重现的数据:

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(*, "dimnames")=2 个列表 ..$ : 空 ..$ : chr [1:3] "X" "Y" "Z"

问题: 我有二进制对称变量的数据框(比示例大),我想做一些层次聚类,这是我以前从未尝试过的。没有缺失值或 NA 值。

在尝试从“集群”包运行菊花函数之前,我将数据帧转换为矩阵,以获取相异矩阵。我想探索计算不同差异指标的选项,但遇到警告(不是错误):

library(cluster)
Dissim_Euc_Matrix_from_Data <- daisy(Matrix_from_Data, metric = "euclidean", type = list(symm =c(1:ncol(Matrix_from_Data))))    

警告信息: 在 daisy(Matrix_from_Data, metric = "euclidean", type = list(symm = c(1:ncol(Matrix_from_Data)))) : 对于混合变量,自动使用度量“gower”

...这对我来说似乎很奇怪,因为“Matrix_from_Data”所有数字变量,而不是混合变量。 Gower 可能是一个很好的指标,但我想看看其他指标如何影响集群。 我错过了什么?

【问题讨论】:

    标签: r cluster-analysis


    【解决方案1】:

    好问题。

    首先,该消息是Warning,而不是Error。我个人对daisy 并不熟悉,但我无知的猜测是,当您运行该函数时会弹出该特定警告消息,并且没有做任何工作来查看 if 警告是相关的。

    无论出现该警告的原因是什么,在层次聚类中比较由多个不同距离度量完成的聚类的一种简单方法是绘制树状图。为简单起见,让我们比较编程到dist 中的"euclidean""binary" 距离度量。您可以使用?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))
    

    我通常从下往上读取树状图,因为垂直轴上较低的点与垂直轴上较高的点相比,彼此之间更相似(即距离更小)。

    我们可以从这些情节中得到一些东西:

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

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

    希望有帮助!

    【讨论】:

      猜你喜欢
      • 2018-02-15
      • 1970-01-01
      • 2015-12-17
      • 2012-10-06
      • 1970-01-01
      • 2021-11-08
      • 2015-12-14
      • 2011-04-13
      • 1970-01-01
      相关资源
      最近更新 更多