Accueil > Astuces... > Représenter un tapis de séquences ordonnées selon un dendrogramme

Analyse de Séquences

Représenter un tapis de séquences ordonnées selon un dendrogramme

lundi 11 mars 2013
Mis à jour le samedi 14 décembre 2013

La fonction seq_heatmap est maintenant disponible dans le package JLutils.

Nicolas Robette a écrit un excellent article d’introduction à l’analyse de séquences sur le blog Quanti.hypotheses.org (voir L’analyse de séquences : une introduction avec le logiciel R et le package TraMineR).

Il y montre notamment comment calculer une distance entre séquences, ce qui permet ensuite d’effectuer une classification hiérarchique pour regrouper les différentes séquences en un nombre limité de classes en fonction de leur proximité.

Un des modes de représentation proposé par le package TraMineR est appelé “tapis”. Les tapis permettent de mieux visualiser la dimension individuelle des séquences. Chaque segment horizontal représente une séquence, découpée en sous-segments correspondant aux aux différents états successifs qui composent la séquence.

Nous proposons ici une petite astuce permettant de représenter sur un même graphique le tapis des séquences et le dendrogramme de la classification hiérarchique, les séquences étant alors triées selon les regroupements du dendrogramme, permettant de mieux comprendre comment se constituent les différentes classes.

Ce type de représentation s’inspire des heat map et utilise d’ailleurs la fonction native heatmap() fournie par R.

Voici en premier lieu le code à copier/coller dans R pour définir la fonction seq_heatmap :

  1. seq_heatmap <- function (seq, tree, with.missing=FALSE, ...) {
  2. if (class(tree)!="dendrogram") tree <- as.dendrogram(tree)
  3. mat <- seq
  4. for (i in 1:length(seq)){
  5. mat[mat[,i]=="%",i] <- NA
  6. mat[,i] <- as.numeric(mat[,i])
  7. }
  8. mat <- as.matrix(mat)
  9. col <- attr(seq,"cpal")
  10. if (with.missing) col <- c(col,attr(seq,"missing.color"))
  11. heatmap(mat, tree, NA, na.rm=FALSE, col=col, scale="none", labRow=NA, ...)
  12. }

Télécharger

Il suffit ensuite d’appeler cette fonction en lui passant en premier lieu le tableau des séquences défini à l’aide de la fonction seqdef() et en second le dendrogramme obtenu avec hclust() ou agnes() [1].

Pour reprendre les données fournies en exemple par Nicolas Robette, on saisira
seq_heatmap(seq,seq.agnes,labCol=14:50) pour obtenir le résultat ci-dessous :

Exemple d'utilisation de la fonction seq.heatmap

Notes

[1Au passage j’en profite pour citer l’excellent package flashClust. Le calcul d’un dendrogramme peut être particulièrement long si le fichier de données est important. Ce package permet de réduire très significativement le temps de calcul.

Commentaires

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