Есть ли простой способ рассчитать самое низкое значение 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
, а затем прорезайте сквозные разрезы на каждом из них. Однако я не вижу, как анализировать размер кластера members
из класса dendrogram
. Например, 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