Page personnelle de Laurent Lesnard

Accueil | Contact | Plan du site | Espace privé

 

Accueil > Français > Programmes

SEQCOMP, une extension Stata pour la comparaison de séquences

Version 1.0 Disponible pour Stata (>= v 9) Mac et Windows

mercredi 28 mai 2008

Extension (plug-in) pour Stata qui permet d’appliquer une méthode de comparaison de séquences dérivée de l’appariement optimal. Pour plus de détails sur cette méthode voir le document de travail qui lui est consacré. Une introduction plus générale aux méthodes d’appariement optimal, se trouve ici.

Cette extension (plug-in) destinée au logiciel d’analyse statistique Stata permet de mettre en oeuvre une méthode d’analyse de données séquentielles, cas particulier des Méthodes d’Appariement Optimal, qui a été utilisée avec succès pour construire une typologie des horaires de travail individuels et conjugaux. La méthode est très brièvement présentée et le fonctionnement du plugin présenté.

Attention ! Les versions antérieures à 0.7 n’étaient pas des implémentation exactes de la formule proposée [1]. Merci à Renzo Carriero pour avoir attiré mon attention sur ce problème.

1re version : 1er septembre 2005

Principe de la méthode de comparaison de séquences

Bien qu’elle soit un cas particulier des Méthodes d’Appariement Optimal, la méthode de comparaison de séquences que j’ai développée n’est pas optimale au sens où les dissimilarités obtenues ne résultent pas d’une phase d’optimisation entre les opérations d’insertion-suppression et de substitution : seules ces dernières sont utilisées dans le processus d’appariement des séquences. Les coûts de substitutions sont variables et directement dérivés de la série des matrices de transitions qui décrivent les changements d’états observés entre deux dates consécutives.

Ainsi, de nombreuses transitions entre deux états à un moment donné (entre t et t+1) signifient que ces deux états sont proches en termes de probabilités : les chances de changer du premier état pour le second sont très élevées. En revanche, un petit nombre de transitions signifie que les deux états sont très peu semblables à l’instant considéré. A tout moment, il est donc possible de déterminer le degré de similarité de tous les états selon ce principe et de se servir de ces dissimilarités pour calculer des distances entre séquences, simples sommes de la suite de proximités instantanées.

Dans le cas de l’analyse des horaires de travail, deux états sont possibles, "travail" et "non travail". À 9h, il y a de fortes chances pour que l’on observe de nombreuses transitions "non travail"->"travail" liées au début de la journée de travail d’un grand nombre d’actifs occupés. À 9h, ces deux états sont donc proches. En revanche, les mêmes transitions entre "travail" et "non travail" vers 22h seront vraisemblablement moins nombreuses et une personne qui travaille à ce moment-là sera considérée comme très "éloignée" d’une personne qui ne travaille pas.

Au final, on obtient à l’aide de cette méthode un tableau contenant les dissimilarités pour tous les couples de séquences. Cette matrice de distance n’est en elle même d’aucune utilité directe sans une opération de simplification de cette énorme masse d’information. Deux techniques classiques peuvent être utilisées : les méthodes de classification (cluster analysis) et les techniques d’échelonnement multidimensionnel (multidimensional scaling).

Contenu du fichier à télécharger et mode d’emploi

Une extension stata se compose généralement de deux fichiers :
-  l’extension à proprement parler, que l’on peut repérer par la terminaison plugin [2]. L’extension présente dans l’archive à télécharger porte le nom de distseq.plugin.
-  un fichier ado, nommé seqcomp.ado, qui sert en quelque sorte d’interface entre Stata et l’extension distseq.plugin.

Ces deux fichiers doivent être désarchivés [3] dans le répertoire ado qui est installé quelque part dans l’ordinateur.

Une fois ces deux fichiers désarchivés dans le répertoire ado, la syntaxe à utiliser dans Stata, très semblable à celle des autres procédures de Stata, est la suivante :

Classiquement, il faut mettre dans varlist la liste des variables qui forment les différents épisodes de la séquence [4]. Il est possible de restreindre l’analyse à certaines séquences grâce à la commande if, optionnelle, et d’affecter des poids aux séquences (commande iw) [5].

Il est possible de récupérer la matrice de dissimilarité de deux manières :

-  par défaut directement dans Stata sous forme d’une matrice dont la taille ne dépend pas de la version de Stata (SE ou Intercooled) mais de la mémoire vive disponible. Cette solution présente l’avantage de la simplicité mais les dissimilarités seront perdues avec la fin de la session. Il est possible de désactiver cette sauvegarde sous forme de matrice (qui ralentit un peu le programme) avec l’option nodistmat mais dans ce cas il est impératif de choisir l’option export.

-  dans un fichier sous forme de liste avec l’option export. Il est dans ce cas impératif d’indiquer le chemin de sauvegarde des résultats, chemin dans l’instruction usingqui doit impérativement comporter à la fin le séparateur d’arborescence du système utilisé [6]. Optionnellement, il est possible d’indiquer la variable identifiant les observations dans id() : un fichier nommé idmapping comprenant deux colonnes (une pour l’identifiant interne au programme et une autre pour celui indiqué par l’utilisateur) est alors créé.

Par exemple, si on veut analyser toutes les séquences et que celles-ci se trouvent représentées dans le fichier sous forme de 100 variable nommées episode1, episode 2,... episode100, alors on écrira dans Stata Windows :

seqcomp episode1-episode100

Pour sauvegarder sous forme de matrice et dans un fichier les résultats alors il faudra écrire dans Stata :

seqcomp episode1-episode100 using "C:\temp\", export

Les poids sont pris en compte au moment de calculer les matrices de transitions : au lieu de compter le nombre d’individus qui changent d’un état à un autre, et ainsi d’attribuer implicitement à chaque individu le même poids, ce sont les coefficients de pondération qui sont sommés. Les poids ne sont pas pris en compte dans la détermination de la dissimilarité des séquences prises deux à deux, qui est par définition une comparaison 1:1.

Lorsque l’option export est activée, les résultats prennent la forme de trois fichiers :
-  substitution.dat, qui contient la liste des matrices des coûts de substitution aux différents couples de dates consécutives.
-  distancelist.dat, qui présente sous la forme d’une liste la matrice de dissimilarité obtenue. Plus exactement, ce dernier fichier comporte trois colonnes : les deux premières donnent les couples d’individus à laquelle correspond la dissimilarité qui figure dans la troisimème colonne. Autrement dit, voici à quoi ressemble le fichier :


2 1 x
3 1 x
3 2 x
4 2 x
1 3 x
...

Cette façon de présenter la matrice de dissimilarité est la plus économique en terme d’encombrement et est par ailleurs compatible avec le logiciel de classification ClustanGraphics qui accepte les proximity lists.

-  idmapping.dat, qui contient l’identifiant interne et celui des données (utile lorsque des séquences avec des poids manquants sont éliminées).

Le traitement de la matrice de distance avec la procédure de clustering de Stata ne dépend pas de la taille de la matrice et de la version de Stata [7]. Toutefois, les algorithmes de classification présents dans Stata sont très anciens : les dernières méthodes proposées par les chercheurs en statistique comme Lance et Williams ou Milligan (qui ont quand même plus de 20 ans) sont beaucoup plus performantes mais ne sont malheureusement pas disponibles dans Stata. SAS est bien meilleur dans ce domaine. Le logiciel spécialisé ClustanGraphics offre le plus grande choix de méthodes sans toutefois proposer les derniers raffinements en la matière. R est le plus complet puisqu’il propose la méthode UPGMA-flexible et WPGMA-flexible.

Pourquoi proposer une extension plutôt qu’un programme écrit en Stata, notamment depuis l’arrivée de Mata ?

Les Méthodes d’Appariement Optimal sont assez simples dans leur principe mais requièrent une très grande puissance de calcul puisqu’il s’agit à chaque fois de comparer deux à deux toutes les séquences pour construire une matrice de dissimilarité. Le principe de Stata de tout charger dans la mémoire vive pose dans ce cas problème et la seule solution est alors de passer par une " extension ", en fait de mettre au point un programme en langage C.

[1] Les différences devraient être mineures mais il est conseillé aux utilisateurs de vérifier leurs résultats.

[2] Cette terminaison est purement arbitraire et cache en fait une librairie de programmes, un fichier dll.

[3] Les utilisateurs de Windows peuvent trouver ici un logiciel gratuit de gestion de la compression "zip".

[4] Il convient de noter que cette extension n’est pas compatible avec le format long des données dans Stata.

[5] Le nom iw convient mieux que aw, utilisé jusqu’à la version 0.3 : aw se réfère à des poids analytiques inversement proportionnels à la variance des variables ; iw est utilisé dans Stata pour refléter l’importance des observations les unes par rapport aux autres.

[6] Autrement dit, dans Windows il faudra écrire ... using "C :\temp\" et non ..."C :\temp".

[7] Une des différences entre Stata intercooled et Stata Special Edition tient en effet à la taille maximale des matrices qui peuvent être traitées : 800 lignes et colonnes pour Stata Intercooled contre 11 000 lignes et colonnes pour Stata SE.