Schneiden des Dendrogramms in n Bäume mit einer minimalen Clustergröße in R

Ich versuche, hirearchical Clustering zu verwenden (speziellhclust) einen Datensatz in 10 Gruppen mit einer Größe von 100 Mitgliedern oder weniger zu gruppieren, wobei keine Gruppe mehr als 40% der Gesamtbevölkerung hat. Die einzige Methode, die ich derzeit kenne, ist die wiederholte Verwendungcut() und wählen Sie kontinuierlich niedrigere Stufen von h, bis ich mit der Streuung der Schnitte zufrieden bin. Dies zwingt mich jedoch, die von mir beschnittenen Gruppen erneut zu gruppieren, um sie zu 100 Mitgliedsgruppen zusammenzufassen, was sehr zeitaufwendig sein kann.

Ich habe mit dem experimentiertdynamicTreeCut Paket, kann aber nicht herausfinden, wie diese (relativ einfachen) Einschränkungen eingegeben werden. Ich benutzedeepSplit Um die Anzahl der Gruppierungen zu bestimmen, wird die maximale Anzahl gemäß der Dokumentation auf 4 begrenzt. In der folgenden Übung möchte ich die Cluster lediglich in 5 Gruppen von 3 oder mehr Personen aufteilen (I Ich kann die maximale Größenbeschränkung alleine bewältigen, aber wenn Sie versuchen möchten, dies ebenfalls in Angriff zu nehmen, wäre dies hilfreich!).

Hier ist mein Beispiel mit demOrange Datensatz.

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

Wie Sie sehen, werden nur zwei Cluster angegeben. Für meine Übung möchte ich es vermeiden, einen expliziten Höhenbegriff zu verwenden, um die Bäume zu fällen, wie ich es möchtek Anzahl der Bäume statt.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage