是否有一種簡單的方法可以計算h
中的最小值cut
,它可生成給定最小大小的分組?R將樹形圖分割成最小大小的組
在這個例子中,如果我想集羣,每個至少十名成員,我應該h = 3.80
去:
# using iris data simply for reproducible example
data(iris)
d <- data.frame(scale(iris[,1:4]))
hc <- hclust(dist(d))
plot(hc)
cut(as.dendrogram(hc), h=3.79) # produces 5 groups; group 4 has 7 members
cut(as.dendrogram(hc), h=3.80) # produces 4 groups; no group has <10 members
由於分裂的高度在hc$height
給出,我可以創建一組候選的值使用hc$height + 0.00001
,然後循環切割每一個。但是,我沒有看到如何解析dendrogram
類中的簇大小members
。例如,cut(as.dendrogram(hc), h=3.80)$lower[[1]]$members
返回NULL
,而不是66根據需要。
請注意,這是一個比Cutting dendrogram into n trees with minimum cluster size in R更簡單的問題,它使用包dynamicTreeCut
;這裏我沒有指定樹的數量,只是最小的簇大小。 TYVM。
作爲一個附註:成員是一個屬性 - 'attr(cut(as.dendrogram(hc),h = 3.80)$ lower [[1]],「members」)產量爲66. – lukeA