Выбор кластеров ниже определенной высоты в дендрограмме 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))

В штучной упаковке дерево

Другие вопросы по тегам