Accueil > Astuces... > Où couper un dendrogramme ?

R

Où couper un dendrogramme ?

dimanche 3 novembre 2013
Mis à jour le lundi 9 décembre 2013

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

Commentaires

  • Le 22 septembre 2014 à 13:24, par palesse

    Re-bonjour,

    C’est bon, la fonction best.cutree fonctionne, désolée, c’est moi qui avais mal fait les choses.

    Désolée

    Répondre à ce message

  • Le 22 septembre 2014 à 12:50, par palesse

    Bonjour,

    J’ai installé votre package JLutils mais je ne comprend pas, la fonction best.cuttree ne fonctionne pas...
    une fois que mon arbre est fait, j’ai essayé cette fonction et :« Erreur : impossible de trouver la fonction »best.cutree"

    Pourriez vous m’aider s’il vous plaît ?

    je ne suis pas super doué pour l’utilisation de R , je suis encore débutante,

    Répondre à ce message

  • Le 14 mai 2014 à 11:32, par Céline

    Bonjour,
    Je ne connaissais pas cette fonction, merci. Y-a-t-il une publication scientifique pour pouvoir citer cette fonction dans un article ? (autre que le nom du package).

    Merci

    • Le 14 mai 2014 à 12:45, par Joseph LARMARANGE

      Je n’ai pas trouvé de référence scientifique à cette approche. Peut-être pourriez-vous contacter les auteurs du package FactoMineR à partir duquel cette fonction est basée ?

      NB : si vous avez une réponse, merci de la poster ici qu’elle puisse profiter à d’autres.

      Bien cordialement

      Répondre à ce message

Répondre à cet article

modération a priori

Attention, votre message n’apparaîtra qu’après avoir été relu et approuvé.

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici
  • Ce formulaire accepte les raccourcis SPIP [->url] {{gras}} {italique} <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Retour haut de page
Site réalisé avec SPIP | Plan du site | Contact | Crédits | Mentions Légales | Suivre la vie du site RSS 2.0
Habillage visuel © Larma par Joseph Larmarange sous Licence Creative Commons Attribution 2.5 License