当您在 R 中执行以下聚类时:
> d <- dist(as.matrix(mtcars))
> hc <- hclust(d)
> plot(hc)
你会得到一棵树,其节点的分支长度不相等。在普通的层次聚类(upgma)中,所有的长度都必须相等。有人可以解释一下 hclust 的默认行为,以及它如何产生不相等的长度吗?谢谢。
当您在 R 中执行以下聚类时:
> d <- dist(as.matrix(mtcars))
> hc <- hclust(d)
> plot(hc)
你会得到一棵树,其节点的分支长度不相等。在普通的层次聚类(upgma)中,所有的长度都必须相等。有人可以解释一下 hclust 的默认行为,以及它如何产生不相等的长度吗?谢谢。
我也认为,这是一种奇怪的行为。但它不是由hclust
而是plot.hclust
相反引起的。如果您查看帮助 ( ? plot.hclust
),您会发现hang
默认设置为 0.1 的参数:
标签应悬挂在绘图其余部分下方的绘图高度分数。负值将导致标签从 0 下垂。
因此,从 upgma 已知的行为可以通过
plot( hc, hang = -1 )
我猜这两种不同的行为是不同定义的结果,应该将高度分配给只包含一个观察的集群,即不与另一个合并。显然这里的定义是:它们根本没有高度。形式上,用 . 绘制它们是正确的hang = 0
。但由于这看起来很难看,我猜这hang = 0.1
是设置为默认值。
在任何情况下,你都会得到长度不等的分支hang >= 0
。