我在群集分析(层次群集)中遇到群组的问题。例如,这是虹膜数据集的完整链接的树形图。
使用后
> table(cutree(hc, 3), iris$Species)
这是输出:
setosa versicolor virginica
1 50 0 0
2 0 23 49
3 0 27 1
我在一个统计网站上读过,数据中的对象1总是属于组/集群1.从上面的输出中,我们知道 setosa 在第1组。然后,我将如何了解其他两个物种。它们如何属于第2组或第3组。它是如何发生的。也许有一个我需要知道的计算?
答案 0 :(得分:3)
我猜你是否正在使用它来制作目前看来并不存在的图像。
> lmbjck <- cutree(hclust(dist(iris[1:4], "euclidean")), 3)
> table(lmbjck, iris$Species)
lmbjck setosa versicolor virginica
1 50 0 0
2 0 23 49
3 0 27 1
Dist来自三种不同物种的植物测量,具有相同的列和行名称。
> iris.dist <- dist(iris[1:4], "euclidean")
> identical(rownames(iris.dist), colnames(iris.dist))
[1] TRUE
该对象被传递给hclust,它构造一棵树并将其切成三块。对象iris.order
包含绘制树形图的顺序。保留原始订单,根据此顺序绘制树。
> iris.hclust <- hclust(iris.dist)
> iris.cutree <- cutree(iris.hclust, 3)
> iris.order <- iris.hclust$order
这里有证据。我已经将原始的Species
名称,有序的物种名称放在一起,因为它们可以在树状图中看到,订单号和来自cutree函数的组。
> data.frame(original = iris$Species, ordered = iris$Species[iris.order],
order.num = iris.order, cutree = iris.cutree)
original ordered order.num cutree
1 setosa virginica 108 1
2 setosa virginica 131 1
3 setosa virginica 103 1
4 setosa virginica 126 1
5 setosa virginica 130 1
6 setosa virginica 119 1
...
103 virginica setosa 31 2
104 virginica setosa 26 2
105 virginica setosa 10 2
106 virginica setosa 35 2
107 virginica setosa 13 3
108 virginica setosa 2 2
...
让我们看看输出。如果你看第一行,在order.num
下面有108号。这意味着对于这个项目(树形图左侧的第一项)来自第108行。撇去第108行,并且您可以看到原始Species
确实是virginica
。 Cutree将其分配给组1
。让我们看一下第3行。在order.num
下,你可以看到这个项目来自第103行。再次,如果你下去检查103行中的原始物种,那么它(仍然) virginica
。我将练习它来检查其他(随机)行,并说服自己保留在开头构建表的顺序。因此,该表应该是正确的。