UNIVERSIT DU QUBEC MONTRAL - Laboratoire d'études de la ...
UNIVERSIT DU QUBEC MONTRAL - Laboratoire d'études de la ...
UNIVERSIT DU QUBEC MONTRAL - Laboratoire d'études de la ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
CENTRE INTER<strong>UNIVERSIT</strong>AIRE QUÉBÉCOIS DE<br />
STATISTIQUES SOCIALES<br />
Institut national <strong>de</strong> <strong>la</strong> recherche scientifique<br />
Université du Québec à Montréal<br />
Atelier<br />
Introduction à Stata<br />
par<br />
Nicho<strong>la</strong>s Labelle<br />
Benoît-Paul Hébert<br />
Benoît Lap<strong>la</strong>nte<br />
Juin 2007
Table <strong>de</strong>s matières<br />
1. Introduction..................................................................................................................... 1<br />
2. Initiation à Stata .............................................................................................................. 2<br />
2.1 Comprendre l’environnement <strong>de</strong> Stata 9 .................................................................. 2<br />
2.2 Préparation <strong>de</strong> Stata à une séance <strong>de</strong> travail ............................................................. 3<br />
2.3 Ouvrir une base <strong>de</strong> données ...................................................................................... 3<br />
2.4 Les fichiers lus par Stata........................................................................................... 3<br />
2.5 La syntaxe <strong>de</strong> base d’une instruction........................................................................ 4<br />
2.6 Un exemple : l’instruction –summarize–.................................................................. 5<br />
2.7 Poser <strong>de</strong>s conditions à une instruction...................................................................... 5<br />
2.8 Pondération ............................................................................................................... 8<br />
2.9 Les programmes (do-files)........................................................................................ 9<br />
2.10 Commentaires ....................................................................................................... 10<br />
2.11 Conservation <strong>de</strong>s données en mémoire................................................................. 11<br />
2.12 Création d’un fichier <strong>de</strong> sortie (log file) ............................................................... 11<br />
2.13 Utiliser le dictionnaire <strong>de</strong>s variables..................................................................... 12<br />
3. Explorer les données..................................................................................................... 13<br />
3.1 Voir les données ...................................................................................................... 13<br />
3.2 Décrire les données................................................................................................. 13<br />
4. Manipu<strong>la</strong>tion <strong>de</strong>s données I .......................................................................................... 15<br />
4.1 Création et transformation d’une variable .............................................................. 15<br />
4.2 Noms et <strong>de</strong>scripteurs............................................................................................... 21<br />
4.3 Création <strong>de</strong> variables dichotomiques...................................................................... 22<br />
5. Tableaux <strong>de</strong> fréquence, mesures d’association et visualisation <strong>de</strong> données ................. 23<br />
5.1 Les tableaux <strong>de</strong> fréquence....................................................................................... 23<br />
5.2 Corré<strong>la</strong>tions et autres mesures d’association .......................................................... 25<br />
5.3 Visualisation <strong>de</strong> données......................................................................................... 27<br />
6. Combiner <strong>de</strong>s bases <strong>de</strong> données.................................................................................... 31<br />
6.1 Concaténation <strong>de</strong> bases <strong>de</strong> données ........................................................................ 31<br />
6.2 Fusion <strong>de</strong> bases <strong>de</strong> données .................................................................................... 33<br />
7. Manipu<strong>la</strong>tion <strong>de</strong>s données II......................................................................................... 34<br />
7.1 Sélectionner <strong>de</strong>s variables ou <strong>de</strong>s observations ...................................................... 34<br />
7.2 Relier <strong>de</strong>s observations ........................................................................................... 35<br />
7.3 Répéter <strong>de</strong>s instructions .......................................................................................... 36<br />
7.4 Remo<strong>de</strong>ler une base <strong>de</strong> données ............................................................................. 37<br />
8. Lire <strong>de</strong>s bases <strong>de</strong> données brutes .................................................................................. 38<br />
8.1 Les fichiers dont les valeurs sont délimitées par <strong>de</strong>s tabu<strong>la</strong>tions ou <strong>de</strong>s virgules .. 39<br />
8.2 Les fichiers dont les valeurs sont délimitées par <strong>de</strong>s espaces................................. 39<br />
8.3 Les fichiers en format fixe ...................................................................................... 40<br />
8.4 Un exemple en format fixe à partir d’un fichier SPSS ........................................... 40<br />
Annexe 1 – Exemple d’un fichier fixe à partir d’un fichier SPSS.................................... 42<br />
Annexe 2 – Exemple <strong>de</strong> fusion d’un fichier ..................................................................... 45<br />
BIBLIOGRAPHIE............................................................................................................ 46<br />
OUVRAGES D’INTRO<strong>DU</strong>CTION À STATA................................................................. 46
1. Introduction<br />
Ce gui<strong>de</strong> vise à ai<strong>de</strong>r les participants à l’atelier Introduction à Stata à examiner, préparer<br />
et manipuler d’importantes bases <strong>de</strong> données à l’ai<strong>de</strong> du logiciel Stata.<br />
Ce document servira <strong>de</strong> support aux 4 séances d’atelier ayant lieu les vendredi 11 et 18<br />
janvier 2008, <strong>de</strong> 9h30 à 12h30 et <strong>de</strong> 14h à 17h. L’évolution du contenu suit<br />
rigoureusement le document en ang<strong>la</strong>is Introduction to Stata préparé par Benoît-Paul<br />
Hébert (CIED / CÉETUM / CIQSS 1 ) pour un atelier du même genre à l’été 2003.<br />
StataCorp a mis <strong>la</strong> première version <strong>de</strong> Stata sur le marché en janvier 1985. Ce<br />
programme <strong>de</strong>meure <strong>de</strong>puis un puissant outil d’analyse. Sa capacité <strong>de</strong> gestion <strong>de</strong> gros<br />
fichiers <strong>de</strong> données, son niveau d’automatisation <strong>de</strong> même que sa fonction d’ai<strong>de</strong> très<br />
évoluée constituent trois <strong>de</strong> ses principaux avantages.<br />
Il existe une infinité <strong>de</strong> sites et <strong>de</strong> documents traitant <strong>de</strong> Stata. Je vous en conseille <strong>de</strong>ux<br />
plus particulièrement<br />
- Stata Tutorial <strong>de</strong> l’Université Princeton<br />
(http://www.princeton.edu/~erp/stata/main.html);<br />
- Le Gui<strong>de</strong> d’économétrie appliquée pour Stata par Estelle Ouellet, août 2005<br />
(http://www.sceco.umontreal.ca/bibliotheque/gui<strong>de</strong>s/Gui<strong>de</strong>EconometrieStata.pdf).<br />
Enfin, les fonctions Help\Search et Help\Stata Command sont indispensables pour les<br />
utilisateurs avancés. La fonction d’ai<strong>de</strong> sera traitée plus loin.<br />
1 CIED, Centre interuniversitaire d’étu<strong>de</strong>s démographiques; CEETUM, Centre d’étu<strong>de</strong>s ethniques <strong>de</strong>s<br />
universités montréa<strong>la</strong>ises. L’école d’été du CIQSS succè<strong>de</strong> à une école d’été mise sur pied à l’origine par<br />
<strong>de</strong>s professeurs <strong>de</strong> l’INRS associés au CIED et un professeur du département <strong>de</strong> sociologie <strong>de</strong> l’Université<br />
<strong>de</strong> Montréal associé au CEETUM.<br />
1
2. Initiation à Stata<br />
2.1 Comprendre l’environnement <strong>de</strong> Stata 9<br />
L’environnement <strong>de</strong> Stata est constitué <strong>de</strong> fenêtres qui possè<strong>de</strong>nt chacune leur propre<br />
fonction.<br />
1. La fenêtre Results (Ctrl+1) affiche les calculs <strong>de</strong> Stata, le plus souvent sous<br />
forme <strong>de</strong> tableaux ou <strong>de</strong> messages d’erreur.<br />
2. La fenêtre Viewer (Ctrl+3) sert principalement à visionner les fichiers d’ai<strong>de</strong> et<br />
les fichiers .log. Les fichiers .log servent à conserver les résultats qui s’affichent<br />
dans <strong>la</strong> fenêtre Results. Vous apprendrez plus tard à les générer.<br />
3. La fenêtre Command (Ctrl+4) n’est qu’une ligne pour inscrire les instructions. Les<br />
touches Page Sup et Page Inf permettent d’afficher les lignes d’instructions<br />
soumises <strong>de</strong>puis le début <strong>de</strong> <strong>la</strong> session <strong>de</strong> travail.<br />
4. La fenêtre Review (Ctrl+5) conserve les lignes d’instructions soumises <strong>de</strong>puis le<br />
début <strong>de</strong> <strong>la</strong> session et permet les répéter sans avoir à les écrire <strong>de</strong> nouveau.<br />
5. La fenêtre Variables (Ctrl+6) affiche l’ensemble <strong>de</strong>s variables contenues dans le<br />
fichier.dta qui se trouve en mémoire. Cliquer sur une variable <strong>la</strong> fait s’afficher<br />
automatiquement dans <strong>la</strong> fenêtre Command.<br />
6. La fenêtre Data Editor (Ctrl+7) affiche <strong>la</strong> matrice <strong>de</strong>s données qui se trouve en<br />
mémoire, où toutes les variables p<strong>la</strong>cées horizontalement et toutes les observations<br />
le long <strong>de</strong> l’axe vertical. Elle permet <strong>de</strong> visualiser les données, <strong>de</strong> les modifier et<br />
aussi <strong>de</strong> les copier dans un chiffrier comme Excel, avec Ctrl+C et Ctrl+V, pour faire<br />
<strong>de</strong>s tableaux plus facilement. Le Data Browser ne permet pas <strong>de</strong> modifier les<br />
données, mais seulement <strong>de</strong> les visionner.<br />
7. La fenêtre Do-file Editor (Ctrl+8) fait apparaître une page servant à créer et<br />
modifier un do-file, c’est-à-dire un fichier regroupant <strong>de</strong>s instructions qui peuvent<br />
être exécutées en différé automatiquement. Vous apprendrez sous peu à écrire <strong>de</strong><br />
tels fichiers.<br />
8. La fenêtre Graph affiche les graphiques générés par Stata.<br />
Les fenêtres Command et Results sont toujours à l’écran alors que les autres peuvent être<br />
ouvertes ou fermées au besoin.<br />
2
2.2 Préparation <strong>de</strong> Stata à une séance <strong>de</strong> travail<br />
Au démarrage <strong>de</strong> Stata, <strong>de</strong>ux fenêtres s’affichent : Stata Results et Stata Command.<br />
Au début <strong>de</strong> chaque séance, Stata fixe <strong>la</strong> taille <strong>de</strong> <strong>la</strong> mémoire qu’il utilise; par défaut,<br />
cette taille est <strong>de</strong> 1 000 kilooctets, ce qui est très peu. Au début <strong>de</strong> chaque séance, il faut<br />
déc<strong>la</strong>rer <strong>la</strong> taille <strong>de</strong> <strong>la</strong> mémoire que l’on veut permettre à Stata d’utiliser. Ceci se fait au<br />
moyen <strong>de</strong> l’instruction set mem :<br />
set mem 3000<br />
Ici, on fixe <strong>la</strong> mémoire à 3 000 k, ce qui est toujours peu. Pour fixer <strong>la</strong> mémoire à 300<br />
mégaoctets, par exemple, on écrit :<br />
set mem 300m<br />
Au début <strong>de</strong> chaque programme, il faut également songer à vi<strong>de</strong>r <strong>la</strong> mémoire si le<br />
programme prévoit <strong>la</strong> lecture <strong>de</strong> nouvelles données. Cette opération doit être faite avant<br />
<strong>de</strong> fixer <strong>la</strong> taille <strong>de</strong> <strong>la</strong> mémoire. Au début d’un programme, on trouve donc couramment<br />
<strong>de</strong>ux instructions comme celles qui suivent :<br />
clear<br />
set mem 300m<br />
2.3 Ouvrir une base <strong>de</strong> données<br />
Pour ouvrir une base <strong>de</strong> données Stata (généralement, un fichier dont l’extension est<br />
.dta), il suffit :<br />
- <strong>de</strong> sélectionner File/Open (ou Ctrl+O);<br />
- d’ouvrir le dossier où se trouve le fichier Stata, soit sur un disque compact, un<br />
réseau ou sur le disque dur;<br />
- d’aller cliquer sur le fichier pertinent, ici 2001famille24.dta<br />
Vous <strong>de</strong>vriez voir apparaître dans <strong>la</strong> fenêtre Results quelque chose comme:<br />
use "C:\data\2001famille24.dta", clear<br />
Autrement dit, c’est <strong>la</strong> ligne <strong>de</strong> instruction Stata qu’il faudrait écrire manuellement pour<br />
accomplir cette action.<br />
use "[path\]filename”, [clear]<br />
Par exemple, use "C:\Program Files\Stata9\auto.dta", clear.<br />
Le chemin doit être fourni seulement si <strong>la</strong> base <strong>de</strong> données n’est pas dans le répertoire <strong>de</strong><br />
travail.<br />
Pour changer le répertoire <strong>de</strong> travail, il suffit d’inscrire cd "path\". Par exemple, cd<br />
c:\data.<br />
L’option clear nettoie <strong>la</strong> mémoire avant d’ouvrir le fichier et l’extension .dta est par<br />
défaut.<br />
2.4 Les fichiers lus par Stata<br />
Un point et une extension <strong>de</strong> généralement 3 lettres indiquant au système d’exploitation<br />
quel type <strong>de</strong> programme ouvrir pour <strong>la</strong> lecture suivent toujours le nom d’un fichier.<br />
3
Par exemple, .doc désigne un fichier Word et .xls, un fichier Excel.<br />
Pour Stata, on compte diverses extensions :<br />
.ado Un programme écrit dans le <strong>la</strong>ngage <strong>de</strong> programmation <strong>de</strong> Stata. On peut<br />
programmer une nouvelle instruction en utilisant ce <strong>la</strong>ngage et conserver le<br />
programme dans un fichier portant cette extension. La plupart <strong>de</strong>s instructions<br />
<strong>de</strong> Stata sont en fait <strong>de</strong>s programmes conservés dans <strong>de</strong>s fichiers qui portent<br />
l’extension .ado<br />
.do Un fichier .do contient <strong>de</strong>s lignes d’instructions les unes à <strong>la</strong> suite <strong>de</strong>s autres<br />
qu’on peut ensuite exécuter à l’ai<strong>de</strong> d’un seul clic.<br />
.dta Le format <strong>de</strong>s bases <strong>de</strong> données.<br />
.gph Un fichier sauvegardant un graphique <strong>de</strong> Stata<br />
.log Un fichier .log sert à conserver ce qui défile dans <strong>la</strong> fenêtre Results.<br />
.smcl Un fichier Stata Markup and Control Language paraît mieux graphiquement<br />
lorsqu’il est lu par le Stata Viewer.<br />
Les fichiers .ado et .smcl sont <strong>de</strong>s fichiers <strong>de</strong> texte; ils peuvent être lus, et même<br />
édités, avec un éditeur <strong>de</strong> texte comme l’éditeur <strong>de</strong> Stata ou ConTEXT. On déconseille<br />
habituellement <strong>de</strong> les modifier avec un traitement <strong>de</strong> texte comme Word.<br />
2.5 La syntaxe <strong>de</strong> base d’une instruction<br />
command [varlist] [if exp] [in range] [wghtype=wghtvar] [,<br />
options]<br />
Nous donnerons <strong>de</strong>s exemples plus tard, mais nous pouvons pour l’instant éc<strong>la</strong>ircir<br />
quelques points.<br />
- Les éléments entre crochets sont optionnels;<br />
- command est le nom ou l’abréviation <strong>de</strong> l’instruction. Par exemple, nous verrons<br />
plus tard l’instruction summarize;<br />
- varlist est une liste <strong>de</strong> variables séparées par une espace;<br />
- if exp sert à inscrire une liste <strong>de</strong> conditions où exp indique les conditions<br />
logiques à satisfaire. Par exemple, if var1
2.6 Un exemple : l’instruction –summarize–<br />
La fonction summarize permet d’obtenir <strong>de</strong> l’information sur <strong>de</strong>s variables continues.<br />
summarize [varlist] [weight] [if exp] [in range] [,<br />
[<strong>de</strong>tail|meanonly] format]<br />
Ici, les lettres « s » et « u » sont soulignées. Tant que l’instruction contient ces <strong>de</strong>ux<br />
lettres, Stata <strong>la</strong> comprendra. Ainsi, summar équivaut à sum qui équivaut à su.<br />
Par exemple, on pourrait analyser le revenu total <strong>de</strong> <strong>la</strong> famille <strong>de</strong> recensement (TOTALC):<br />
sum TOTALC<br />
Variable | Obs Mean Std. Dev. Min Max<br />
-------------+--------------------------------------------------------<br />
TOTALC | 871 69841.61 478185.6 0 9999999<br />
On peut aussi inscrire une suite <strong>de</strong> variables:<br />
sum TOTALC WAGESC SELFIC CHDBNC<br />
Variable | Obs Mean Std. Dev. Min Max<br />
-------------+--------------------------------------------------------<br />
TOTALC | 871 69841.61 478185.6 0 9999999<br />
WAGESC | 871 55980.01 478808.1 0 9999999<br />
SELFIC | 871 25730.16 479011.6 -22614 9999999<br />
ou même mettre <strong>de</strong>s conditions:<br />
sum TOTALC if CFSTRUC==1 & NUCHILD>=2 & TOTALC
L’opérateur logique « et » ( & ) sert entre autres à établir <strong>de</strong>s bornes. Par exemple :<br />
sum TOTALC if CFSIZE>=3 & CFSIZE=3 & CFSIZE<br />
logarithme naturel <strong>de</strong> x log(x) Σ x sum(x)<br />
plus petit ou égal =<br />
Par exemple (Hébert, 2003, p. 19),<br />
a < b a est inférieur à b<br />
a > b a est supérieur à b<br />
a >= b a est supérieur ou égal à b<br />
a
On peut aussi utiliser les opérateurs logiques « et » ( & ) et « ou » ( | ) (Hébert, 2003, p.<br />
19).<br />
if a >=b & c f) Si a n’est pas égal au point (qui<br />
représente une valeur manquante) ou<br />
[si c est égal à d et en plus e est<br />
strictement supérieur à f ]<br />
Pour avoir l’âge moyen <strong>de</strong> chaque province, il faudrait exécuter l’instruction summarize<br />
pour chacune d’entre elle. Stata offre un certain nombre d’instructions spéciales, les<br />
préfixes, qui modifient l’action d’autres instructions. Deux <strong>de</strong> ces préfixes permettent<br />
d’exécuter une instruction en fonction <strong>de</strong>s valeurs d’une autre variable.<br />
by varlist [, sort] : command<br />
bysort varlist : command<br />
Par exemple, pour avoir l’âge moyen pour chacune <strong>de</strong>s provinces, il faudrait écrire :<br />
bysort pvreg25 : sum ecage26 if ecage26 pvreg25 = 10<br />
Variable | Obs Mean Std. Dev. Min Max<br />
-------------+--------------------------------------------------------<br />
ecage26 | 2419 44.65854 17.36658 16 80<br />
-----------------------------------------------------------------------<br />
-> pvreg25 = 11<br />
Variable | Obs Mean Std. Dev. Min Max<br />
-------------+--------------------------------------------------------<br />
ecage26 | 1588 44.60013 17.72166 16 80<br />
-----------------------------------------------------------------------<br />
-> pvreg25 = 12<br />
Variable | Obs Mean Std. Dev. Min Max<br />
-------------+--------------------------------------------------------<br />
ecage26 | 3787 46.67494 18.11865 16 80<br />
[ETC…]<br />
Les instructions sort et gsort c<strong>la</strong>ssent les observations en ordre croissant selon les<br />
valeurs d’une ou plusieurs variables. L’instruction gsort permet <strong>de</strong> les c<strong>la</strong>sser en ordre<br />
décroissant si le signe – précè<strong>de</strong> <strong>la</strong> variable <strong>de</strong> l’instruction gsort.<br />
sort varlist<br />
gsort [-] varname1 [[-] varname]<br />
Le point ( . ), qui représente les valeurs manquantes numériques, est p<strong>la</strong>cé en <strong>de</strong>rnier dans<br />
les variables numériques; <strong>la</strong> chaîne vi<strong>de</strong>, qui représente <strong>la</strong> valeur manquante<br />
alphanumérique, est p<strong>la</strong>cée en premier pour les variables alphanumériques — aussi<br />
nommées chaînes <strong>de</strong> caractères (string variable).<br />
7
2.8 Pondération<br />
L’Ontario est plus peuplée que l’Île-du-Prince-Édouard. Par ailleurs, <strong>la</strong> précision d’un<br />
estimé, par exemple l’erreur-type d’une moyenne, varie en raison inverse du carré du<br />
nombre <strong>de</strong>s unités à partir <strong>de</strong> <strong>la</strong>quelle on calcule cet estimé. Il s’ensuit qu’augmenter un<br />
peu <strong>la</strong> taille d’un petit échantillon augmente beaucoup <strong>la</strong> précision <strong>de</strong>s estimés qu’il sert à<br />
calculer alors qu’augmenter, même <strong>de</strong> beaucoup, <strong>la</strong> taille d’un échantillon déjà grand<br />
n’augmente que peu <strong>la</strong> précision <strong>de</strong>s estimés qu’il sert à calculer.<br />
Pour cette raison, lorsqu’on réalise un sondage au Canada, il est habituel <strong>de</strong> construire<br />
l’échantillon en attribuant proportionnellement moins <strong>de</strong> répondants aux provinces les<br />
plus peuplées et proportionnellement plus <strong>de</strong> répondants aux provinces les moins<br />
peuplées. Ceci permet <strong>de</strong> calculer <strong>de</strong>s estimés qui ont une précision raisonnable même<br />
pour l’Île-du-Prince-Édouard sans que cette forme <strong>de</strong> péréquation ne diminue beaucoup<br />
<strong>la</strong> précision <strong>de</strong>s estimés calculés pour l’Ontario.<br />
Ce<strong>la</strong> dit, pour calculer les estimés eux-mêmes — c.-à-d. <strong>la</strong> moyenne elle-même plutôt<br />
que son erreur-type—, et surtout à l’échelle du Canada tout entier, il faut que les<br />
informations recueillies auprès <strong>de</strong>s individus comptent en fonction <strong>de</strong> leur importance<br />
dans <strong>la</strong> popu<strong>la</strong>tion et non pas en fonction <strong>de</strong> leur importance dans l’échantillon. On résout<br />
ce problème en associant à chaque individu une valeur, que l’on nomme son « poids » ou<br />
son « coefficient <strong>de</strong> pondération », qui représente l’importance <strong>de</strong> cet individu dans <strong>la</strong><br />
popu<strong>la</strong>tion et dont on se sert pour calculer les estimés.<br />
Stata permet d’utiliser différents type <strong>de</strong> poids, dont certains correspon<strong>de</strong>nt à <strong>de</strong>s types <strong>de</strong><br />
données qu’on rencontre peu dans <strong>la</strong> recherche en sciences sociales. La forme <strong>de</strong> poids <strong>la</strong><br />
plus courante en sciences sociales est le poids d’échantillonnage, que nous venons <strong>de</strong><br />
décrire. Stata connaît ces poids sous le nom <strong>de</strong> « probability weights »; on les désigne au<br />
moyen <strong>de</strong> l’option pweights ou <strong>de</strong> son abréviation pw, qui sont toujours p<strong>la</strong>cées entre<br />
crochets.<br />
Les enquêtes <strong>de</strong> Statistique Canada utilisent toutes <strong>de</strong>s p<strong>la</strong>ns <strong>de</strong> sondage complexes qui<br />
exigent que l’on utilise <strong>de</strong>s poids pour obtenir <strong>de</strong>s estimés qui décrivent correctement <strong>la</strong><br />
popu<strong>la</strong>tion. L’usage <strong>de</strong> tels p<strong>la</strong>ns <strong>de</strong> sondage exige également que l’on utilise une<br />
approche spéciale pour calculer les erreurs-types <strong>de</strong>s estimés. Stata permet d’utiliser<br />
différentes approches pour calculer <strong>de</strong>s erreurs-types correctes lorsqu’on utilise <strong>de</strong>s<br />
données obtenues au moyen d’un p<strong>la</strong>n <strong>de</strong> sondage complexe. Règle générale, ceci se fait<br />
en décrivant les caractéristiques du p<strong>la</strong>n <strong>de</strong> sondage au moyen <strong>de</strong> l’instruction svyset<br />
puis en p<strong>la</strong>çant le préfixe svy <strong>de</strong>vant les instructions <strong>de</strong> Stata qui permettent <strong>de</strong> calculer<br />
<strong>de</strong>s estimés simples, comme <strong>de</strong>s moyennes et <strong>de</strong>s proportions, ou plus avancées, comme<br />
<strong>de</strong>s coefficients <strong>de</strong> régression.<br />
L’usage <strong>de</strong>s poids et <strong>de</strong>s approches qui permettent <strong>de</strong> calculer correctement les erreurstypes<br />
dépasse le cadre <strong>de</strong> cet atelier qui est une introduction au logiciel et non un cours <strong>de</strong><br />
statistique ou <strong>de</strong> métho<strong>de</strong>s quantitatives. Pour cette raison, il est important <strong>de</strong> comprendre<br />
que les instructions que l’on voit dans cet atelier permettent d’examiner les données, <strong>de</strong><br />
les transformer et <strong>de</strong> les préparer pour <strong>de</strong>s analyses, mais ne permettent pas <strong>de</strong> réaliser<br />
<strong>de</strong>s calculs dont les résultats soient généralisables à <strong>la</strong> popu<strong>la</strong>tion.<br />
8
2.9 Les programmes (do-files)<br />
Sous Stata, on peut travailler <strong>de</strong> manière interactive (interactive mo<strong>de</strong>) ou différée (batch<br />
mo<strong>de</strong>). On travaille <strong>de</strong> manière interactive lorsqu’on écrit les instructions une à une dans<br />
<strong>la</strong> fenêtre Command.<br />
On travaille <strong>de</strong> manière interactive pour examiner ou explorer les données, vérifier<br />
qu’une transformation donne bien le résultat que l’on veut qu’elle donne et, plus<br />
généralement, lorsque les opérations que l’on effectue ne sont pas définitives. Lorsqu’on<br />
effectue <strong>de</strong>s opérations qui doivent mener à <strong>de</strong>s transformations importantes <strong>de</strong>s données<br />
ou produire <strong>de</strong>s résultats <strong>de</strong>stinés à <strong>la</strong> publication, il est impératif d’écrire l’ensemble <strong>de</strong>s<br />
instructions nécessaires pour obtenir le résultat voulu dans un fichier qui peut être<br />
exécuté en entier en une seule fois et <strong>de</strong> manière autonome. Cette manière <strong>de</strong> précé<strong>de</strong>r est<br />
<strong>la</strong> seule qui permette à l’usager et à autrui (ses pairs, son directeur <strong>de</strong> recherche, son<br />
patron, le personnel qui peut être appelé à le dépanner) <strong>de</strong> s’assurer <strong>de</strong> <strong>la</strong> cohérence <strong>de</strong>s<br />
opérations, <strong>de</strong> conserver une trace exacte <strong>de</strong>s opérations qui ont mené à un résultat donné,<br />
<strong>de</strong> produire ce résultat si besoin est et d’apporter les corrections nécessaires sans avoir à<br />
tout réinventer lorsqu’on découvre une erreur.<br />
Sous Stata, les fichiers qui contiennent <strong>de</strong>s suites d’instructions doivent porter l’extension<br />
.do pour que le logiciel les reconnaisse comme tels. L’usage fait que l’on nomme dofiles<br />
les fichiers d’instructions <strong>de</strong>stinés à être exécutés en différé par Stata. On peut écrire<br />
ces fichiers d’instructions avec un éditeur <strong>de</strong> texte, comme l’éditeur ConTEXT qui est<br />
installé à l’antenne UQAM/INRS du CIQSS, ou avec l’éditeur <strong>de</strong> texte <strong>de</strong> Stata, qui se<br />
nomme Do-file editor. Il est fortement déconseillé d’écrire un fichier <strong>de</strong> ce genre avec un<br />
traitement <strong>de</strong> texte.<br />
On ouvre l’éditeur <strong>de</strong> programme <strong>de</strong> Stata en cliquant sur le bouton New Do-file Editor.<br />
On écrit le programme en inscrivant les instructions les unes au-<strong>de</strong>ssous <strong>de</strong>s autres, et en<br />
terminant chacune en appuyant sur touche <strong>la</strong> Entrée. Pour que Stata exécute les<br />
instructions, cliquez sur l’icône Do current file . On peut aussi utiliser l’instruction do<br />
"[path\]filename.do" [, nostop].<br />
9
On peut aussi inscrire doedit pour ouvrir l’éditeur <strong>de</strong> do-file dans <strong>la</strong> fenêtre Command.<br />
L’option nostop <strong>la</strong>isse Stata continuer même si une erreur se produit.<br />
Par exemple, inscrivez et exécutez par <strong>la</strong> suite :<br />
clear<br />
set mem 300m<br />
use "2001famille24.dta", clear<br />
Pour sauvegar<strong>de</strong>r ou ouvrir un do-file, il faut simplement passer par <strong>la</strong> fenêtre Do-file<br />
Editor et sélectionner File/Save (Ctrl+S) ou File/Open (Ctrl+O) selon le cas. L’extension<br />
du fichier sera .do.<br />
Astuce :<br />
Lorsque vous aurez un do-file volumineux, si vous sélectionnez une partie du texte dans<br />
<strong>la</strong> fenêtre Do-file Editor et cliquez sur Do current file, Stata n’exécutera que les<br />
instructions surlignées.<br />
Conseil :<br />
Dès que <strong>la</strong> tâche dépasse quelques lignes, il <strong>de</strong>vient préférable d’utiliser un éditeur <strong>de</strong><br />
programmes comme ConTEXT plutôt que l’éditeur <strong>de</strong> Stata. Les éditeurs <strong>de</strong><br />
programmes permettent généralement d’afficher les différentes parties <strong>de</strong>s instructions<br />
dans <strong>de</strong>s couleurs différentes selon <strong>la</strong> nature <strong>de</strong> l’instruction et <strong>de</strong> chacune <strong>de</strong> ces parties.<br />
Ceci permet <strong>de</strong> repérer rapi<strong>de</strong>ment les parenthèses et les guillemets oubliés ou en trop,<br />
ce que l’éditeur <strong>de</strong> Stata ne permet pas et les traitements <strong>de</strong> texte non plus. Les éditeurs<br />
<strong>de</strong> programmes possè<strong>de</strong>nt également <strong>de</strong>s fonctions utiles, comme <strong>la</strong> sélection <strong>de</strong> blocs<br />
<strong>de</strong> <strong>la</strong>rgeur arbitraire, ce que ne permet pas l’éditeur <strong>de</strong> Stata et encore moins les<br />
traitements <strong>de</strong> texte.<br />
Astuce :<br />
#<strong>de</strong>limit { ; | cr }<br />
En inscrivant « #<strong>de</strong>limit ; », toutes les instructions doivent se terminer par « ; ».<br />
Cette instruction est utile pour les longues listes d’instructions (voir l’annexe 1 pour un<br />
exemple). Pour revenir au mo<strong>de</strong> normal, il suffit <strong>de</strong> taper « <strong>de</strong>limit cr ».<br />
2.10 Commentaires<br />
Une fois un programme écrit, on oublie rapi<strong>de</strong>ment les raisons qui ont motivé le choix et<br />
l’ordre <strong>de</strong>s instructions qui le constituent. Pour cette raison, et aussi pour permettre aux<br />
personnes avec lesquelles on est susceptible <strong>de</strong> partager les programmes que l’on écrit —<br />
directeur <strong>de</strong> recherche, collègues d’une équipe <strong>de</strong> recherche — il est nécessaire<br />
d’expliquer le but et le fonctionnement et commenter les instructions ou blocs<br />
d’instructions qui le constituent.<br />
Stata offre <strong>de</strong>ux manières d’ajouter <strong>de</strong>s commentaires à un programme.<br />
La première consiste à p<strong>la</strong>cer un astérisque (*) au début <strong>de</strong> <strong>la</strong> ligne indique au logiciel<br />
qu’il ne doit pas s’occuper <strong>de</strong> ce qui est écrit sur cette ligne. Cette manière permet, par<br />
exemple, <strong>de</strong> p<strong>la</strong>cer un titre court au début <strong>de</strong> chaque section du programme ou une<br />
explication courte avant ou après une instruction.<br />
10
L’autre manière consiste à marquer le début du commentaire par une barre oblique suivie<br />
d’un astérisque (/*) et <strong>de</strong> marquer <strong>la</strong> foin du commentaire par un astérisque suivi d’une<br />
barre oblique (*/). Cette manière permet d’inscrire un commentaire très court au milieu<br />
ou à <strong>la</strong> fin d’une ligne d’instruction. Elle permet également d’ajouter <strong>de</strong>s commentaires<br />
plus longs qui occupent plusieurs lignes : tout ce qui est compris entre <strong>la</strong> marque du début<br />
et <strong>la</strong> marque <strong>de</strong> <strong>la</strong> fin du commentaire est ignoré par le logiciel, qui se contente <strong>de</strong> le<br />
recopier dans <strong>la</strong> fenêtre Results et dans le fichier .log.<br />
* Ceci est un commentaire. Stata le recopie sans l’interpréter.<br />
tab var1, missing no<strong>la</strong>bel /* Ceci est aussi un commentaire. */<br />
/* Ceci est également un commentaire,<br />
volontairement écrit sur plus d’une ligne. */<br />
2.11 Conservation <strong>de</strong>s données en mémoire<br />
Il arrive parfois que l’on veuille transformer les données en mémoire <strong>de</strong> manière<br />
temporaire. Les instructions preserve et restore permettent <strong>de</strong> faire ceci <strong>de</strong> manière<br />
très simple, sans avoir à sauvegar<strong>de</strong>r les données en mémoire dans un fichier.<br />
Taper preserve ordonne à Stata <strong>de</strong> copier les données en mémoire, dans l’état où elles<br />
sont à ce moment, dans un espace réservé du disque dur. Taper restore efface les<br />
données en mémoire et les remp<strong>la</strong>ce par les données conservées sur le disque dur par <strong>la</strong><br />
plus récente instruction preserve.<br />
2.12 Création d’un fichier <strong>de</strong> sortie (log file)<br />
log using “[path\]filename[.log]” [, append rep<strong>la</strong>ce]<br />
Contrairement au fichier .do, où l’on ne conserve que les instructions, le fichier .log<br />
permet <strong>de</strong> conserver tout ce qui défile dans <strong>la</strong> fenêtre Results, c.-à-d. les instructions et les<br />
résultats.<br />
L’instruction log using <strong>de</strong>man<strong>de</strong> au logiciel <strong>de</strong> conserver dans un fichier tout ce qui<br />
défile dans <strong>la</strong> fenêtre Results. On peut utiliser cette instruction à partir <strong>de</strong> <strong>la</strong> fenêtre<br />
Command; dans ce cas, on conservera dans un fichier tout ce qui s’affichera par <strong>la</strong> suite<br />
dans <strong>la</strong> fenêtre Results. Il est plus courant d’utiliser l’instruction log using dans un<br />
programme, et donc dans un fichier .do. Elle permet alors <strong>de</strong> conserver tout ce que le<br />
programme fait défiler dans <strong>la</strong> fenêtre Results. Règle générale, on p<strong>la</strong>ce l’instruction log<br />
using au tout début du programme.<br />
Dans un programme, on utilse généralement cette instruction sous <strong>la</strong> forme suivante :<br />
log using [nom du fichier choisi].log, rep<strong>la</strong>ce<br />
Utiliser l’extension .log indique que l’on veut conserver les résultats sous forme <strong>de</strong><br />
texte simple plutôt qu’avec une mise en forme décrite le <strong>la</strong>ngage SMCL <strong>de</strong> Stata. Les<br />
fichiers écrits en SMVL ne peuvent être lus qu’avec le Viewer <strong>de</strong> Stata, ce qui les rend<br />
généralement peu utiles. L’option rep<strong>la</strong>ce indique que l’on veut remp<strong>la</strong>cer le fichier du<br />
même nom s’il existe déjà. On peut souhaiter ajouter du contenu au fichier .log qui<br />
existe déjà plutôt que <strong>de</strong> le remp<strong>la</strong>cer; on utilise alors l’option append.<br />
clear<br />
set mem 300000<br />
11
use "\\\Rafii\usagers\PROF\ECO5072\edtrperson2002.dta", clear<br />
log using atelierstata.log, rep<strong>la</strong>ce<br />
(On inscrit ici les diverses instructions.)<br />
log close<br />
log close ferme le fichier log.<br />
log off le suspend pour l’ouvrir plus tard.<br />
log on le réactive.<br />
Entre guillemets, on peut mettre le nom du fichier .log s’il est dans le répertoire <strong>de</strong><br />
travail ou alors il faut mettre le chemin au long. Ce chemin apparaît dans <strong>la</strong> fenêtre<br />
Results quand on ouvre une base <strong>de</strong> données avec File/Open.<br />
Pour ouvrir le fichier .log, dans Stata, il faut passer par File/Log/View. La sélection à<br />
l’ai<strong>de</strong> <strong>de</strong> <strong>la</strong> souris se fait par l’option Browse ou on peut aussi écrire directement le nom<br />
du fichier .log, dans ce cas-ci, atelierstata.log.<br />
La fenêtre Viewer s’ouvrira alors. Pour l’amener dans les contrôles, l’option copier<br />
(Ctrl+C) coller (Ctrl+V) dans un fichier MS Word <strong>de</strong>meure <strong>la</strong> façon <strong>la</strong> plus facile. Par<br />
contre, pour bien respecter <strong>la</strong> mise en page, il faut choisir <strong>la</strong> police Courrier New avec<br />
une taille maximum <strong>de</strong> 9.<br />
Si le nom du fichier .log existe déjà, <strong>la</strong> fonction append rajoutera les résultats et les<br />
instructions à <strong>la</strong> suite.<br />
Par ailleurs, l’option rep<strong>la</strong>ce réécrit par-<strong>de</strong>ssus le fichier du même nom.<br />
Pour n’obtenir que les lignes d’instructions sans les résultats, il suffit <strong>de</strong> rajouter cmd<br />
avant l’instruction log.<br />
cmdlog using “[path\]filename” [, append rep<strong>la</strong>ce]<br />
cmdlog close<br />
cmdlog off<br />
cmdlog on<br />
2.13 Utiliser le dictionnaire <strong>de</strong>s variables<br />
Pour savoir quelles variables sont disponibles et leur signification dans une base <strong>de</strong><br />
données, un dictionnaire <strong>de</strong>s variables est indispensable.<br />
Pour les données du Recensement <strong>de</strong> 2001 (fichier <strong>de</strong> microdonnées à gran<strong>de</strong> diffusion<br />
sur les familles du recensement <strong>de</strong> 2001), Statistique Canada fournit toutes les<br />
informations nécessaires par thèmes.<br />
Au-<strong>de</strong>ssus <strong>de</strong> chaque page, vous verrez à quel fichier (personnes, <strong>de</strong> familles<br />
économiques, <strong>de</strong> familles <strong>de</strong> recensement ou clé) appartiennent les variables.<br />
La fonction sum TOTALC montre que le maximum est 9999999. Dans le dictionnaire, on<br />
indique que le 9999999 signifie Non applicable. Ainsi, cette donnée non vali<strong>de</strong> biaise <strong>la</strong><br />
moyenne. Pour calculer <strong>la</strong> vraie moyenne <strong>de</strong> TOTALC, il faudra donc poser <strong>de</strong>s<br />
conditions…<br />
12
Astuce :<br />
Pour chercher une variable en particulier ou un mot dans un fichier Adobe Rea<strong>de</strong>r<br />
(*.pdf), utilisez l’instruction Rechercher (Ctrl+F). Par exemple, faites Ctrl+F et tapez<br />
jobdur1 et vous arriverez directement à <strong>la</strong> <strong>de</strong>scription <strong>de</strong> cette variable.<br />
Astuce :<br />
Si vous voulez obtenir <strong>la</strong> liste <strong>de</strong>s variables rapi<strong>de</strong>ment et dans un format compact, faites<br />
l’instruction ds.<br />
3. Explorer les données<br />
3.1 Voir les données<br />
browse [varlist] [if exp] [in range]<br />
Cette instruction ouvre <strong>la</strong> matrice en mo<strong>de</strong> visionnement seulement. En tapant browse,<br />
on voit toute <strong>la</strong> base <strong>de</strong> données.<br />
edit [varlist] [if exp] [in range]<br />
Cette instruction effectue <strong>la</strong> même chose que browse à <strong>la</strong> différence qu’elle permet <strong>de</strong><br />
modifier les données comme dans un chiffrier. Ctrl+7 est une touche raccourcie.<br />
save [“[path\]filename”] [, rep<strong>la</strong>ce]<br />
save sauvegar<strong>de</strong> <strong>la</strong> base <strong>de</strong> données présentement utilisée par Stata. save myfile<br />
sauvegar<strong>de</strong>rait myfile.dta dans le répertoire <strong>de</strong> travail <strong>de</strong> Stata. Si ce fichier existait<br />
déjà, il faudrait utiliser l’option rep<strong>la</strong>ce :<br />
save myfile, rep<strong>la</strong>ce.<br />
3.2 Décrire les données<br />
<strong>de</strong>scribe [varlist] [, short <strong>de</strong>tail fullnames numbers]<br />
Ou, si <strong>la</strong> base <strong>de</strong> données n’est pas téléchargée, on pourrait inscrire :<br />
<strong>de</strong>scribe using [path\]filename<br />
Par exemple, avec <strong>la</strong> base <strong>de</strong> données edtr2002 personnes.dta, on aurait, mais avec<br />
une liste <strong>de</strong> variables beaucoup plus longues que celle-ci:<br />
clear<br />
set mem 300m<br />
use "2001famille24.dta"<br />
<strong>de</strong>scribe<br />
Contains data from 2001famille24_pat.dta<br />
obs: 871 Fichier <strong>de</strong> microdonnées du<br />
recensement <strong>de</strong> 2001 - Extrait<br />
du fichier <strong>de</strong>s familles<br />
vars: 42 3 Jan 2008 13:55<br />
size: 79,261 (99.9% of memory free)<br />
-------------------------------------------------------------------------------<br />
storage disp<strong>la</strong>y value<br />
variable name type format <strong>la</strong>bel variable <strong>la</strong>bel<br />
-------------------------------------------------------------------------------<br />
13
PROVF byte %57.0g PROVF PROVINCE OU TERRITOIRE<br />
CMAF int %40.0g CMAF RÉGION MÉTROPOLITAINE DE<br />
RECENSEMENT (RMR)<br />
NSTIENC byte %37.0g NSTIENC NOMBRE DE SOUTIENS DANS LE<br />
MÉNAGE<br />
ROOMC byte %18.0g ROOMC NOMBRE DE PIÈCES<br />
RPAIRC byte %31.0g RPAIRC ÉTAT <strong>DU</strong> LOGEMENT<br />
VALUEC long %10.0g VALUEC VALEUR <strong>DU</strong> LOGEMENT<br />
TENUREC byte %54.0g TENUREC MODE D’OCCUPATION<br />
[ETC…]<br />
L’instruction list présente simplement <strong>la</strong> liste <strong>de</strong>s valeurs <strong>de</strong>s variables <strong>de</strong>mandées.<br />
list [varlist] [if exp] [in range] [, [no]disp<strong>la</strong>y nohea<strong>de</strong>r<br />
no<strong>la</strong>bel noobs doublespace]<br />
Toutes les variables seront présentées si aucune n’est spécifiée. Il faudrait mettre <strong>de</strong>s<br />
conditions…<br />
clear<br />
set mem 300m<br />
use "2001famille24.dta"<br />
list TOTALC-SELFIC in 1/20 if TENUREC==1<br />
+--------------------------+<br />
| TOTALC WAGESC SELFIC |<br />
|--------------------------|<br />
2. | 33573 4200 0 |<br />
3. | 53000 53000 0 |<br />
5. | 78432 77930 0 |<br />
6. | 44028 40000 0 |<br />
8. | 79865 79647 0 |<br />
|--------------------------|<br />
11. | 18314 17265 0 |<br />
12. | 46920 46920 0 |<br />
13. | 45171 24930 0 |<br />
14. | 70000 70000 0 |<br />
15. | 50000 50000 0 |<br />
|--------------------------|<br />
17. | 74585 68550 0 |<br />
18. | 82405 82000 0 |<br />
19. | 8370 2700 0 |<br />
+--------------------------+<br />
L’instruction list ec* in 1/20 if ecsex99==1 présentera les valeurs <strong>de</strong>s<br />
observations 1 à 20 dont le <strong>la</strong> famille est propriétaire et dont <strong>la</strong> liste <strong>de</strong>s variables<br />
commence par TOTALC et termine par SELFIC.<br />
L’instruction inspect donne une bonne idée d’une variable numérique :<br />
inspect [varlist] [if exp] [in range]<br />
clear<br />
set mem 300m<br />
use "2001famille24.dta"<br />
inspect ROOMC<br />
ROOMC: NOMBRE DE PIÈCES Number of Observations<br />
------------------------ Non-<br />
Total Integers Integers<br />
14
| # Negative - - -<br />
| # Zero - - -<br />
| # Positive 871 871 -<br />
| # # # ----- ----- -----<br />
| # # # Total 871 871 -<br />
| . # # # # Missing -<br />
+---------------------- -----<br />
1 10 871<br />
(10 unique values)<br />
ROOMC is <strong>la</strong>beled and all values are documented in the <strong>la</strong>bel.<br />
L’instruction co<strong>de</strong>book peut être utilisée aussi bien avec <strong>de</strong>s variables numériques que<br />
<strong>de</strong>s variables alphanumériques (string variables).<br />
co<strong>de</strong>book [varlist] [, all hea<strong>de</strong>r notes mv tabu<strong>la</strong>te(#)]<br />
co<strong>de</strong>book CFTYPE TOTALC<br />
-------------------------------------------------------------------------------<br />
----------------------------------------------------------------<br />
CFTYPE<br />
GENRE DE FAMILLE DE RECENSEMENT<br />
-------------------------------------------------------------------------------<br />
----------------------------------------------------------------<br />
type: numeric (byte)<br />
<strong>la</strong>bel: CFTYPE<br />
range: [1,9] units: 1<br />
unique values: 4 missing .: 0/871<br />
tabu<strong>la</strong>tion: Freq. Numeric Label<br />
544 1 Famille <strong>de</strong> soutien principal<br />
2 2 Autre famille avec soutien<br />
12 3 Famille sans soutien<br />
313 9 Sans objet<br />
-------------------------------------------------------------------------------<br />
----------------------------------------------------------------<br />
TOTALC<br />
REVENU TOTAL DE LA FAMILLE DE RECENSEMENT<br />
-------------------------------------------------------------------------------<br />
----------------------------------------------------------------<br />
type: numeric (long)<br />
<strong>la</strong>bel: TOTALC, but 826 nonmissing values are not <strong>la</strong>beled<br />
range: [0,9999999] units: 1<br />
unique values: 827 missing .: 0/871<br />
examples: 15516<br />
30948<br />
48562<br />
72604<br />
4. Manipu<strong>la</strong>tion <strong>de</strong>s données I<br />
4.1 Création et transformation d’une variable<br />
Pour créer <strong>de</strong> nouvelles variables, on utilise l’instruction generate.<br />
generate [type] newvar = exp1 [if exp2] [in range]<br />
15
L’option type sert à préciser le type <strong>de</strong> variables: byte, int, long, float,<br />
double ou str#. Stata choisit automatiquement en l’absence d’une spécification.<br />
exp1 comprend l’opération qui génèrera <strong>la</strong> nouvelle variable.<br />
exp2 comprend les conditions sous lesquelles <strong>la</strong> nouvelle variable est générée.<br />
Par exemple, pour vérifier un effet non linéaire sur l’âge, il faudrait d’abord créer <strong>la</strong><br />
variable <strong>de</strong> l’âge au carré :<br />
g age2= ecage26^2<br />
En al<strong>la</strong>nt voir dans le Data Browser ou en faisant browse, complètement à gauche, <strong>la</strong><br />
variable age2 sera visible.<br />
Ou encore, pour utiliser le logarithme du sa<strong>la</strong>ire, on écrirait :<br />
g lnsa<strong>la</strong>ire = ln(earng42)<br />
Astuce :<br />
Pour s’assurer que <strong>la</strong> bonne variable a bel et bien été créée, vous pouvez <strong>la</strong> vérifier grâce<br />
à l’instruction keep [noms <strong>de</strong>s variables]. Cette instruction éliminera toutes les<br />
variables <strong>de</strong> <strong>la</strong> base <strong>de</strong> données sauf celles inscrites à <strong>la</strong> suite <strong>de</strong> keep. Ensuite, vous<br />
n’avez qu’à vérifier dans le Data Editor que les bonnes opérations ont été effectuées.<br />
Mais attention, il faut avoir enregistré les instructions du projet dans un fichier do pour<br />
pouvoir recréer <strong>la</strong> base <strong>de</strong> données utilisée.<br />
Autrement, par <strong>la</strong> suite, on peut faire dans Stata soit File/Save As… ou Ctrl+S pour<br />
enregistrer un fichier *.dta qui constituera une base <strong>de</strong> données personnalisée.<br />
Cependant, pour éviter les erreurs, il est préférable <strong>de</strong> travailler à partir <strong>de</strong> <strong>la</strong> base <strong>de</strong><br />
données originale sans jamais <strong>la</strong> modifier. En cas <strong>de</strong> catastrophe, on revient à <strong>la</strong> base <strong>de</strong><br />
données originale.<br />
Astuce :<br />
Pour s’y retrouver dans le Data Editor, l’instruction aor<strong>de</strong>r p<strong>la</strong>ce toutes les variables<br />
en ordre alphabétique.<br />
Voici <strong>de</strong>s exemples d’opérations algébriques effectuées dans Stata (Hébert, 2003, p. 16) :<br />
c = a+b<br />
c = a-b<br />
c = a*b<br />
c= a/b<br />
c= b^c (pour b c )<br />
c = log(b)<br />
c = sqrt(a) (pour a )<br />
c = exp(b) (pour e b )<br />
Voici d’autres exemples (Hébert, 2003, p. 16) :<br />
generate sumx1x2 = x1+ x2<br />
16
generate sqrtx3 = sqrt(x3) if<br />
x3>=0<br />
generate abs_x4= abs(x4) Valeur absolue <strong>de</strong> x4<br />
generate trunc_x5 = int(5) Nombre entier obtenu en tronquant x5<br />
generate rnd_x6 = round(x6,.01) Valeur <strong>de</strong> x6 à <strong>de</strong>ux décimales<br />
generate str1 gen<strong>de</strong>r =<br />
string(sex)<br />
generate byte ngen<strong>de</strong>r =<br />
real(gen<strong>de</strong>r)<br />
generate startdate =<br />
mdy(mthvar,dayvar,yearvar)<br />
17<br />
Création d’une variable alphanumérique<br />
d’un caractère à partir <strong>de</strong> <strong>la</strong> variable<br />
numérique sex<br />
Création d’une variable numérique à partir<br />
<strong>de</strong> <strong>la</strong> variable alphanumérique gen<strong>de</strong>r<br />
Création d’une variable date en format<br />
Stata à partir <strong>de</strong> trois variables numériques<br />
soit le mois, le jour et l’année.<br />
generate p = uniform() Création <strong>de</strong> <strong>la</strong> variable p qui est tirée<br />
aléatoirement et comprise entre 0 et 1.<br />
generate z = invnorm (p) Affecte à <strong>la</strong> variable z, <strong>la</strong> valeur <strong>de</strong> <strong>la</strong><br />
variable aléatoire qui correspond à <strong>la</strong><br />
valeur p <strong>de</strong> <strong>la</strong> fonction <strong>de</strong> répartition <strong>de</strong> <strong>la</strong><br />
loi normale. Par définition, <strong>la</strong> fonction <strong>de</strong><br />
répartition d’une loi statistique varie <strong>de</strong> 0 à<br />
1. Ici, si p varie uniformément entre 0 et 1<br />
(ce qui est le cas du p <strong>de</strong> l’exemple<br />
précé<strong>de</strong>nt), z suit une loi normale centrée<br />
réduite. On utilise couramment cette<br />
procédure pour générer une variable<br />
artificielle qui suit une loi normale.<br />
On utilise help function pour obtenir <strong>la</strong> liste <strong>de</strong> toutes les fonctions disponibles.<br />
L’instruction egen offre également une série <strong>de</strong> possibilités qui permettent <strong>de</strong> créer<br />
rapi<strong>de</strong>ment <strong>de</strong>s variables qui <strong>de</strong>man<strong>de</strong>raient autrement plusieurs lignes d’instructions.<br />
egen [type] newvar = function(arguments) [if exp] [in range] [,<br />
options]<br />
Certaines fonctions génèrent <strong>la</strong> même constante pour toutes les observations (Hébert,<br />
2003, p. 17).<br />
egen min_x1 = min(x1) Prend <strong>la</strong> valeur minimum <strong>de</strong> x1<br />
egen max_x1 = max(x1) Prend <strong>la</strong> valeur maximale <strong>de</strong> x1<br />
egen sum_x1 = (x1) Somme <strong>de</strong> toutes les valeurs <strong>de</strong> x1<br />
egen med_x1 = median(x1) Valeur médiane <strong>de</strong> x1<br />
egen avg_x1 = mean(x1) Moyenne <strong>de</strong> x1<br />
egen sd_x1 = sd(x1) Écart-type <strong>de</strong> x1.<br />
Certaines fonctions génèrent une valeur différente pour chaque observation ou ligne.<br />
egen z_x1 = std(x1) Valeur standardisée <strong>de</strong> x1<br />
(soustraire <strong>la</strong> moyenne et diviser par
l’écart-type).<br />
egen rank_x1 = rank(x1) Rang <strong>de</strong> l’observation<br />
egen min_x = rmin(x1 x2 x3) Valeur minimale entre (x1, x2, x3)<br />
egen max_x = rmax(x1 x2 x3) Valeur maximale entre (x1, x2, x3)<br />
gen et egen ne peuvent que créer <strong>de</strong> nouvelles variables. Pour changer une variable<br />
existante, on doit utiliser l’instruction rep<strong>la</strong>ce.<br />
rep<strong>la</strong>ce oldvarname = exp1 [if exp2] [in range]<br />
L’instruction suivante permet <strong>de</strong> changer <strong>la</strong> valeur d’une variable par une autre valeur :<br />
rep<strong>la</strong>ce [variable concernée]=[nouvelle valeur] if (conditions)<br />
Pour remp<strong>la</strong>cer <strong>la</strong> valeur 97 <strong>de</strong> <strong>la</strong> variable pvreg25 par un point, il suffirait d’entrer :<br />
rep<strong>la</strong>ce pvreg25=. if pvreg25==97<br />
Conseil :<br />
Lorsque Stata rencontre un point (.) comme valeur, il considère <strong>la</strong> donnée comme<br />
manquante et ne <strong>la</strong> traite tout simplement pas.<br />
Par contre, dans une condition, toute valeur numérique est inférieure au point.<br />
Par exemple, rep<strong>la</strong>ce adult=1 if age>18 remp<strong>la</strong>cerait le point par 1 parce que<br />
Stata considère le point supérieur à 18. Il faudrait plutôt inscrire rep<strong>la</strong>ce adult=1<br />
if age>18 & age
Ce qui suit est un autre exemple impliquant un rep<strong>la</strong>ce <strong>de</strong> plus d’une condition :<br />
tab studtf26<br />
studtf26 | Freq. Percent Cum.<br />
------------+-----------------------------------<br />
1 | 8,455 15.04 15.04<br />
2 | 40,897 72.75 87.79<br />
7 | 1 0.00 87.79<br />
9 | 6,863 12.21 100.00<br />
------------+-----------------------------------<br />
Total | 56,216 100.00<br />
rep<strong>la</strong>ce studtf26=. if studtf26=7<br />
(6864 real changes ma<strong>de</strong>, 6864 to missing)<br />
tab studtf26<br />
studtf26 | Freq. Percent Cum.<br />
------------+-----------------------------------<br />
1 | 8,455 17.13 17.13<br />
2 | 40,897 82.87 100.00<br />
------------+-----------------------------------<br />
Total | 49,352 100.00<br />
L’instruction mv<strong>de</strong>co<strong>de</strong> change <strong>de</strong>s valeurs données d’une variable en point et<br />
mvenco<strong>de</strong> le contraire.<br />
mv<strong>de</strong>co<strong>de</strong> varlist [if exp] [in range], mv(numlist)<br />
mvenco<strong>de</strong> varlist [if exp] [in range], mv(#)<br />
Par exemple,<br />
mv<strong>de</strong>co<strong>de</strong> q1-q10, mv(9998 9999) Change les co<strong>de</strong>s 9998 et 9999 en points<br />
pour les variables q1 à q10.<br />
Mvenco<strong>de</strong> q1-q10, mv(9999) Change les points en 9999.<br />
L’instruction reco<strong>de</strong> effectue à peu près <strong>la</strong> même chose que l’instruction rep<strong>la</strong>ce :<br />
reco<strong>de</strong> varname oldco<strong>de</strong> [oldco<strong>de</strong>] = newco<strong>de</strong> [if exp] [in range]<br />
19
On pourrait ainsi reco<strong>de</strong>r <strong>la</strong> variable CMAF :<br />
tab CMAF<br />
RÉGION MÉTROPOLITAINE DE RECENSEMENT |<br />
(RMR) | Freq. Percent Cum.<br />
----------------------------------------+-----------------------------------<br />
Québec | 88 10.10 10.10<br />
Montréal | 422 48.45 58.55<br />
Sherbrooke (433) et Trois-Rivières (442 | 36 4.13 62.69<br />
Ottawa-Hull | 26 2.99 65.67<br />
Sans objet | 299 34.33 100.00<br />
----------------------------------------+-----------------------------------<br />
co<strong>de</strong>book CMAF<br />
Total | 871 100.00<br />
-------------------------------------------------------------------------------<br />
--------------------------------------------------------------<br />
CMAF<br />
RÉGION MÉTROPOLITAINE DE RECENSEMENT (RMR)<br />
-------------------------------------------------------------------------------<br />
--------------------------------------------------------------<br />
type: numeric (int)<br />
<strong>la</strong>bel: CMAF<br />
range: [421,999] units: 1<br />
unique values: 5 missing .: 0/871<br />
tabu<strong>la</strong>tion: Freq. Numeric Label<br />
88 421 Québec<br />
422 462 Montréal<br />
36 499 Sherbrooke (433) et<br />
Trois-Rivières (442)<br />
26 505 Ottawa-Hull<br />
299 999 Sans objet<br />
reco<strong>de</strong> CMAF 421=1 462=2 499=3 505=4 999=.<br />
(CMAF: 871 changes ma<strong>de</strong>)<br />
tab CMAF<br />
RÉGION MÉTROPOLITAINE DE RECENSEMENT |<br />
(RMR) | Freq. Percent Cum.<br />
----------------------------------------+-----------------------------------<br />
1 | 88 15.38 15.38<br />
2 | 422 73.78 89.16<br />
3 | 36 6.29 95.45<br />
4 | 26 4.55 100.00<br />
----------------------------------------+-----------------------------------<br />
Total | 572 100.00<br />
20
Voici d’autres exemples (Hébert, 2003, p. 18) :<br />
reco<strong>de</strong> x1 9=. La valeur 9 <strong>de</strong>vient un point.<br />
reco<strong>de</strong> x2 2=1 3 4 5 6=2 Change le 2 en un et (3,4,5,6) en 2.<br />
reco<strong>de</strong> x2 2=1 3/6=2 Ibi<strong>de</strong>m.<br />
reco<strong>de</strong> x3 1 2=1 *=2 Change 1 et 2 en un et le reste en 2.<br />
reco<strong>de</strong> x4<br />
65/max=3<br />
min/34=1 35/64=2 Change les valeurs inférieures à 34 en 1,<br />
entre 35 et 64 en 2 et supérieur ou égal à<br />
65 en 3.<br />
4.2 Noms et <strong>de</strong>scripteurs<br />
Pour renommer une variable, l’instruction rename semble toute indiquée :<br />
rename oldvarname newvarname<br />
L’instruction rename prov1 qc change le nom original prov1 pour qc, tout<br />
simplement.<br />
L’instruction <strong>de</strong>scribe permet d’afficher certaines propriétés d’une variable. Pour<br />
inscrire quelque chose dans <strong>la</strong> colonne variable <strong>la</strong>bel, ou <strong>de</strong>scripteur <strong>de</strong> <strong>la</strong> variable<br />
en français, l’instruction suivante sera utile :<br />
<strong>la</strong>bel variable varname "Variable <strong>la</strong>bel"<br />
d ecage26<br />
storage disp<strong>la</strong>y value<br />
variable name type format <strong>la</strong>bel variable <strong>la</strong>bel<br />
-----------------------------------------------------------------------<br />
ecage26 float %9.0g<br />
. <strong>la</strong>bel variable ecage26 "Age du sondage"<br />
d ecage26<br />
storage disp<strong>la</strong>y value<br />
variable name type format <strong>la</strong>bel variable <strong>la</strong>bel<br />
-----------------------------------------------------------------------<br />
ecage26 float %9.0g Age du sondage<br />
De cette manière, on ne peut oublier <strong>la</strong> signification <strong>de</strong>s variables du projet.<br />
On peut aussi attacher une note à <strong>la</strong> base <strong>de</strong> données téléchargée par Stata : <strong>la</strong>bel data<br />
"dataset <strong>la</strong>bel".<br />
Par exemple, <strong>la</strong>bel data "Projet Transitions".<br />
De même, on peut le faire pour <strong>de</strong>s variables en <strong>de</strong>ux étapes :<br />
<strong>la</strong>bel <strong>de</strong>fine <strong>la</strong>belname value1 "Descripteur 1" … value# ///<br />
"Descripteur#"<br />
<strong>la</strong>bel values varname <strong>la</strong>belname<br />
Pour voir <strong>la</strong> liste <strong>de</strong>s notes attachées aux valeurs d’une variable, il faut utiliser<br />
l’instruction <strong>la</strong>bel list [lblname [lblname ...]].<br />
21
Par exemple, pour <strong>la</strong> variable province PROVF, on aurait :<br />
<strong>de</strong>scribe PROVF<br />
storage disp<strong>la</strong>y value<br />
variable name type format <strong>la</strong>bel variable <strong>la</strong>bel<br />
-------------------------------------------------------------------------------<br />
PROVF byte %57.0g PROVF PROVINCE OU TERRITOIRE<br />
<strong>la</strong>bel variable PROVF "Provinces du Canada"<br />
<strong>la</strong>bel data "Projet Transitions"<br />
<strong>la</strong>bel <strong>de</strong>fine PROVF 10 "Terre-Neuve" 11 "Iles-du-Prince-Edouard" ///<br />
12 "Nouvelle-Ecosse" 13 "Nouveau-Brunswick" 24 "Quebec" 35 "Ontario"///<br />
46 "Manitoba" 47 "Saskatchewan" 48 "Alberta" 59 "Colombie-Britannique"<br />
60 "Territoire du Yukon, Territoires du Nord-Ouest et Nunavut"<br />
<strong>la</strong>bel values PROVF PROVLABEL<br />
<strong>de</strong>scribe PROVF<br />
storage disp<strong>la</strong>y value<br />
variable name type format <strong>la</strong>bel variable <strong>la</strong>bel<br />
-------------------------------------------------------------------------------<br />
PROVF byte %57.0g PROVLABEL<br />
Provinces du Canada<br />
<strong>la</strong>bel list<br />
PROVF:<br />
10 Terre-Neuve-et-Labrador<br />
11 Île-du-Prince-Édouard<br />
12 Nouvelle-Écosse<br />
13 Nouveau-Brunswick<br />
24 Québec<br />
35 Ontario<br />
46 Manitoba<br />
47 Saskatchewan<br />
48 Alberta<br />
59 Colombie-Britannique<br />
60 Territoire du Yukon, Territoires du Nord-Ouest et Nunavut<br />
Voir help <strong>la</strong>bel et help notes pour plus <strong>de</strong> détails.<br />
4.3 Création <strong>de</strong> variables dichotomiques<br />
Une variable dichotomique (dummy variable) prend <strong>la</strong> valeur 1 si l’individu est exposé à<br />
un facteur et 0 autrement. Ce type <strong>de</strong> variable sert souvent à traiter <strong>de</strong> multiples groupes à<br />
<strong>la</strong> fois. Par exemple, pour les provinces, dix variables dichotomiques sont nécessaires,<br />
chacune prenant <strong>la</strong> valeur 0 ou 1.<br />
En fait, il faudra en éliminer une pour ne pas avoir <strong>de</strong> problème <strong>de</strong> multicolinéarité<br />
parfaite dans les régressions à faire, mais ce problème sera traité dans un autre atelier.<br />
Ainsi, l’instruction à utiliser sera :<br />
g [nom <strong>de</strong> <strong>la</strong> variable créée] =(conditions).<br />
Par conséquent, pour les provinces, il faudrait procé<strong>de</strong>r comme suit :<br />
22
g TENUREC_P=(TENUREC==1)<br />
g TENUREC_L=(TENUREC==2)<br />
Donc, l’instruction g TENUREC_P=(TENUREC==1) générera une variable dichotomique<br />
qui prend <strong>la</strong> valeur <strong>de</strong> 1 seulement si TENUREC==1 et 0 autrement.<br />
Encore, pour créer une variable dichotomique pour <strong>de</strong>s famille <strong>de</strong> 3 à 5 enfants<br />
inclusivement, on écrirait :<br />
gen famille3_5=( NUCHILD>=3 & NUCHILD
Par exemple, cette fonction s’applique sur <strong>la</strong> composition <strong>de</strong> <strong>la</strong> famille :<br />
tab NUCHILD<br />
NOMBRE D’ENFANTS À |<br />
LA MAISON DANS LA |<br />
FAMILLE DE |<br />
RECENSEMENT | Freq. Percent Cum.<br />
--------------------+-----------------------------------<br />
Aucun enfant | 215 24.68 24.68<br />
Un enfant | 172 19.75 44.43<br />
Deux enfants | 115 13.20 57.63<br />
Trois enfants | 43 4.94 62.57<br />
Quatre enfants | 11 1.26 63.83<br />
Cinq enfants | 2 0.23 64.06<br />
Sans objet | 313 35.94 100.00<br />
--------------------+-----------------------------------<br />
Total | 871 100.00<br />
On peut également utiliser cette instruction pour obtenir le tri croisé <strong>de</strong> <strong>de</strong>ux variables.<br />
tab NUCHILD TENUREC<br />
NOMBRE D’ENFANTS À |<br />
LA MAISON DANS LA |<br />
FAMILLE DE | MODE D’OCCUPATION<br />
RECENSEMENT | Possédé ( Loué (arg | Total<br />
--------------------+----------------------+----------<br />
Aucun enfant | 151 64 | 215<br />
Un enfant | 115 57 | 172<br />
Deux enfants | 91 24 | 115<br />
Trois enfants | 32 11 | 43<br />
Quatre enfants | 8 3 | 11<br />
Cinq enfants | 1 1 | 2<br />
Sans objet | 104 209 | 313<br />
--------------------+----------------------+----------<br />
Total | 502 369 | 871<br />
Astuce :<br />
Lorsqu’on utilise l’instruction tabu<strong>la</strong>te avec variable continue, on obtient un<br />
déroulement d’une foule <strong>de</strong> lignes. Pour arrêter le défilement, on tape simplement sur q.<br />
L’icône Break occupe <strong>la</strong> même fonction.<br />
Exemple : faites tab jobdur1 et tapez ensuite sur q.<br />
Astuce :<br />
Pour importer dans un fichier MS Word les résultats <strong>de</strong> Stata, rien n’est plus simple. Un<br />
bon vieux copier (Ctrl+C) coller (Ctrl+V) à partir <strong>de</strong> <strong>la</strong> fenêtre Stata Results fera<br />
l’affaire. La mise en page Courrier New avec une taille 9 permettra <strong>de</strong> respecter <strong>la</strong><br />
présentation <strong>de</strong> Stata.<br />
24
tabu<strong>la</strong>te rowvar [colvar] [if] [in] [weight] [, chi2 lrchi2 gamma<br />
taub V all column row nofreq missing no<strong>la</strong>bel]<br />
Les cinq premières options sont <strong>de</strong>s tests statistiques : le test du chi carré <strong>de</strong> Pearson, le<br />
ratio <strong>de</strong> vraisemb<strong>la</strong>nce du test du chi carré, le gamma <strong>de</strong> Goodman et Kruskal, le tau-b <strong>de</strong><br />
Kendall et le V <strong>de</strong> Cramer.<br />
all les instruction tous.<br />
Les options column et row <strong>de</strong>man<strong>de</strong> les pourcentages <strong>de</strong>s colonnes et <strong>de</strong>s lignes alors<br />
que nofreq élimine les fréquences.<br />
tabu<strong>la</strong>te rowvar [colvar] [if] [in] [weight], summarize(varname)<br />
[options]<br />
Par exemple, pour un graphique présentant le sa<strong>la</strong>ire moyen selon <strong>la</strong> province et le sexe,<br />
on aurait :<br />
tab NUCHILD TENUREC if NUCHILD
Par exemple, on aurait un tableau comme suit :<br />
corr TOTALC TENUREC<br />
(obs=871)<br />
| TOTALC TENUREC<br />
-------------+------------------<br />
TOTALC | 1.0000<br />
TENUREC | -0.0704 1.0000<br />
Lorsqu’il y a plus <strong>de</strong> <strong>de</strong>ux variables, Stata s’ajuste automatiquement :<br />
corr TOTALC TENUREC ROOMC<br />
(obs=871)<br />
| TOTALC TENUREC ROOMC<br />
-------------+---------------------------<br />
TOTALC | 1.0000<br />
TENUREC | -0.0704 1.0000<br />
ROOMC | 0.0390 -0.5407 1.0000<br />
On peut indifféremment y inclure <strong>de</strong>s variables continues ou discrètes afin d’avoir une<br />
idée du signe et donc <strong>de</strong> <strong>la</strong> progression d’une variable par rapport à l’autre.<br />
Dans l’exemple précé<strong>de</strong>nt, on note que le revenu total et le mo<strong>de</strong> d’occupation sont<br />
inversement corrélés. Donc, le fait d’être locataire (TENUREC==2) semble révéler à<br />
première vue un revenu total plus faible chez les familles. Cependant, il <strong>de</strong>meure<br />
essentiel <strong>de</strong> vérifier cette assertion par un test statistique. Auparavant, toutefois, il faudra<br />
faire une régression.<br />
L’instruction pwcorr pour pairwise corre<strong>la</strong>tion permet d’autres options.<br />
pwcorr varlist [if] [in] [weight] [, obs sig bonferroni]<br />
L’option obs indique le nombre d’observations utilisé pour calculer les coefficients.<br />
L’option sig <strong>de</strong>man<strong>de</strong> un test <strong>de</strong> significativité et l’option bonferroni fait <strong>de</strong>s<br />
ajustements au niveau <strong>de</strong> <strong>la</strong> significativité <strong>de</strong>s tests.<br />
pwcorr earng42 jobdur1 if jobdur1>=0 & jobdur1=0<br />
& ecage26
Les options :<br />
<strong>de</strong>tail affiche <strong>de</strong>s corré<strong>la</strong>tions inter items.<br />
item affiche <strong>de</strong>s tests <strong>de</strong> corré<strong>la</strong>tion d’items et les effets d’en enlever un.<br />
generate sauvegar<strong>de</strong> l’échelle construite par le test sous newvar.<br />
Par exemple,<br />
alpha ecage26 ecsex99, generate(score)<br />
Test scale = mean(unstandardized items)<br />
Average interitem covariance: .2736863<br />
Number of items in the scale: 2<br />
Scale reliability coefficient: 0.0034<br />
Pour tester l’indépendance <strong>de</strong> <strong>de</strong>ux variables, l’instruction spearman produit le<br />
coefficient <strong>de</strong> corré<strong>la</strong>tion <strong>de</strong> rang <strong>de</strong> Spearman. Aussi, l’instruction ktau affiche le tau-a<br />
et le tau-b <strong>de</strong> Kendall.<br />
spearman varname1 varname2 [if] [in]<br />
ktau varname1 varname2 [if] [in]<br />
5.3 Visualisation <strong>de</strong> données<br />
Il existe plusieurs instructions pour faire <strong>de</strong>s graphiques dans Stata. L’instruction générale<br />
s’écrit comme suit :<br />
graph_command varlist [if] [in] [weight] [, type_specific_options<br />
general_options]<br />
La fonction graph dans <strong>la</strong> barre <strong>de</strong>s tâches peut toujours offrir une alternative aux<br />
instructions plus complexes et moins intuitives.<br />
27
Les exemples suivants reprennent <strong>la</strong> présentation d’Hamilton (2006 : 64-116).<br />
a) L’histogramme <strong>de</strong> fréquences<br />
clear<br />
set mem 300m<br />
use http://www.uwm.edu/~sbenesh/states.dta<br />
histogram college, frequency title(Figure 3.1)<br />
Frequency<br />
0 5 10 15 20<br />
Figure 3.1<br />
10 15 20 25 30 35<br />
% over 25 w/bachelor's <strong>de</strong>gree +<br />
28
) Le diagramme en boîtes<br />
graph box college, over(region) yline(19.1)<br />
% over 25 w/bachelor's <strong>de</strong>gree +<br />
10 15 20 25 30<br />
c) Le graphe simple<br />
West N. East South Midwest<br />
clear<br />
set mem 300m<br />
use http://www.stata-press.com/data/r9/uslifeexp.dta<br />
line le year<br />
life expectancy<br />
40 50 60 70 80<br />
1900 1920 1940 1960 1980 2000<br />
Year<br />
29
d) Le nuages <strong>de</strong> points<br />
clear<br />
set mem 300m<br />
use http://www.uwm.edu/~sbenesh/states.dta<br />
scatter college income<br />
% over 25 w/bachelor's <strong>de</strong>gree +<br />
10 15 20 25 30 35<br />
25000 30000 35000 40000 45000 50000<br />
Median household income<br />
e) Le nuage <strong>de</strong> points et sa droite <strong>de</strong> régression<br />
clear<br />
set mem 300m<br />
use http://www.uwm.edu/~sbenesh/states.dta<br />
scatter college income || lfit college income<br />
10 15 20 25 30 35<br />
25000 30000 35000 40000 45000 50000<br />
Median household income<br />
% over 25 w/bachelor's <strong>de</strong>gree + Fitted values<br />
30
f) Le diagramme à bâtons<br />
clear<br />
set mem 300m<br />
use http://www.uwm.edu/~sbenesh/states.dta<br />
graph bar <strong>de</strong>nsity, over(region)<br />
mean of <strong>de</strong>nsity<br />
0 100 200 300 400 500<br />
g) Autres instructions reliées aux graphes<br />
graph<br />
West N. East South Midwest<br />
Cette instruction exécute à nouveau <strong>la</strong> <strong>de</strong>rnière instruction graph soumise.<br />
graph export filename.emf [, rep<strong>la</strong>ce]<br />
Cette instruction conserve le graphe dans un fichier au format Exten<strong>de</strong>d Metafile, ce qui<br />
permet <strong>de</strong> l’utiliser par <strong>la</strong> suite avec les logiciels qui reconnaissent ce format. Conserver<br />
un graphe <strong>de</strong> cette manière permet <strong>de</strong> l’importer dans un document Word.<br />
graph save mon_graphe, rep<strong>la</strong>ce<br />
Cette instruction conserve le graphe dans le fichier <strong>de</strong> travail mon_graphe même si un<br />
fichier <strong>de</strong> ce nom existe déjà; l’ancien contenu est alors effacé.<br />
Pour afficher <strong>de</strong> nouveau le graphe à l’écran, on exécute l’instruction graph use<br />
mon_graphique.<br />
Pour plus d’informations, voir help graph.<br />
6. Combiner <strong>de</strong>s bases <strong>de</strong> données<br />
6.1 Concaténation <strong>de</strong> bases <strong>de</strong> données<br />
La concaténation consiste à combiner <strong>de</strong>ux bases <strong>de</strong> données en copiant l’une à <strong>la</strong> suite<br />
<strong>de</strong> l’autre. Règle générale, on concatène <strong>de</strong>s bases qui contiennent les mêmes variables<br />
mesurées sur <strong>de</strong>s unités d’observation différentes. Dans Stata, <strong>la</strong> concaténation se réalise<br />
au moyen <strong>de</strong> l’instruction append.<br />
append using “[path\]filename”<br />
31
On réalise l’opération en ajoutant un fichier <strong>de</strong> données conservé sur disque aux données<br />
qui se trouvent en mémoire; dans l’instruction, filename désigne le fichier qui est<br />
ajouté aux données déjà en mémoire. Dans <strong>la</strong> terminologie <strong>de</strong> Stata, le fichier déjà en<br />
mémoire est le fichier maître (master dataset). La base <strong>de</strong> données qui résulte <strong>de</strong> <strong>la</strong><br />
concaténation <strong>de</strong>vra être sauvegardée pour ne pas être perdue. Par exemple (Hébert,<br />
2003, p. 25).<br />
Si une variable n’existe que dans une seule <strong>de</strong>s <strong>de</strong>ux bases <strong>de</strong> données, par exemple <strong>la</strong><br />
variable mth, l’instruction append concatène les <strong>de</strong>ux bases observations en conservant<br />
<strong>la</strong> variable et en attribuant <strong>la</strong> valeur manquante aux observations <strong>de</strong> <strong>la</strong> base dans <strong>la</strong>quelle<br />
<strong>la</strong> variable n’existe pas.<br />
Ici, l’information <strong>de</strong> <strong>la</strong> variable mth est simplement manquante dans les observations qui<br />
proviennent <strong>de</strong> <strong>la</strong> <strong>de</strong>uxième base <strong>de</strong> données où cette variable n’existe pas.<br />
Si les variables ne sont pas dans le même ordre dans les <strong>de</strong>ux bases, l’instruction append<br />
construit <strong>la</strong> nouvelle base en reprenant l’ordre du fichier maître.<br />
32
6.2 Fusion <strong>de</strong> bases <strong>de</strong> données<br />
(Voir l’annexe 2 pour un exemple complet)<br />
Règle générale, on fusionne <strong>de</strong>s bases <strong>de</strong> données qui contiennent <strong>de</strong>s variables<br />
différentes mesurées sur les mêmes unités d’observation. La fusion consiste alors à<br />
combiner sur une seule ligne les lignes <strong>de</strong>s <strong>de</strong>ux bases qui proviennent <strong>de</strong> <strong>la</strong> même unité<br />
d’observation. Autrement dit, <strong>la</strong> fusion agrège <strong>de</strong>s variables alors que <strong>la</strong> concaténation<br />
agrège <strong>de</strong>s observations. Dans Stata, <strong>la</strong> fusion se réalise au moyen <strong>de</strong> l’instruction<br />
merge. Elle se fait en ajoutant les données d’un fichier conservé sur disque aux données<br />
déjà en mémoire. Règle générale, elle se fait en appariant les lignes sur <strong>la</strong> base d’un<br />
i<strong>de</strong>ntifiant, c’est-à-dire d’une variable dont chaque valeur correspond à une seule unité<br />
d’observation; pour que l’appariement sur <strong>la</strong> base d’un i<strong>de</strong>ntifiant soit possible, il faut<br />
évi<strong>de</strong>mment que cette variable soit présente dans les <strong>de</strong>ux bases <strong>de</strong> données que l’on<br />
fusionne. Il arrive parfois qu’on ne puisse i<strong>de</strong>ntifier les unités d’observation qu’en<br />
combinant <strong>de</strong>ux ou plusieurs i<strong>de</strong>ntifiants. Ceci se produit couramment dans les bases <strong>de</strong><br />
données produites dans le cadre d’enquêtes où on a recueilli <strong>de</strong> l’information auprès <strong>de</strong><br />
plusieurs membres <strong>de</strong>s mêmes familles ou <strong>de</strong>s mêmes ménages. On distingue alors les<br />
individus <strong>de</strong> manière unique en combinant l’i<strong>de</strong>ntifiant <strong>de</strong> leur famille ou <strong>de</strong> leur ménage<br />
et leur i<strong>de</strong>ntifiant propre au sein <strong>de</strong> leur ménage et <strong>de</strong> leur faille. L’instruction merge<br />
permet <strong>de</strong> réaliser l’appariement sur <strong>la</strong> base d’une ou <strong>de</strong> plusieurs variables, qui forment<br />
l’option varlist <strong>de</strong> l’instruction.<br />
merge [varlist] using “[path\]filename” [, update rep<strong>la</strong>ce nokeep]<br />
On peut réaliser une fusion sans utiliser <strong>de</strong> variable pour i<strong>de</strong>ntifier les untiés<br />
d’observation. Dans ce cas, Stata fusionnera les lignes <strong>de</strong>s <strong>de</strong>ux bases <strong>de</strong> données<br />
simplement selon leur ordre dans chaque base. Cette manière <strong>de</strong> faire est rarement<br />
souhaitable…<br />
L’appariement selon un ou plusieurs i<strong>de</strong>ntifiants exige que les observations <strong>de</strong>s <strong>de</strong>ux<br />
bases à fusionner soient triées au préa<strong>la</strong>ble selon chacune <strong>de</strong>s variables utilisées comme<br />
i<strong>de</strong>ntifiant.<br />
Si les <strong>de</strong>ux bases <strong>de</strong> données contiennent <strong>de</strong>s variables ayant le même nom, merge<br />
retient par défaut les valeurs du fichier maître. On peut modifier cette action en utilisant<br />
l’option update : avec l’option update, l’instruction merge remp<strong>la</strong>ce les valeurs<br />
manquantes dans le fichier maître par les valeurs <strong>de</strong> l’autre base <strong>de</strong> données.<br />
Par défaut, merge conserve les lignes qui proviennent <strong>de</strong>s <strong>de</strong>ux fichiers, même<br />
lorsqu’elles ne peuvent pas être appariées. L’option nokeep élimine les lignes <strong>de</strong> <strong>la</strong> base<br />
<strong>de</strong> données sur disque qui ne peuvent pas être appariées à une ligne du fichier maître<br />
(Hébert, 2003, p. 26).<br />
33
L’instruction merge ajoute toujours <strong>la</strong> nouvelle variable _merge dans le fichier qu’elle<br />
produit. La valeur <strong>de</strong> cette variable indique comment a été constituée chacune <strong>de</strong>s lignes<br />
du fichier qu’elle a produit.<br />
1 indique que <strong>la</strong> ligne provient d’une ligne du fichier maître qui n’a pas été appariée<br />
à une ligne du fichier conservé sur disque.<br />
2 indique que <strong>la</strong> ligne provient d’une ligne du fichier conservé sur disque qui n’a<br />
pas été appariée à une ligne du fichier maître.<br />
3 indique que ligne résulte <strong>de</strong> <strong>la</strong> fusion <strong>de</strong> <strong>de</strong>ux lignes appariées.<br />
L’annexe 2 montre un exemple plus concret à l’ai<strong>de</strong> <strong>de</strong> l’EDTR.<br />
7. Manipu<strong>la</strong>tion <strong>de</strong>s données II<br />
7.1 Sélectionner <strong>de</strong>s variables ou <strong>de</strong>s observations<br />
Éliminer une variable<br />
Éliminer une observation<br />
drop varlist<br />
drop if exp [in range]<br />
Ainsi, l’instruction drop ecage26 ecsex99 éliminera les <strong>de</strong>ux variables précé<strong>de</strong>ntes.<br />
Ou alors, drop if ecage2665 éliminera les observations <strong>de</strong> gens<br />
qui n’ont pas entre 18 et 65 ans inclusivement.<br />
Conserver une variable<br />
Conserver une observation<br />
keep varlist<br />
keep if exp [in range]<br />
Ainsi, l’instruction keep ecage26 ecsex99 ne conserva que ces <strong>de</strong>ux variables. keep<br />
if ecage26>=18 & ecage26
7.2 Relier <strong>de</strong>s observations<br />
Pour utiliser l’information d’une observation pour une autre observation, on peut utiliser<br />
<strong>de</strong>ux variables <strong>de</strong> système :<br />
_n contient le numéro <strong>de</strong> l’observation selon le présent ordre.<br />
_N contient le nombre total d’observations et aussi le numéro <strong>de</strong> <strong>la</strong> <strong>de</strong>rnière<br />
observation.<br />
Si les observations sont rec<strong>la</strong>ssées, <strong>la</strong> valeur <strong>de</strong> _n changera aussi.<br />
Par exemple, on aurait (Hébert, 2003, p. 27) :<br />
gen obsno = _n obsno est égal au numéro <strong>de</strong><br />
l’observation.<br />
gen obsnoplus1 = _n+1 obsnoplus1 est égal au numéro <strong>de</strong><br />
l’observation plus 1.<br />
gen <strong>la</strong>g_x1 = x1[_n-1] <strong>la</strong>g_x1 prend <strong>la</strong> valeur <strong>de</strong> x1 <strong>de</strong><br />
l’observation qui précè<strong>de</strong>.<br />
gen <strong>la</strong>st_x1 = x1[_N] <strong>la</strong>st_x1 prend <strong>la</strong> valeur <strong>de</strong> x1 <strong>de</strong> <strong>la</strong><br />
<strong>de</strong>rnière observation.<br />
gen cum_x1 = sum(x1[_n-1]) cum_x1 fait <strong>la</strong> somme <strong>de</strong>s valeurs <strong>de</strong> x1<br />
jusqu’à l’observation précé<strong>de</strong>nte.<br />
Lorsqu’on utilise l’instruction « by<br />
varname: », _n <strong>de</strong>vient le numéro <strong>de</strong><br />
l’observation dans chaque valeur <strong>de</strong> varname.<br />
_N est alors le numéro <strong>de</strong> <strong>la</strong> <strong>de</strong>rnière<br />
observation dans chaque valeur <strong>de</strong> varname.<br />
Par exemple,<br />
by pvreg25 : gen idn= _n<br />
produit un numéro d’observation qui<br />
recommence à 1 pour chaque province.<br />
Voir help varlist et help tsset pour plus<br />
<strong>de</strong> détails.<br />
35
7.3 Répéter <strong>de</strong>s instructions<br />
L’instruction for peut être utilisée pour répéter une instruction selon une liste <strong>de</strong><br />
variables, une logique numérique ou <strong>de</strong>s mots.<br />
for varlist varlist : commands_involving_X<br />
for newlist newvarlist: commands_involving_X<br />
for numlist numlist: commands_involving_X<br />
for anylist wordlist: commands_involving_X<br />
Des exemples permettront <strong>de</strong> comprendre.<br />
for varlist earng42 ecage26 ecsex99: sum X<br />
-> sum earng42<br />
Variable | Obs Mean Std. Dev. Min Max<br />
-------------+--------------------------------------------------------<br />
earng42 | 56216 21708.29 30166.52 -65000 835500<br />
-> sum ecage26<br />
Variable | Obs Mean Std. Dev. Min Max<br />
-------------+--------------------------------------------------------<br />
ecage26 | 56216 45.14199 17.90092 16 80<br />
-> sum ecsex99<br />
Variable | Obs Mean Std. Dev. Min Max<br />
-------------+--------------------------------------------------------<br />
ecsex99 | 56216 1.523143 .4994686 1 2<br />
clear<br />
set mem 300m<br />
use "edtr2002 personnes.dta"<br />
tab pvreg25, g(prov)<br />
for newlist v1-v10: g X = proX<br />
keep v1-v10<br />
-> g v1 = prov1<br />
-> g v2 = prov2<br />
-> g v3 = prov3<br />
-> g v4 = prov4<br />
-> g v5 = prov5<br />
-> g v6 = prov6<br />
-> g v7 = prov7<br />
-> g v8 = prov8<br />
-> g v9 = prov9<br />
-> g v10 = prov10<br />
for numlist 1/11: rename provX stateX<br />
-> rename prov1 state1<br />
-> rename prov2 state2<br />
-> rename prov3 state3<br />
-> rename prov4 state4<br />
-> rename prov5 state5<br />
-> rename prov6 state6<br />
-> rename prov7 state7<br />
-> rename prov8 state8<br />
-> rename prov9 state9<br />
-> rename prov10 state10<br />
-> rename prov11 state11<br />
clear<br />
set mem 300m<br />
use "edtr2002 personnes.dta"<br />
<strong>la</strong>bel <strong>de</strong>fine mf 1 "male" 2 "female"<br />
<strong>la</strong>bel values ecsex99 mf<br />
keep if ecsex99 summarize earng42 if gen<strong>de</strong>r=="male"<br />
Variable | Obs Mean Std. Dev. Min Max<br />
36
-------------+--------------------------------------------------------<br />
earng42 | 26807 28602.82 36368.41 -65000 835500<br />
-> summarize earng42 if gen<strong>de</strong>r=="female"<br />
Variable | Obs Mean Std. Dev. Min Max<br />
-------------+--------------------------------------------------------<br />
earng42 | 29409 15423.77 21238.9 -28000 410000<br />
Voir aussi help for, help foreach et help forvalues.<br />
7.4 Remo<strong>de</strong>ler une base <strong>de</strong> données<br />
Certaines enquêtes mesurent plusieurs fois les mêmes variables auprès <strong>de</strong>s mêmes unités<br />
d’observation.<br />
Dans les enquêtes biographiques, on recueille <strong>de</strong> l’information sur les différents aspects<br />
<strong>de</strong> <strong>la</strong> biographie <strong>de</strong>s individus, par exemple sur chacun <strong>de</strong> ses emplois ou chacune <strong>de</strong> ses<br />
unions. Dans une telle enquête, on recueille donc une série complète <strong>de</strong> réponses aux<br />
questions sur les caractéristiques <strong>de</strong> l’emploi pour chacun <strong>de</strong>s emplois et une série<br />
complète <strong>de</strong> réponses aux questions sur les caractéristiques <strong>de</strong> l’union pour chacune <strong>de</strong>s<br />
unions.<br />
Dans les enquêtes à passages répétés, on s’intéresse généralement à l’évolution d’une ou<br />
plusieurs caractéristiques au fil du temps. On aura donc, par exemple, plusieurs mesures<br />
du revenu ou <strong>de</strong>s résultats sco<strong>la</strong>ires réalisées auprès <strong>de</strong>s mêmes individus à <strong>de</strong>s moments<br />
différents.<br />
Dans les <strong>de</strong>ux cas, on se trouve donc à <strong>de</strong>voir stocker plusieurs séries <strong>de</strong> variables<br />
semb<strong>la</strong>bles pour chaque individu. Il existe plusieurs manières <strong>de</strong> stocker <strong>de</strong>s séries <strong>de</strong><br />
variables semb<strong>la</strong>bles et Stata permet d’en utiliser facilement <strong>de</strong>ux : <strong>la</strong> métho<strong>de</strong> dans<br />
<strong>la</strong>quelle on conserve chaque série <strong>de</strong> variables dans une ligne différente d’un fichier <strong>de</strong><br />
données et <strong>la</strong> métho<strong>de</strong> dans <strong>la</strong>quelle on ajoute les séries <strong>de</strong> variables les unes à <strong>la</strong> suite <strong>de</strong><br />
autres sur <strong>la</strong> même ligne. Dans le premier cas, le fichier peut contenir plus d’une ligne par<br />
unité d’observation; dans le second cas, il ne contient qu’une seule ligne par unité<br />
d’observation. Dans le jargon <strong>de</strong> Stata, <strong>la</strong> première métho<strong>de</strong> produit un fichier « long »<br />
(long dataset) alors que <strong>la</strong> secon<strong>de</strong> produit un fichier « <strong>la</strong>rge » (wi<strong>de</strong> dataset).<br />
Chaque métho<strong>de</strong> a ses avantages et ses inconvénients, mais peu importe celle que l’on<br />
choisit pour stocker les données, il <strong>de</strong>vient souvent nécessaire <strong>de</strong> passer d’une forme à<br />
l’autre pour préparer les données nécessaires à une analyse. L’instruction reshape<br />
permet <strong>de</strong> remo<strong>de</strong>ler sans douleur une base longue en base <strong>la</strong>rge et vice versa .<br />
Hébert (2003, p. 29) donne l’exemple suivant :<br />
reshape wi<strong>de</strong> ij_variables, i(varlist) j(varname)<br />
reshape long ij_variables, i(varlist) j(varname)<br />
37
L’instruction reshape wi<strong>de</strong> transforme une base « longue » en base « <strong>la</strong>rge ».<br />
L’instruction reshape long transforme une base « <strong>la</strong>rge » en base « longue ».<br />
ij_variables désigne <strong>la</strong> liste <strong>de</strong>s variables qui ont été mesurées plus d’une fois aurpès<br />
<strong>de</strong>s unités d’observation.<br />
i(varlist) désigne <strong>la</strong> variable ou les variables qui permettent d’i<strong>de</strong>ntifier les unités<br />
d’observation.<br />
j(varlist) désigne <strong>la</strong> variable ou les variables qui permettent d’i<strong>de</strong>ntifier les séries <strong>de</strong><br />
variables mesurées plus d’une fois. Dans <strong>la</strong> base <strong>de</strong> données d’une enquête biographique,<br />
j désignera par exemple le rang <strong>de</strong> chaque emploi ou <strong>de</strong> chaque union. Dans une enquête<br />
à passage répétés, j désignera<br />
généralement le rang du passage.<br />
Par exemple,<br />
on aurait :<br />
clear<br />
use "long dataset.dta"<br />
reshape wi<strong>de</strong> inc, i(id) j(year)<br />
(note: j = 1999 2000 2001)<br />
Data long -> wi<strong>de</strong><br />
-----------------------------------------------------------------<br />
Number of obs. 9 -> 3<br />
Number of variables 4 -> 5<br />
j variable (3 values) year -> (dropped)<br />
xij variables:<br />
inc -> inc1999 inc2000 inc2001<br />
-----------------------------------------------------------------<br />
clear<br />
use "wi<strong>de</strong> dataset.dta"<br />
reshape long inc, i(id) j(year)<br />
(note: j = 1999 2000 2001)<br />
Data wi<strong>de</strong> -> long<br />
-----------------------------------------------------------------<br />
Number of obs. 3 -> 9<br />
Number of variables 5 -> 4<br />
j variable (3 values) -> year<br />
xij variables:<br />
inc1999 inc2000 inc2001 -> inc<br />
-----------------------------------------------------------------<br />
Voir help reshape pour <strong>de</strong> l’ai<strong>de</strong><br />
8. Lire <strong>de</strong>s bases <strong>de</strong> données brutes<br />
Stata ne lit les fichiers <strong>de</strong> données binaires produits par d’autres logiciels statistiques<br />
comme SAS ou SPSS. Des bases <strong>de</strong> données <strong>de</strong> diverses extensions sont donc<br />
normalement sauvegardées en format texte, <strong>de</strong> préférence avec l’extension .raw qui<br />
correspond, pour Stata, à un fichier <strong>de</strong> données brutes en format texte.<br />
La manière dont les données<br />
sont séparées déterminera quelle instruction il faudra utiliser<br />
pour les lire avec Stata.<br />
Une fois <strong>la</strong> base <strong>de</strong> données intégrée<br />
dans Stata, il suffit d’utiliser l’instruction save pour<br />
<strong>la</strong> sauvegar<strong>de</strong>r au format .dta.<br />
38
8.1 Les fichiers dont les valeurs sont délimitées par <strong>de</strong>s<br />
tabu<strong>la</strong>tions ou <strong>de</strong>s virgules<br />
Nous suivons ici Hébert (2003 : 11-12).<br />
insheet [varlist] using “[path\]filename” [, clear]<br />
La seule condition est qu’il faut qu’il n’y ait qu’une seule observation par ligne.<br />
Autrement, il faudra utiliser l’instruction infile.<br />
L’instruction insheet reconnaît automatiquement si les données sont séparées par <strong>de</strong>s<br />
tabu<strong>la</strong>tions ou <strong>de</strong>s virgules.<br />
Elle détecte aussi le nom <strong>de</strong>s variables. Il ne faut donc pas les préciser.<br />
Par défaut, en l’absence <strong>de</strong> noms <strong>de</strong> variables, Stata les nommera var1, var2, etc...<br />
Voici <strong>de</strong>ux exemples :<br />
insheet using example1_tab.txt<br />
Ici, on doit préciser les noms <strong>de</strong>s variables, car <strong>la</strong> base <strong>de</strong> données n’en contient pas.<br />
insheet idnum gen<strong>de</strong>r age educ income using example1_comma.txt<br />
8.2 Les fichiers dont les valeurs sont délimitées par <strong>de</strong>s espaces<br />
infile varlist using “[path\]filename” [if exp] [in range] [,<br />
clear]<br />
Ici, il faut absolument fournir les noms <strong>de</strong>s variables, car <strong>la</strong> base <strong>de</strong> données ne peut<br />
contenir le nom <strong>de</strong>s variables sur <strong>la</strong> première ligne.<br />
Dans <strong>la</strong> base <strong>de</strong> données, les variables en texte (string variable) doivent être entre<br />
guillemets si elles contiennent <strong>de</strong>s espaces.<br />
Une observation prend au minimum une ligne, peut-être plus, mais il n’y a jamais plus<br />
d’une observation par ligne.<br />
L’instruction infile peut aussi gérer <strong>de</strong>s valeurs séparées par <strong>de</strong>s tabu<strong>la</strong>tions ou <strong>de</strong>s<br />
virgules, mais insheet est préférable.<br />
Voir help infile pour plus <strong>de</strong> détails.<br />
39
Par exemple, on aurait ici :<br />
infile idnum str1 gen<strong>de</strong>r age educ income using example1_free.txt<br />
str1 spéficie que <strong>la</strong> variable gen<strong>de</strong>r est une variable alphanumérique d’un seul<br />
caractère (string variable with # character). Voir help datatypes pour plus <strong>de</strong> détails.<br />
8.3 Les fichiers en format fixe<br />
Dans ce type <strong>de</strong> fichier, rien ne sépare les données, mais chacune <strong>de</strong>s informations est<br />
toujours au même endroit pour chaque ligne.<br />
Il faut dire à Stata où commence chacune <strong>de</strong>s variables. Voir help infix pour plus <strong>de</strong><br />
détails.<br />
infix specifications using “[path\]filename” [if exp] [in range]<br />
[, clear]<br />
Par exemple, on aurait ici:<br />
infix idnum 1-3 str1 gen<strong>de</strong>r 4 age 5-6 educ 7-8 income 9-13 using<br />
example1_fixed.txt<br />
8.4 Un exemple en format fixe à partir d’un fichier SPSS<br />
(voir l’annexe 1 pour le do-file complet)<br />
Sur le site Web du CREPUQ (Conférence <strong>de</strong>s recteurs et <strong>de</strong>s principaux <strong>de</strong>s universités<br />
du Québec), vous avez une foule <strong>de</strong> bases <strong>de</strong> données disponibles dont l’EDTR pour les<br />
années 1998 à 2002. 2 Par contre, elles ne sont offertes qu’en SAS et SPSS.<br />
1. Ouvrir le fichier d’instructions SPSS<br />
ec2002pr.<strong>la</strong>y avec WordPad<br />
2. Dans le do-file, faire un copier coller <strong>de</strong> <strong>la</strong><br />
liste <strong>de</strong>s variables.<br />
3. Enlever les parenthèses après les noms <strong>de</strong>s<br />
variables et les chiffres pour ne gar<strong>de</strong>r que les<br />
numéros <strong>de</strong> lignes.<br />
4. Inscrire avant le début <strong>de</strong>s variables :<br />
clear<br />
set mem 300m<br />
#<strong>de</strong>limit ;<br />
infix<br />
5. Télécharger le fichier texte *.dat<br />
http://sherlock.bib.umontreal.ca/ENQ-<br />
10414/data/slid2002pr-dat.zip<br />
2 http://sherlock.crepuq.qc.ca/cgi-bin/sherlock.pl?<strong>la</strong>ngue=F;action=LAE;region=Canada;region=Autres<br />
40
Enregistrer le fichier dans le répertoire <strong>de</strong> travail sous EC2002PR.dat<br />
6. À <strong>la</strong> fin, inscrire le nom du fichier texte :<br />
using EC2002PR.dat;<br />
41
Annexe 1 – Exemple d’un fichier fixe à partir d’un fichier SPSS<br />
clear<br />
set mem 300m<br />
#<strong>de</strong>limit ;<br />
infix<br />
pucpid26 1 - 7<br />
puchid25 8 - 14<br />
d31fam26 15 - 16<br />
d31cf26 17 - 18<br />
year99 19 - 22<br />
icswt26 23 - 32<br />
ecage26 33 - 35<br />
ecsex99 36 - 36<br />
ecyob26 37 - 40<br />
marst26 41 - 42<br />
mjacg26 43 - 43<br />
immst15 44 - 44<br />
yrimmg26 45 - 45<br />
disabs26 46 - 46<br />
pvreg25 47 - 48<br />
uszga25 49 - 49<br />
hhsz25 50 - 51<br />
HHCOMP25 52 - 52<br />
dwltyp25 53 - 53<br />
dwtenr25 54 - 54<br />
repa25 55 - 55<br />
suit25 56 - 56<br />
multj28 57 - 57<br />
nbjbs28 58 - 59<br />
alfst28 60 - 61<br />
ml01v28 62 - 63<br />
ml02v28 64 - 65<br />
ml03v28 66 - 67<br />
ml04v28 68 - 69<br />
ml05v28 70 - 71<br />
ml06v28 72 - 73<br />
ml07v28 74 - 75<br />
ml08v28 76 - 77<br />
ml09v28 78 - 79<br />
ml10v28 80 - 81<br />
ml11v28 82 - 83<br />
ml12v28 84 - 85<br />
wksem28 86 - 87<br />
wksnlf28 88 - 89<br />
wksuem28 90 - 91<br />
fpdwk28 92 - 92<br />
fsein28 93 - 93<br />
fseui28 94 - 94<br />
alhrp28 95 - 98<br />
mtlswk28 99 - 101<br />
scsum28 102 - 103<br />
cmphrw28 104 - 109<br />
rcvcmp28 110 - 110<br />
yrxfte11 111 - 112<br />
jobdur1 113 - 115<br />
clwkr1 116 - 117<br />
fllprt1 118 - 118<br />
42
eaisc1 119 - 120<br />
reawpt1 121 - 122<br />
scdtyp1 123 - 124<br />
tothrp1 125 - 128<br />
typpt1 129 - 129<br />
wkhm1 130 - 130<br />
hrwkhm1 131 - 135<br />
s91g2e6 136 - 137<br />
imphwe1 138 - 143<br />
penpln1 144 - 144<br />
uncoll1 145 - 145<br />
muloc10 146 - 146<br />
nai3g10 147 - 148<br />
nbema10 149 - 149<br />
nbempl1 150 - 150<br />
pubpv10 151 - 151<br />
alimo42 152 - 159<br />
alip42 160 - 167<br />
atinc42 168 - 175<br />
capgn42 176 - 183<br />
ccar42 184 - 191<br />
chfed42 192 - 199<br />
chprv42 200 - 207<br />
chtxb42 208 - 215<br />
cpqpp42 216 - 223<br />
cqpc42 224 - 231<br />
earng42 232 - 239<br />
eipr42 240 - 247<br />
fditx42 248 - 255<br />
fmse42 256 - 263<br />
gstxc42 264 - 271<br />
gtr42 272 - 279<br />
inctx42 280 - 287<br />
inva42 288 - 295<br />
majri42 296 - 297<br />
mbinc42 298 - 305<br />
medx42 306 - 313<br />
mtinc42 314 - 321<br />
nfmse42 322 - 329<br />
oasgi42 330 - 337<br />
ottxm42 338 - 345<br />
pen42 346 - 353<br />
phpr42 354 - 361<br />
pvitx42 362 - 369<br />
pvtxc42 370 - 377<br />
rppc42 378 - 385<br />
rspwi42 386 - 393<br />
sapis42 394 - 401<br />
semp42 402 - 409<br />
ttinc42 410 - 417<br />
udpd42 418 - 425<br />
uiben42 426 - 433<br />
wgsal42 434 - 441<br />
wkrcp42 442 - 449<br />
atbus20 450 - 450<br />
atcc20 451 - 451<br />
atcegp20 452 - 452<br />
atelhi20 453 – 453<br />
attrd20 454 - 454<br />
atuniv20 455 - 455<br />
43
cmphi20 456 - 456<br />
fllprt20 457 - 457<br />
rccoll20 458 - 458<br />
rcuniv20 459 - 459<br />
studtf26 460 - 460<br />
cmphi18 461 - 461<br />
dgcoll18 462 - 462<br />
dguniv18 463 - 463<br />
encoll18 464 - 464<br />
enuniv18 465 - 465<br />
hleveg18 466 - 467<br />
yrcoll18 468 - 471<br />
yrelhi18 472 - 475<br />
yrpsec18 476 - 479<br />
yrrnug18 480 - 481<br />
yrrung18 482 - 483<br />
yrschl18 484 - 487<br />
yruniv18 488 - 491<br />
using EC2002PR.dat;<br />
44
Annexe 2 – Exemple <strong>de</strong> fusion d’un fichier<br />
clear<br />
set mem 300m<br />
use “edtr2002 personnes.dta”<br />
* Creation <strong>de</strong>s variables<br />
g echantillon=(earng42
BIBLIOGRAPHIE<br />
Hamilton, Lawrence C. 2006. Statistics with Stata. Toronto: Thomson Brooks/Cole,<br />
408 p.<br />
Hébert, Benoît-Paul. 2003. Introduction to Stata. Montréal: CIED / CÉETUM / CIQSS,<br />
30 p.<br />
Ouellet, Estelle avec l’apport d’Isabelle Belley-Ferris et <strong>de</strong> Simon Leblond. 2005. Gui<strong>de</strong><br />
d’économétrie appliquée pour Stata pour ECN 3950 et FAS 3900. Montréal :<br />
Université <strong>de</strong> Montréal, 68 p.<br />
(30<br />
mai 2007).<br />
Stock, James H. et Mark W. Watson. 2003. Introduction to Econometrics. Montréal:<br />
Addison Wesley, 696 p.<br />
OUVRAGES D’INTRO<strong>DU</strong>CTION À STATA<br />
Acock, A<strong>la</strong>n C. 2006. A Gentle Introduciton to Stata. College Station TX: Stata Press.<br />
289 p.<br />
Kohler, Ulrich and Frauke Kreuter. 2005. Data Analysis Using Stata. College Station TX:<br />
Stata Press. 378 p.<br />
46