Выбор кластеров ниже определенной высоты в дендрограмме R, но только если кластер больше единицы
Я хочу написать некоторый простой код, который будет выбирать для определенных кластеров ниже пороговой высоты и выделять их (либо с помощью прямоугольника, либо по цвету). До сих пор я использовал cutree, который выбирает кластеры, которые мне нужны, но также выбирает все кластеры размера 1.
Мне удалось выбрать, какой из кластеров я на самом деле хочу, но так как это только очень небольшой раздел данных, который у меня есть, мне не нужно проходить вручную, чтобы выбрать их. Есть ли способ, которым я могу вырезать дерево, но только выбрать кластеры больше одного?
Это код, который я использую в данный момент:
plot(hClust,hang = -1,cex=0.5)
abline(h= 0.0018,col = 'blue')
ct <- cutree(hClust, h = 0.0018)
clust <- rect.hclust(hClust, h=0.0018, which = c(1,2,4,8,23))
1 ответ
Вы не предоставляете свои данные, поэтому я буду иллюстрировать с помощью встроенного mtcars
данные. Конечно, высоты отличаются от ваших. Те же настройки, что и у вашей проблемы:
hClust =hclust(dist(mtcars))
plot(hClust,hang = -1, cex=0.8)
abline(h= 28,col = 'blue')
Теперь мы можем позвонить rect.hclust
без печати (border=0
), чтобы получить кластеры, пронумерованные как rect.hclust
увидеть их. Затем мы можем выбрать кластеры с более чем одной точкой и поставить вокруг них прямоугольники.
clust <- rect.hclust(hClust, h=28, border=0)
NumMemb = sapply(clust, length)
clust <- rect.hclust(hClust, h=28, which=which(NumMemb>1))