R

Où couper un dendrogramme ?

Divers

La fonction best.cutree est maintenant disponible dans la package JLutils.

Dans le cadre d’une classification hiérarchique, il n’est pas toujours aisée de déterminer le nombre adéquat de classes à retenir.

Le package FactoMineR, dans le cadre de sa fonction HCPC, suggère d’utiliser la partition ayant la plus grande perte relative d’inertie. La fonction best.cutree ci-dessous permet de calculer ce critère à partir de n’importe quel dendrogramme, qu’il ait été calculé avec hclust ou agnes.

  1. best.cutree <- function(hc, min=3, max=20, loss=FALSE, graph=FALSE, ...){
  2.   if (class(hc)!="hclust") hc <- as.hclust(hc)
  3.   max <- min(max, length(hc$height))
  4.   inert.gain <- rev(hc$height)
  5.   intra <- rev(cumsum(rev(inert.gain)))
  6.   relative.loss = intra[min:(max)]/intra[(min - 1):(max - 1)]
  7.   best = which.min(relative.loss)
  8.   names(relative.loss) <- min:max
  9.   if (graph) {
  10.     temp <- relative.loss
  11.     temp[best] <- NA
  12.     best2 <- which.min(temp)
  13.     pch <- rep(1, max-min+1)
  14.     pch[best] <- 16
  15.     pch[best2] <- 21
  16.     plot(min:max, relative.loss, pch=pch, bg="grey75", ...)
  17.   } else {
  18.     if (loss)
  19.       relative.loss
  20.     else
  21.       best + min - 1
  22.   }
  23. }

Télécharger

  • hc : dendrogramme renvoyé par hclust ou agnes
  • min : nombre minimum de classes
  • max : nombre maximum de classes
  • loss : si égal à TRUE, renverra la liste des pertes d’inertie relatives plutôt que la meilleure partition
  • graph : si égal àTRUE, affichera un graphique des pertes d’inertie relatives, la meilleure partition étant représentée par un point noir et la seconde par un point gris

Exemples :

PNG - 3.5 ko