Есть ли простой способ вычислить наименьшее значение h
в cut
, которое создает группы заданного минимального размера?
В этом примере, если мне нужны кластеры, содержащие не менее десяти членов в каждом, я должен использовать 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 дендрограмма в n деревьев с минимальным размером кластера в R, которая использует пакет dynamicTreeCut
; здесь я не указываю количество деревьев, просто минимальный размер кластера. ТЫВМ.
attr(cut(as.dendrogram(hc), h=3.80)$lower[[1]], "members")
дает 66. - person lukeA   schedule 29.06.2015