modalisa2sas : une macro Word pour transférer les données et la structure d’une enquête de MODALISA vers SAS

Les logiciels intégrés de traitement d’enquêtes par questionnaires, comme MODALISA ou SPHINX pour ne citer que les plus connus, sont en général très faciles d’utilisation, en particulier grâce à leurs menus de commande conviviaux qui permettent sans apprentissage particulier de construire des questionnaires, saisir les réponses, les recoder et en réaliser des analyses simples. C’est la raison pour laquelle ils ont de nombreux adeptes, en particulier parmi les enseignants et les étudiants, même s’ils sont payants. Mais à l’usage, ils se révèlent souvent limités, et il apparaît au bout d’un moment que les procédures de recodage et d’analyse, qu’on appréciait au début pour leur facilité d’utilisation, sont en réalité très fastidieuses, en tout cas dès qu’on veut réaliser des traitements et des analyses plus complexes. C’est à ce « moment » en général qu’on se décide à investir dans l’apprentissage d’outils d’analyse des données comme SAS, SPSS, STATA ou encore R, certes moins « conviviaux », mais en revanche beaucoup plus puissants…

Ca y est, vous en êtes à ce « moment » ? C’est fort possible, si vous avez trouvé cet article et que vous êtes en train de le lire… Oui mais voilà, en général, ça vous prend non pas au début d’une nouvelle enquête ou d’une nouvelle recherche, mais en cours de route, quand vous vous rendez compte que vous n’y arrivez plus avec votre logiciel sympathique de traitement d’enquêtes. Ou bien vous avez passé ce « moment », mais vous voulez récupérer une de vos anciennes enquêtes pour travailler à nouveau dessus dans le logiciel complexe d’analyse des données dont vous êtes devenu-e fan… Mais comment faire ? Voici une bonne solution, facile à mettre en œuvre, pour transférer vos données, et surtout vos structures d’enquêtes (libellés des questions, noms des modalités…) de MODALISA vers SAS.

 

Préparer les données

Transférer les données

Transférer le dictionnaire des variables dans SAS

Liens utiles

Pour aller plus loin…

 

Je vous propose une solution simple et rapide, avec cette « macro » Word que j’ai appelée « modalisa2sas » (prononcez modalisatousas pour faire chic et angliche)…

Attention !

Pour réaliser le transfert des données de MODALISA vers SAS, j’ai utilisé les versions suivantes des différents logiciels :

– MODALISA version 4.6.3 Educ (01/10/2004)

– Microsoft Word 2003 avec Microsoft Visual Basic 6.3

Je ne peux pas garantir que ça marche avec des versions plus récentes de MODALISA ou de Word, mais vous pouvez essayer, et dire ce que ça donne dans les commentaires de cet article…

Préparer les données

 

Il va falloir commencer par sortir les données de MODALISA. Ce n’est pas trop compliqué, mais il faut tenir compte de deux particularités de MODALISA :

  • – Ce logiciel à un format spécial pour les questions à réponses multiples, que SAS ne comprend pas. Il va donc falloir «dichotomiser» ces questions avant de les exporter, c’est-à-dire créer pour chaque modalité de réponse possible une question fermée à réponse unique: «oui» ou «non».
  • – Les procédures d’exportation dans MODALISA exportent les données des recodages, mais pas les «structures» des variables recodées. Il va donc falloir transformer les recodages en questions d’enquête.

Attention !

Etant donnée la façon dont MODALISA fonctionne, il est plus que recommandé de faire une sauvegarde de votre enquête avant de vous lancer dans les opérations ci-dessous, ou bien de faire les opérations ci-dessous sur une copie de votre enquête, sans toucher à l’original… Cela vous évitera de faire dans votre enquête des modifications irrémédiables !

 

« Dichotomiser » les questions à réponses multiples

 

Evidemment, si votre enquête ne comporte dans MODALISA aucune question à réponses multiples ou ordonnées, vous pouvez passer directement à l’étape suivante, qui consiste à « transformer les recodages en questions ».

Sinon, l’opération consiste à transformer toutes les questions à réponses multiples et questions à réponse unique, qui est le seul format admis par SAS. C’est la partie un peu pénible de l’ensemble de la manœuvre, pendant laquelle vous vous rappelez très bien pourquoi, au fait, vous voulez transférer vos données vers SAS…

Il va falloir en effet répéter l’opération ci-dessous pour chacune des questions à réponses multiples de votre enquête (je vous souhaite de ne pas en avoir plus d’une dizaine, bon courage…) :

  1. Démarrez MODALISA et sélectionnez l’enquête que vous voulez transférer dans SAS.
  2. Dans le menu « Classement », sélectionnez « Dupliquer en changeant le type ».
  3. Dans le menu qui apparaît, sélectionnez l’option 5 : « Question fermée de départ : – Type « à réponses multiples » ou « à réponses ordonnées »
  4. Dans le menu qui apparaît, sélectionnez l’option 1 : « Du type « multiple » vers une série de variable de type « unique » à 2 modalités (oui/non) »
  5. Sélectionnez la question à « dichotomiser », puis cliquez sur « Sélection », et ensuite sur « OK ».
  6. Recommencez pour la question à réponses multiples suivante.

 

« Dichotomiser » les questions à réponses ordonnées

 

C’est même encore un peu plus pénible que ça : si vous avez utilisé le type de questions « à réponses ordonnées » de MODALISA, il va falloir aussi les recoder, en effectuant pour chacune les opérations suivantes :

  1. Dans le menu « Classement », sélectionnez « Recoder ».
  2. Sélectionnez la variable à réponses ordonnées à dichotomiser, et cliquez sur « OK ».
  3. Sélectionnez l’option de recodage suivant vos préférences :
  • – Sélectionnez «Du type « ordonné » vers le type « Multiple » si vous ne souhaitez pas conserver les informations sur l’ordre des choix.
  • – Sélectionnez «Du type « ordonné » vers une série de type « Numérique » si vous voulez créer autant de variables qu’il y a de modalités, contenant chacune le rang du choix.
  • – Sélectionnez «Du type « ordonné » vers le type « Unique » si voulez créer autant de variables qu’il y a de rangs possibles de réponses, chacune contenant la modalité choisie pour ce rang.
  1. Sélectionnez l’option de recodage suivant vos préférences :
  2. Cliquez sur « OK », puis à nouveau sur « OK ».

 

Transformer les recodages en questions

 

Vérifiez d’abord si votre enquête comporte des recodages. Cela dit, c’est forcément le cas si vous aviez des questions à réponses multiples et/ou ordonnées, et que vous les avez dichotomisées dans les étapes précédentes. Si vous voulez vérifier, procéder de la façon suivante :

  1. Dans la fenêtre « Enquêtes / Tables », cliquez avec le bouton droit de la souris sur la ligne de l’enquête à transférer de MODALISA vers SAS.
  2. Dans le menu qui apparaît, cliquez sur « Propriétés ».
  3. Dans les informations qui s’affichent, regardez le nombre de recodages.

Si le nombre de recodage est égal à 0, vous pouvez sauter cette étape et passer directement à la suivante, qui consiste à « transférer les données ».

Sinon, comme MODALISA n’exporte pas les « structures » des variables recodées, on va donc transformer les variables recodées en questions d’enquête, en procédant de la façon suivante :

  1. Dans la fenêtre « Enquêtes / Tables », sélectionnez l’enquête à transférer.
  2. Dans le menu « Fichier », sélectionnez « Créer une sous-enquête… ».
  3. Dans la fenêtre qui apparaît, sélectionnez l’option 2 : « Pour les questions formulaire et les recodages (Les recodages deviennent des questions formulaire) ».
  4. Dans la fenêtre suivante, sélectionnez l’option 2 : « Tout ou partie de la structure et des questionnaires (Les recodages deviennent des questions formulaire) ».
  5. Si vous aviez des questions à réponses multiples ou ordonnées que vous avez dichotomisées à l’étape précédente, vous pouvez les supprimer : dans ce cas, cochez la case « Sélection de questions et de recodages », puis sélectionner « Créer » dans la fenêtre qui apparaît. Dans la liste des variables, sélectionnez toutes les variables à conserver. Une façon simple de supprimer les questions à réponses multiples consiste à trier les variables selon leur type (en cliquant sur « Type » en haut de la colonne correspondante), à sélectionner toutes les variables (CTRL+A), puis à trouver dans la liste les questions à réponses multiples et à les désélectionner (CTRL+clic sur la première, puis MAJ+clic sur la dernière). Cliquez sur « OK », puis donnez un nom au groupe de questions (par exemple « export ») et cliquez sur « OK ».
  6. Cliquez sur « OK ».
  7. Donnez un nom à la copie de l’enquête, différent du nom de départ (par exemple en rajoutant « copie » à ce nom de départ), et cliquez sur « OK ».
  8. Une fois la copie terminée, cliquez sur « OK ».
  9. Sélectionnez la copie de l’enquête, puis dans le menu « Saisie », cliquez sur « Tout recompiler », puis sur « Compilation sans sauvegarde ».

C’est fait… Maintenant, pour pouvoir aussi transférer les recodages, il vous suffit d’appliquer ce qui suit à cette copie de l’enquête, et non à l’enquête de départ.

 

Transférer les données

 

Maintenant que les données sont correctement préparées, il faut les « sortir » de MODALISA en utilisant les commandes d’exportation.

 

Exporter les données depuis MODALISA

 

  1. Dans la fenêtre « Enquêtes / tables », sélectionnez l’enquête à transférer.
  2. Sélectionnez « Export ASCII » dans le menu « Fichier ».
  3. Cochez l’option « Questionnaires ».
  4. Cliquez sur « OK », puis à nouveau sur « OK », chaque fois on conservant les options choisies par défaut.
  5. Donnez un nom au fichier (par exemple « data »), sélectionnez un emplacement où l’enregistrer, et cliquez sur « Enregistrer ».

Importer tout de suite les données dans SAS ?

 

A ce stade, vous pouvez tout à fait essayer d’importer tout de suite dans SAS les données que vous venez d’exporter depuis MODALISA.

Attention !

Vous allez importer des données « brutes », sans dictionnaire des variables : les noms des variables seront sommaires (V1, V2, V3…) et des modalités des variables à réponse unique, il ne restera que leur numéro (1, 2, 3…). Si cela vous convient très bien pour travailler dans SAS (il y a des statisticiens qui arrivent à lire dans ce genre de données comme Neo arrive à lire dans la « matrice »…), ou pour une première exploration, alors vous pouvez vous contenter de l’étape suivante. Mais ce serait vraiment dommage…

Si vous voulez récupérer depuis MODALISA les intitulés longs des variables, et les libellés en clair des modalités, pour pouvoir travailler « confortablement » dans SAS, alors sautez l’étape ci-dessous, et passez directement à la partie : « Transférer le dictionnaire des variables ».

Pour importer immédiatement les données dans SAS, il suffit de procéder de la façon suivante :

  1. Démarrez SAS.
  2. Dans le menu « File », sélectionnez « Import Data… ».
  3. Cochez l’option « Standard Data Source », sélectionnez « Tab Delimited File (*.txt) » dans la liste déroulante, puis cliquez sur « Next ».
  4. Localisez et sélectionnez le fichier des données exportées depuis MODALISA (si vous avez suivi ma suggestion plus haut, il s’appelle « data.TXT »).
  5. Cliquez sur « Options », décochez l’option « Get variable names from first row », puis cliquez sur « OK ».
  6. Cliquez sur « Next ».
  7. Choisissez la librairie dans laquelle importer les données, et le nom que vous voulez attribuer aux données importées, puis cliquez sur « Finish ».

Ca y est vous avez vos données dans SAS, prêtes à être utilisées et analysées… ou presque : tout n’est pas parfait, il y a sûrement des erreurs, parce que le séparateur de décimales est la virgule dans MODALISA et le point dans SAS (attention du coup par exemple aux variables de redressement, certainement fausses), parce que SAS a attribué un format numérique à des variables qui sont en fait alphanumériques, et de ce fait a pu faire des erreurs en important leurs contenus (certaines seront signalées dans la fenêtre « Journal » de SAS), parce que surtout ces données sont « brutes », sans labels pour les noms des variables et sans formats pour les libellés des modalités.

Si tout cela ne vous gêne pas, vous pouvez vous arrêtez là… Mais si vous voulez retrouver dans SAS un peu du confort de MODALISA, et en particulier récupérer le « dictionnaire des variables », alors lisez et appliquez la suite…

 

Transférer le dictionnaire des variables dans SAS

 

Exporter la structure de l’enquête depuis MODALISA

 

  1. Démarrez MODALISA.
  2. Dans la fenêtre « Enquêtes / tables », sélectionnez l’enquête à transférer.
  3. Sélectionnez « Export ASCII » dans le menu « Fichier ».
  4. Cochez l’option « Structure de l’enquête ».
  5. Donnez un nom au fichier (par exemple « structure »), sélectionnez un emplacement où l’enregistrer, et cliquez sur « Enregistrer ».

 

Importer le dictionnaire des variables dans SAS

 

Le fichier obtenu à l’étape précédente est un fichier ASCII construit de la façon suivante. Chaque variable correspond à une ligne du fichier (les lignes sont séparées par des sauts de paragraphes) ; dans cette ligne, la variable est décrite par des champs séparés par des tabulations, qui contiennent les informations suivante :

 

Champ

Contenu

Description

1

Numéro

 

2

Code formulaire

Code du nom pour le formulaire (6 caractères maxi)

3

Nom

 

4

Intitulé long

 

5

Abrégé

Nom abrégé (4 caractères maxi)

 

6

0

Champ non utilisé

7

0

Champ non utilisé

8

Type

1 = réponse unique

2 = réponses multiples

3 = réponses ordonnées

4 = numérique

5 = texte libre

6 = date

9

Nbre de modalités

 

10

Nbre maxi de réponses autorisées pour les questions à réponses multiples ou ordonnées

ou

Nbre de décimales pour les questions numériques

Ou

Nbre maxi de caractères pour les questions texte

 

11

Borne inférieure pour les questions numériques

 

12

Borne supérieure pour les questions numériques

 

13 et suivantes

Modalités des questions fermées

Champ 13 = modalité 1

Champ 14 = modalité 2

etc.

 

L’opération consiste donc à extraire les informations de ces champs pour constituer d’une part un script SAS pour la création et l’affectation des labels (intitulés longs) des variables, et un script SAS pour la création et l’affectation des formats des variables.

Attention !

La description ci-dessus de l’organisation du fichier d’exportation des « structures » d’enquêtes de MODALISA, devrait inspirer les plus bricoleu.se.r.s d’entre vous : n’hésitez pas à me proposer vos trucs et vos programmes pour transférer des données et des dictionnaires de variables de MODALISA vers… votre outil d’analyse des données favoris !

Dans ce registre, je peux déjà vous signaler la solution proposée par Julien Barnier pour transférer vos enquêtes de MODALISA vers R, qu’il explique ici :

http://alea.fr.eu.org/j/rgrs_modalisa.html

Et tant que j’y suis, je vous signale aussi la macro SASTOPAJEK écrite par Olivier Godechot pour transférer des données de SAS vers le logiciel d’analyse de réseaux PAJEK. C’est ici :

http://olivier.godechot.free.fr/hoparticle.php?id_art=522

A vous de signaler dans les commentaires les autres outils existants pour transférer des données d’un logiciel à un autre…

Ici, plutôt que vous décrire la procédure en détail, on va faire plus simple et plus rapide : j’ai créé un fichier Word qu’il suffit simplement d’ouvrir pour générer automatiquement le script SAS qui va effectuer en quelques secondes tout le travail de transfert des données et du dictionnaire des variables.

Pour en savoir plus :

Comment ça marche ? En réalité, ce fichier Word contient une « macro » écrite en Visual Basic pour Word, qui s’exécute automatiquement à l’ouverture du fichier : cette macro génère un script SAS qui va faire tout le travail à votre place : la « macro » va ouvrir le fichier d’exportation de la structure au format TXT que vous avez créé précédemment, et le transformer en un script SAS qui va créera et appliquera les formats et les labels, puis elle va compléter ce script SAS pour importer les données à partir du fichier d’exportation des données au format TXT.

Pour commencer il faut donc télécharger le fichier Word « Modalisa2sas.doc » qui se trouve à l’adresse suivante :

http://quanti.hypotheses.org/files/2009/02/modalisa2sas.doc

Ensuite, procédez de la façon suivante :

  1. Ouvrez le fichier « modalisa2sas.doc ».
  2. Si un « avertissement de sécurité » concernant les macros s’affiche, cliquez sur « Activez les macros ».
  3. Si une fenêtre s’affiche avec le message « Les macros de ce projet sont désactivées… », cliquez sur « OK », puis dans le menu « Outils », sélectionnez « Options », et dans l’onglet « Sécurité », cliquez sur « Sécurité des macros » et sélectionnez le niveau de sécurité faible ou moyen. Cliquez deux fois sur « OK », quittez Word et recommencez à l’étape 1 ci-dessus.
  4. Cliquez sur « OK », puis sélectionnez le fichier TXT de la structure exporté depuis MODALISA. Attention : les fichiers créés par la macro seront stockés dans le répertoire où se trouve ce fichier.
  5. Quand le transfert de la structure est terminé, cliquez sur « OK », puis sélectionnez le fichier TXT des données exporté depuis MODALISA.
  6. Quand le transfert des données est terminé, cliquez sur « OK ».
  7. La « macro » contenu dans le fichier « Modalisa2sas.doc » a généré un fichier « data.csv » contenant les données prêtes à être importées, et un script SAS intitulé « modalisa2sas.sas ». Ces deux fichiers sont enregistrés dans le répertoire où se trouvait votre fichier ASCII de données exporté depuis MODALISA.
  8. Cliquez avec le bouton droit de la souris sur le fichier « modalisa2sas.sas », et sélectionnez « Submit » ; ou bien sélectionnez « Open with SAS » pour ouvrir le script dans une fenêtre « Editor » de SAS, puis exécutez-le.
  9. Le script a créé une librairie appelée « MODALISA », dans laquelle se trouve le fichier de données, appelé « data », et les formats des variables.

Atention !

L’exécution de la macro peut durer de plusieurs secondes à quelques minutes, en fonction de la taille de l’enquête. Pour information, avec mon ordinateur portable un peu ancien, le transfert d’une enquête de 1800 individus et 350 questions a nécessité environ 4 minutes… Donc ne vous inquiétez pas si c’est lent : c’est normal…

D’autre part, je vous signale que toutes les variables de la base de données obtenue dans SAS après le transfert sont des variables alphanumériques, qui contiennent donc des caractères. Cette solution est généralement préconisée pour réduire la taille des fichiers de données et augmenter les vitesses de traitement. Si vous souhaitez transformer certaines variables en variables numériques, en fonction des analyses que vous voulez en faire, il vous suffit d’écrire un script SAS qui effectue cette transformation. Par exemple, le script ci-dessous copie la table « old » dans une table « new » en transformant la variable alphanumérique « TAILLEalpha » en la variable numérique « TAILLEnum ».

data new ; set old ; TAILLEnum = input(TAILLEalpha,best.); run ;

Voilà, normalement tout s’est bien passé (dites-moi si ce n’est pas le cas…), et vous avez désormais votre ancienne enquête dans SAS, à votre plus grand bonheur ! Evidemment, celles et ceux qui voulaient transférer leurs enquête de Sphinx vers R ou de Modalisa vers SPSS restent un peu sur leur fin, de même que celles et ceux qui préféreraient une macro SAS plutôt qu’un macro Word pour faire le travail… Alors à vos contributions ! Mais en attendant, vous avez toujours la possibilité d’utiliser un logiciel comme STAT/TRANSFER (malheureusement payant) pour transférer au moins les données d’un logiciel à un autre, sinon les dictionnaires de variables.

De mon côté, je réfléchis à une solution pour transférer aussi simplement les enquêtes de LimeSurvey vers SAS…

Liens utiles

 

Macros pour Word 2003
http://office.microsoft.com/fr-fr/word/CH060840311036.aspx

Modalisa
http://www.modalisa.com

SAS France
http://www.sas.com/offices/europe/france/

STAT/TRANSFER
http://www.stattransfer.com

Pour aller plus loin…

 

Voici le script de la macro « modalisa2sas » pour Word 2003, pour celles et ceux qui veulent bricoler : l’adapter pour Word 2007, pour transférer des données entre d’autres logiciels… Faites-nous profiter de vos inventions !
http://quanti.hypotheses.org/files/2009/02/modalisa2sas-le-script.doc

 

 


Vous aimerez aussi...

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *