Vous êtes sur la page 1sur 8

Tutoriel Stata

Moussa DABO

Octobre 2017

1 Introduction
Stata est un puissant logiciel statistique, très adapté à la manipulation de données. Il intègre la plupart des
techniques d’analyse statistique (classiques comme récentes) et est doté d’un des meilleurs systèmes de production
de graphiques. Comparativement aux autres logiciels de traitement de données, Stata est plutôt rapide et facile
d’utilisation.
Ce tutoriel est une introduction aux fonctionalités principales de Stata. Il est basé sur le Stata Tutorial de Germán
Rodríguez, disponible sur ce lien, et comprend essentiellement 4 parties. La première consacre une présentation
du logiciel (interface, fonctionement, . . . ). Les autres parties traitent successivement l’analyse de données, la
production de graphiques et la programmation sous Stata.

1.1 Présentation de Stata

Stata est disponible pour les environnements Windows, OS X et Linux. La version standard est Stata/IC (Intercooled
Stata) qui permet de manipuler des bases de données comportant au plus 2 047 variables. Il existe aussi une édition
spéciale (version professionnelle), Stata/SE, pour laquelle ce nombre passe à 32 766. Enfin, la version Stata/MP
utilise les possibilités de calcul parallèle sur des machines multi-processeurs et donne la possibilité de travailler avec
des jeux de données encore plus grands. Par ailleurs, ces versions existent en 32-bit et 64-bit.

1.1.1 L’interface de Stata

Au premier démarrage, l’interface de Stata comprend 5 fenêtres, disposées comme sur la figure suivante.

Figure 1: Interface de démarrage de Stata

1
C’est au niveau de la fenêtre Command qu’il faut entrer les instructions (commandes) à faire exécuter au logiciel.
Les résultats (ou une erreur si la syntaxe n’est pas correcte) sont alors affichés sur la fenêtre Results. Ensuite,
la commande est ajoutée à la liste sur la fenêtre Review située à gauche. Il est ensuite possible de revenir sur
n’importe quelle commande par un simple clic sur cette liste. Il y a ensuite la fenêtre Variables, située dans le coin
supérieur droit de l’interface, qui comporte une liste des variables de la base de données (si vous en avez chargée
une). Enfin, la fenêtre Properties, introduite avec la version 12 de Stata, donne un aperçu sur les métadonnées.
Il est possible de modifier cet affichage (changer la taille, la couleur de l’arrière-plan ou même fermer certaines
de ces fenêtres), de même que les styles de police utilisés pour chaque fenêtre au niveau de la boîte de dialogue
Preferences accessible depuis la barre de menu.
D’autres fenêtres (Graph, Viewer, Variables Manager, Data Editor et Do file Editor) seront présentées dans la suite
de ce tutoriel.
Depuis la version 8 du logiciel, l’interface graphique (GUI ) de Stata permet de sélectionner des commandes et
options depuis le menu et ainsi de travailler avec le logiciel sans faire de la programmation. Cependant, l’utilisation
du GUI n’est pas recommandée parce qu’elle ne permet pas une reproductibilité des résultats. Il y a aussi plusieurs
fonctionnalités de Stata qui ne sont pas accessibles à partir du GUI, notamment les contributions de développeurs
indépendants. Ainsi, ce tutoriel ne fait pas mention du GUI dans ce qui suit.

1.1.2 Les commandes sous Stata

Stata peut être utilisé comme une calculatrice avec la commande display comme dans les exemples suivants (le
point situé en début de ligne est une façon de distinguer les lignes pour Stata et ne fait pas partie de la commande) :
. display 2+2
4
. display 2 * ttail(20, 2.1)
.04861759

Les commandes sous Stata sont sensibles à la casse, display et Display ne veulent pas dire la même chose et
la deuxième commande produira une erreur. Il est possible d’abbréger les commandes et dans la documentation
comme sur l’aide en ligne, la plus courte abbréviation possible de chaque commande est soulignée et ce formalisme
est aussi adopté pour ce tutoriel (la plus courte abbréviation possible de la commande display est d par exemple).
Le deuxième exemple montre l’utilisation d’une fonction intégrée qui donne une p-value, 2 fois la probabilité qu’une
statistique t de Student avec 20 degrés de liberté dépasse la valeur 2,1 dans ce cas.
Si l’exécution d’une commande produit une erreur, il suffit de la sélectionner sur la fenêtre Review pour modifier la
syntaxe si vous connaissez l’origine de l’erreur. Sinon, il est toujours possible d’obtenir de l’aide en ligne.

1.1.3 Obtenir de l’aide

Pour obtenir de l’aide sur une commande ou une fonction intégrée, il faut taper help nom_de_la_commande, qui
affiche l’aide sur une nouvelle fenêtre appelée Viewer. Vous pouvez aussi taper chelp nom_de_la_commande pour
avoir l’aide sur la fenêtre Results, mais ceci n’est pas recommandé.
Si vous ne connaissez pas le nom de la commande pour exécuter une tâche particulière, vous pouvez utiliser la
commande search qui parcourt la documentation de Stata et d’autres resources pour trouver des commandes qui
correspondent à votre recherche. Par exemple la commande search linear regression donne une liste exhaustive
des commandes, fonctions, livres et même tutoriels vidéo sur la régression linéaire documentés au niveau de l’aide
officielle.
Par ailleurs, depuis la version 11, toute la documentation de Stata est disponible en fichiers PDF que vous pouvez
télécharger. Pour plus de détails sur l’aide en ligne, tapez help help. Il existe aussi plusieurs forums et sites web
dédiés où vous pourrez poser une question sur une commande ou bien tâche que vous souhaitez exécuter et obtenir
une réponse satisfaisante dans un délai raisonable.

1.1.4 Chargement d’une base de données intégrée

Il existe au niveau du dossier d’installation de Stata quelques exemples de jeux de données. Pour voir la liste de
toutes les bases enregistrées lors de l’installation de Stata, tapez sysuse dir. Le chargement d’une de ces bases se
fait comme dans l’exemple suivant qui importe des données sur l’espérance de vie et le PNB de 68 pays en 1998. La
commande describe donne un aperçu sur le contenu du fichier importé.
. sysuse lifeexp, clear
(Life expectancy, 1998)
. desc
Contains data from /Applications/Stata/ado/base/l/lifeexp.dta

2
obs: 68 Life expectancy, 1998
vars: 6 26 Mar 2014 09:40
size: 2,652 (_dta has notes)

storage display value


variable name type format label variable label

region byte %12.0g region Region


country str28 %28s Country
popgrowth float %9.0g * Avg. annual % growth
lexp byte %9.0g * Life expectancy at birth
gnppc float %9.0g * GNP per capita
safewater byte %9.0g *
* indicated variables have notes

Sorted by:

Il apparait que la base comporte 6 variables. Elle est aussi commentée et les commentaires peuvent être consultés
avec la commande notes. La commande notes nom_de_la_variable permet de voir les notes sur une variable
spécifique.

1.1.5 Statistiques descriptives

Dans cette sous-section, l’attention sera portée sur 2 variables : l’espérance de vie (lexp) et le PNB per capita
(gnppc). La commande summarize, suivie des noms de variables, donne les valeurs de quelques statistiques sur ces
variables. Si la commande n’est pas suivie d’un nom de variable, elle est exécutée pour toute les variables de la base.
. summarize lexp gnppc
Variable Obs Mean Std. Dev. Min Max

lexp 68 72.27941 4.715315 54 79


gnppc 63 8674.857 10634.68 370 39980

L’espérance de vie moyenne est donc de 72,3 ans et le PNB per capita varie entre $370 et $39,980, avec une moyenne
de $8,675. Il apparait également qu’il y a seulement 63 observations sur le PNB per capita : il y a donc des valeurs
manquantes. La commande suivante donne la liste des pays dont le PNB per capita n’est pas renseigné.
. list country gnppc if missing(gnppc)

country gnppc

7. Bosnia and Herzegovina .


40. Turkmenistan .
44. Yugoslavia, FR (Serb./Mont.) .
46. Cuba .
56. Puerto Rico .

Il y a ainsi 5 pays avec des données manquantes. Cet exemple illustre une caractéristique importante de la
programmation sous Stata : l’action de n’importe quelle commande peut être restrainte à une partie des données .
Si la condition if missing(gnppc) avait été exlue, tous les 68 pays de la base apparaîtraient sur la liste. Il est à
noter que Stata dénote une valeur manquante par un point. Les données manquantes sont traitées plus en détails
dans la deuxième partie.

1.1.6 Dessiner un nuage de points

Pour voir comment l’espérance de vie varie avec le PNB per capita, il est possible de faire un nuage de points
avec la commande graph qui a plusieurs sous-commandes et options dont certaines sont passées en revue dans la
troisième partie du tutoriel.
. graph twoway scatter lexp gnppc
. graph export scatter.png, width(500) replace
(file scatter.png written in PNG format)

Le graphique (à la page suivante) montre une relation curviligne entre l’espérance de vie et le PNB per capita. Au
niveau de la sous-section suivante, nous verrons s’il est possible de linéariser cette relation en prenant le logarithme
du PNB per capita.

1.1.7 Créer de nouvelles variables

La création de variables se fait avec la commande generate suivie d’un nouveau nom de variable et d’une expression
arithmétique. Le choix des noms de variables est important lorsque vous travailler sur un projet. Il faudra

3
Figure 2: Espérance de vie à la naissance suivant le PNB per capita

notamment veiller à ce que le nom de la variable donne une idée sur ce qu’elle évalue. Pour le logarithme du
PNB per capita par exemple, nous choisirons loggnppc. Des noms du type log_gnp_pc ou LogGnpPc sont aussi
couramment utilisés. Mais pour avoir une cohérence interne, le même format de nom doit être utilisé pour toutes
les variables.
La fonction intégrée log permet de calculer le logarithme de la variable fournie en argument :
. gen loggnppc = log(gnppc)
(5 missing values generated)

Les valeurs manquantes qui sont générées correspondent aux pays dont le PNB per capita n’est pas renseigné.

1.1.8 Régression linéaire simple

Nous pouvons à présent faire une régression de l’espérance de vie sur le logarithme du PNB per capita. La
commande regress, suivie du nom de la variable indépendante puis des régresseurs (un seul dans notre cas) permet
d’effectuer cette régression.
. regress lexp loggnppc
Source SS df MS Number of obs = 63
F(1, 61) = 97.09
Model 873.264865 1 873.264865 Prob > F = 0.0000
Residual 548.671643 61 8.99461709 R-squared = 0.6141
Adj R-squared = 0.6078
Total 1421.93651 62 22.9344598 Root MSE = 2.9991

lexp Coef. Std. Err. t P>|t| [95% Conf. Interval]

loggnppc 2.768349 .2809566 9.85 0.000 2.206542 3.330157


_cons 49.41502 2.348494 21.04 0.000 44.71892 54.11113

Cette régression est basée sur les 63 observations avec des données complètes. Stata élimine automatiquement toutes
les observations ayant une donnée manquante, que ce soit pour la variable indépendante ou pour les régresseurs. À
la lumière du résultat de cette commande, nous pouvons dire que le logarithme du PNB per capita “explique” 61%
de la variance de l’espérance de vie. Il apparait aussi qu’une hausse de 1% du PNB per capita se traduit par une
augmentation de l’espérance de vie de 0,0277 années.
Après une régression, vous pouvez taper à nouveau la commande reg sans les arguments pour revoir les résultats.

4
1.1.9 Commandes post-estimation

Stata dispose d’un nombre important de commandes pour une analyse post-estimation. Il y a notamment la
commande predict qui permet de générer les prédictions du modèle, ainsi que les résidus. Par exemple,
. predict plexp
(option xb assumed; fitted values)
(5 missing values generated)

crée une nouvelle variable (plexp) qui comporte les espérances de vie prédites par le modèle précédent. Il est à
noter que la prédiction est effectuée même pour les pays qui ont été exclus de la régression du fait des données
manquantes. Il s’agit là d’une méthode d’estimation des valeurs manquantes.

1.1.10 Représentation des données et de l’ajustement linéaire

Une pratique courante après une régression est la superposition de la ligne de régression et du nuage de point.
Le graphique qui en résulte donne une idée sur la qualité de l’ajustement. Il est possible de faire cela avec la
variable plexp que nous venons de créer, mais en indiquant le type lfit à la commande graph de Stata comme
dans l’exemple suivant , nous obtenons directement le résultat souhaité.
. graph twoway (scatter lexp loggnppc) (lfit lexp loggnppc)
. graph export fit.png, width(500) replace
(file fit.png written in PNG format)

Figure 3:

Dans cette commande, chaque expression dans une paranthèse définit un graphique différent qui est superposé aux
autres. L’ajustement semble “raisonablement bon”, mais nous avons la présence de valeurs aberrantes.

1.1.11 Faire la liste d’une sélection d’observations

Il est difficile de ne pas remarquer le pays situé en bas à gauche du graphique, qui a une espérance de vie
particulièrement basse. Avec la commande list, il est possible de filtrer la base pour identifier ce pays. Par
exemple, la commande suivante établit la liste des pays avec une espérance de vie inférieure à 55 ans.
. list country lexp plexp if lexp < 55, clean
country lexp plexp
50. Haiti 54 66.06985

Il apparait que le pays en question était Haiti, avec une espérance de vie inférieure de 12 années à la prédiction
basée sur le PNB per capita. Le mot clean est une option qui enlève les bordures sur le tableau qui résulte de la
commande list. Pour chaque commande, il est possible de spécifier des options et nous reviendrons plus en détails
sur ce point dans ce qui suit. Si vous voulez par exemple voir l’espérance de vie en France, vous pouvez taper :
5
. list gnppc loggnppc lexp plexp if country == "France", clean
gnppc loggnppc lexp plexp
14. 24210 10.09452 78 77.36018

La double égalité permet d’évaluer une expression logique. La commande x = 2 assigne la valeur 2 à la variable x
tandis que la commande x == 2 vérifie si la variable x a pour valeur 2.

1.2 Utilisation efficiente de Stata

Les commandes et résultats affichés sur la fenêtre Results disparaissent lorsque vous quittez Stata. Par conséquent,
si vous avez besoin de sauvegarder vos résultats ou vos commandes (lorsque vous travaillez dans le cadre d’un projet
par exemple), il est important de respecter les consignes suivantes.

1.2.1 Créer un dossier Projet

Stata charge et enregistre vos données dans un dossier dénommé répertoire de travail. Il est possible de spécifier
un dossier de votre choix avec la commande cd, suivie du chemin de votre dossier. La commande pwd affiche le
chemin du répertoire sur lequel vous êtes entrain de travailler. Il est recommandé de créer un dossier dans lequel
vous aurez vos données et fichiers de code pour chacun de vos projets et de débuter chaque session en définissant le
répertoire de travail.
Pour la spécification du chemin d’un dossier, Stata ne fait pas la différence entre les barres obliques \ et /. Vous
pouvez donc utiliser l’une d’elles indifféremment. La commande mkdir permet de créer un dossier et la commande
dir donne la liste de tous les fichiers présents dans un répertoire. Vous pouvez également copier (avec la commande
copy) ou supprimer (erase) un fichier depuis Stata.

1.2.2 Ouvrir un fichier Log

Pour sauvegarder de façon permanente vos commandes et les résultats de leur exécution, vous devez créer (ou
ouvrir) un fichier log au démarrage de votre session avec la commande :
log using nom_fichier, text replace
Stata va alors enregistrer tout ce que vous aurez sur la fenêtre Results dans le ficher que vous avez spécifié. L’option
text permet d’enregistrer le fichier sous format texte et de pouvoir l’ouvrir avec des éditeurs autres que le Viewer
de Stata. Si l’option text ne figure pas sur la commande, le fichier est enregistré au format SMCL et ne pourra
s’ouvrir qu’avec le Viewer. Il est cependant possible de l’enregistrer au format SMCL et de le convertir au format
texte ou PDF avec la commande translate . L’option replace indique à Stata qu’il faut remplacer l’ancien fichier
log du même nom (s’il existe) par ce nouveau fichier. Pour joindre de nouveaux résultats à un fichier existant, il
faut utiliser l’option append. La commande suivante permet de fermer un fichier log.
capture log close
La commande capture indique à Stata de ne pas afficher d’erreur au cas où aucun fichier log n’est ouvert.

1.2.3 Toujours utiliser des fichiers de code (Do File)

Un do file est juste un script avec des commandes Stata. Vous pouvez le créer avec le Do-File Editor qui vient avec
Stata ou n’importe quel autre éditeur. Vous devez juste vous assurer que le fichier est enregistré avec l’extension
.do. Par contre éditer les do file avec l’éditeur de Stata présente un certain nombre d’avantages comme la possibilité
d’exécuter directement tout ou une partie de votre code depuis l’éditeur. Si vous utilisez un autre éditeur (comme
Notepad ou Ms. Word), la commande do nom_fichier vous permettra d’exécuter votre do file.

1.2.4 Toujours commenter et annoter votre fichier de code

Il est important de toujours bien annoter votre fichier de code pour qu’il soit compréhensible à d’autres. Ainsi,
vous devez insérer des commentaires au-dessus de vos commandes pour expliquer ce que vous essayer de faire. Pour
commenter une ligne de code, il suffit d’insérer le symbole * au début de la ligne.
Si vous travaillez sur un do file, il y a 2 autres façons d’insérer des commentaires. Les doubles barres obliques (//)
vous permettent d’indiquer à Stata que tout ce qui est situé à droite de celles-ci est à ignorer lors de l’exécution.
Par exemple vous pouvez écrire :
gen one = 1 // Cette variable servira comme constante dans le modèle

6
Stata va aussi ignorer tout ce que vous mettez entre /* et */ lors de l’exécution. Ces symboles vous permettent
ainsi de faire des commentaires sur plusieurs lignes, ou même d’insérer un commentaire entre des segments d’une
même ligne de code.
Il y a un troisième type de commentaire qui est utilisé pour écrire une commande sur plusieurs lignes. En effet,
lorsque vous avez à écrire une longue commande, il faut penser à la mettre sur plusieurs lignes pour améliorer la
lisibilité de votre code. Et pour indiquer à Stata que la commande continue sur la ligne suivante, vous pouvez utiliser
les 3 barres obliques (\\\). Stata considère tout ce qui se situe à droites des 3 barres comme des commentaires et
continue l’exécution de la commande au niveau de la ligne suivante. Par exemple vous pouvez écrire :
graph twoway (scatter lexp loggnppc) ///
(lfit lexp loggnppc)
ou de façon équivalente :
graph twoway (scatter lexp loggnppc) /*
*/ (lfit lexp loggnppc)
Une alternative à ces 2 écritures (seulement sur les do file) est d’indiquer à Stata le symbole qui marque la fin
d’une commande comme par exemple :
#delimit ;
graph twoway (scatter lexp loggnppc)
(lfit lexp loggnppc) ;
pour dire que chaque commande doit terminer par un point-virgule. Mais si vous adopter cette convention, vous
devez la respecter pour toutes les commandes qui suivent. Pour retourner à la configuration par défaut, tapez
#delimit cr
Par ailleurs, il est toujours recommandé de commencer chaque do file avec des commentaires qui incluent le titre, le
nom de l’auteur et la date. Il peut s’avérer utile de noter aussi les métadonnées.

1.2.6 A Un exemple de Do File

Ci-dessous un simple do file pour reproduire tous les résultats que nous avons obtenus jusque-là. Il n’est pas bien
commenté parce que toutes les commandes ont été discutées dans ce qui précède.
// Tutoriel Stata
// Moussa DABO - Octobre 2017

version 14
clear
capture log close
log using Tutoriel, text replace

display 2+2
display 2 * ttail(20,2.1)

sysuse lifeexp // Chargement des données


desc
summarize lexp gnppc
list country gnppc if missing(gnppc)

graph twoway scatter lexp gnppc, ///


title(Life Expectancy and GNP ) xtitle(GNP per capita)
graph export scatter.png, width(400) replace // sauvegarder au format PNG
gen loggnppc = log(gnppc)
regress lexp loggnppc

predict plexp

graph twoway (scatter lexp loggnppc) (lfit lexp loggnppc) ///


, title(Life Expectancy and GNP) xtitle(log GNP per capita)
graph export fit.png, width(400) replace

list country lexp plexp if lexp < 55, clean


list gnppc loggnppc lexp plexp if country == "United States", clean
log close

7
La première commande permet d’indiquer à Stata que ce do file a été écrit avec la version 14. Ainsi, toutes les
commandes seront bien interprétées par les futures versions, même si leur syntaxe évolue.

1.2.7 Syntaxe d’une commande Stata

Jusque-là nous avons utilisé des commandes Stata sans commenter leur structure. Ci-dessous, une commande
typique et une brève description des élèments de sa syntaxe. Les mots en gras sont les mots-clés et ceux entre les
crochets, les élèments optionnels.
[by varlist:] command [varlist] [=exp] [if exp] [in range] [weight] [using nom_fichier] [,options]
command : Le seul élèment indispensable pour l’exécution est la commande elle-même. Il s’agit le plus souvent d’un
verbe d’action (en Anglais). Comme indiqué plus haut, les commandes Stata sont sensibles à la casse et
peuvent être abrégés.
varlist : La commande est le plus souvent suivie du nom d’une ou de plusieurs variables comme dans describe
lexp et regress lexp loggnppc. Les noms de variables aussi sont sensibles à la casse et peuvent être abrégés
par le plus petit nombre de caractères qui ne change pas le fait qu’ils soient uniques. Cependant l’usage
d’abbréviations pour les noms de variables n’est pas recommandé. Il est possible de faire référence à plusieurs
variables en même temps en utilisant des caractères génériques comme v* ou des plages de noms comme
v101-v105.
=exp : Les commandes utilisées pour générer de nouvelles variables comme dans generate log_gnp = log(gnp),
incluent des expressions arithmétiques. Nous reviendrons avec plus de détails sur les expressions au niveau de
la section sur la manipulation de données.
if exp and in range : Comme vu plus haut, il est possible d’exécuter une commande uniquement sur une partie
des données en utilisant une condition logique. Les opérateurs relationnels sont <, <=,==, >= et >; la
négation est exprimée à l’aide des symboles ! et ~.
weight : Certaines commandes donnent la possibilité de pondérer les observations ou variables. Tapez help
weights pour plus de détails.
using nom_fichier : Le mot-clé using introduit un nom de fichier qui peut être sur votre disque dur, un serveur
local ou même sur internet. Plus de détails dans la Section 2.
options : La plupart des commandes ont des options qui sont spécifiées après une virgule. Pour voir la liste des
options d’une commande donnée, tapez help nom_de_la_commande.
by varlist : Il est possible de répéter l’action de certaines commandes pour des groupes d’observations définis par
les valeurs des variables sur la liste varlist.

Vous aimerez peut-être aussi