Разрезание дендрограммы на n деревьев с минимальным размером кластера в R

Я пытаюсь использовать наемную археологическую кластеризацию (конкретноhclust) разбить набор данных на 10 групп с размерами 100 членов или менее, и ни в одной группе не должно быть более 40% от общей численности населения. Единственный метод, который я знаю в настоящее время, состоит в том, чтобы повторно использоватьcut() и выбирайте непрерывно более низкие уровни h, пока я не буду доволен дисперсией разрезов. Однако это вынуждает меня вернуться назад и повторно объединить группы, которые я обрезал, чтобы объединить их в 100 групп участников, что может занять очень много времени.

Я экспериментировал сdynamicTreeCut пакет, но не могу понять, как ввести эти (относительно простые) ограничения. я используюdeepSplit как способ обозначить количество группировок, но, следуя документации, это ограничивает максимальное количество до 4. В приведенном ниже упражнении все, что я хочу сделать, это разбить кластеры на 5 групп по 3 или более человека (я Я могу справиться с ограничением максимального размера самостоятельно, но если вы хотите попытаться решить эту проблему, это будет полезно!).

Вот мой пример, используяOrange набор данных.

library(dynamicTreeCut)
library(reshape2)

##creating 14 individuals from Orange's original 5
Orange1<-Orange
Orange1$Tree<-as.numeric(as.character(Orange1$Tree))
Orange2<-Orange1
Orange3<-Orange1
Orange2$Tree=Orange2$Tree+6
Orange3$Tree=Orange3$Tree+11
combOr<-rbind(Orange1, Orange2[1:28,], Orange3)


####casting the data to make a correlation matrix, and then running 
#### a hierarchical cluster
castOrange<-dcast(combOr, age~Tree, mean, fill=0)
castOrange[,16]<-c(1,34,5,35,34,35,21)
castOrange[,17]<-c(1,34,5,35,34,35,21)
orangeCorr<-cor(castOrange[, -1])
orangeClust<-hclust(dist(orangeCorr))

###running the dynamic tree cut
dynamicCut<-cutreeDynamic(orangeClust, minClusterSize=3, method="tree", deepSplit=4)

dynamicCut
[1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0

Как видите, он обозначает только два кластера. В моем упражнении я хочу уклониться от использования явного термина высоты, чтобы срезать деревья, так как я хочуk количество деревьев вместо.

Ответы на вопрос(1)

Ваш ответ на вопрос