Mémento Stata

Transcription

Mémento Stata
Formation à Stata 10
Memento
Benoît Rapoport
© Benoît Rapoport 2013
Page 1
Introduction
Stata est un logiciel de statistiques et d'économétrie
-
très complet (avec des fonctions graphiques étendues),
-
très convivial (avec depuis Stata 8.0 des menus déroulants),
-
très souple,
-
très dynamique, (une version complète tous les 2 ans intégrant chaque fois de véritables
innovations + 1 à 2 versions intermédiaires),
-
qui dispose d'une communauté d'utilisateurs très active ayant créé de nombreux modules
additionnels.
Il intègre depuis Stata 9.0 un logiciel matriciel de plus en plus complet (Mata).
Remarque préliminaire importante : à partir de Stata 8, toutes les commandes (y compris l'ensemble de
leurs options) peuvent être lancées à partir des menus déroulants. Ceci permet de faire ce qu'on veut
alors qu'on ne connaît pas précisément la syntaxe. Par ailleurs, la commande lancée à l'aide du menu
déroulant est automatiquement traduite dans la fenêtre de résultats. Il est donc possible de la récupérer
pour l'insérer dans un programme. Ceci est en particulier utile pour les graphiques, en raison du grand
nombre d'options.
Cette notice n’est qu’un recueil de quelques commandes utiles. Pour le détail et des exemples, on se
réfèrera à la documentation Stata
La version actuelle de Stata est Stata 12 (juillet 2011). Les exemples décrits dans cette notice
concernent Stata 10.1 mais sont valables pour la plupart aussi pour Stata 11.2. Par ailleurs, on peut
toujours utiliser les syntaxes anciennes avec une version de Stata plus récente : les versions récentes
lisent les syntaxes anciennes.
Remarque TRES importante :
Stata différencie minuscules et majuscules.
Remarque sur la notation des commandes. En dehors de l'appel des poids (pondération – voir plus bas)
ce qui figure entre [] est optionnel. En revanche, ne figurent que la syntaxe et les options principales.
Les détails peuvent être trouvés dans l'aide. Ce qui est souligné donne l'abréviation minimale de la
commande ou de l'option. La plupart d'entre elles en possèdent un.
© Benoît Rapoport 2013
Page 2
1
1.1
Prise en main du logiciel : éléments épars
Configuration des fenêtres
On configure les fenêtres à la souris et on peut sauvegarder la configuration.
Fenêtre résultat (en haut à droite) : affiche le résultat des commandes.
Fenêtre de commande "Command" (en bas à droite) : permet de taper les commandes de
façon interactive qui sont exécutées avec la touche Entrée.
Fenêtre de variables "Variables"(en bas à gauche) : liste les variables avec leurs
caractéristiques (format, label…). Il suffit de cliquer sur l'une d'elles pour qu'elle soit saisie
dans la fenêtre de commande.
Fenêtre de commandes passées "Review" (en haut à gauche) : affiche chacune des
commandes exécutées. Il suffit de cliquer sur l'une d'elles pour la rappeler dans la fenêtre de
commande. On peut aussi les rappeler avec les touches Up et Down. On peut les envoyer
directement dans un fichier de programme ("do-file", voir plus loin), ou les copier.
Remarque : Très pratique : ce que vous avez fait avec la barre d'outils ou le menu déroulant s'affiche
automatiquement dans la fenêtre de commandes passées "Review".
© Benoît Rapoport 2013
Page 3
On peut choisir le thème (les couleurs et polices des fenêtres) et le sauvegarder sous forme de
préférences.
A noter : la barre de menus (en haut) et la barre d'outils (juste en dessous) avec quelques commandes
élémentaires.
1.2
Définition de la taille du buffer de l'ascenseur de la fenêtre de résultats
La taille du buffer de l'ascenseur de la fenêtre de résultats doit être définie (elle est très faible
par défaut).
► Instruction : set scrollbufsize #
10000 <= # <= 500000
Peut être réglé dans le menu déroulant. Effectif seulement à la session suivante.
1.3
Choix du répertoire de travail
sysdir – sysdir set
permet de voir quels sont les répertoires du système utilisés par Stata (sysdir) et les
modifier (sysdir set).
cd chemin et/ou nom_de_répertoire
permet de modifier le répertoire de travail actuel (mettre entre " " si le chemin contient
des espaces).
1.4
Taille de la mémoire allouée : set mem
Stata charge les bases en mémoire vive, ce qui rend les opérations assez rapides. L'inconvénient
est qu'il faut disposer de beaucoup de RAM (ce qui n'est plus un problème maintenant) ou avoir des
fichiers de petite taille. Il faut définir la taille de la mémoire allouée à Stata. Il n'est pas possible
d'ouvrir un fichier excédant la taille de la mémoire allouée. On peut allouer plus que la RAM, mais le
supplément est pris sur la mémoire virtuelle (disque dur), ce qui ralentit considérablement le logiciel.
Il est recommandé de ne pas allouer plus de 2/3 de la RAM.
Stata charge tout en mémoire vive : la base active, mais aussi les commandes exécutées et les
matrices créées. De plus, de nombreuses commandes créent des variables temporaires. Il faut donc
prévoir de la marge.
► Instruction : set memory 30m (fixe la taille de la mémoire à 30 méga de RAM). Si on veut
la fixer de façon permanente à 30m, on ajoute l'option "permanent" :
set memory 30m, permanent (ou set mem 30m, permanent)
On peut fixer la taille de la mémoire par défaut dans le raccourci :
Dans la ligne de la cible du raccourci, on ajoute /m# ou /k# où # est la taille de la RAM allouée
(en méga ou kilo).
Exemple : I:\Stata10\wsestata.exe /m200 (alloue 200m).
© Benoît Rapoport 2013
Page 4
1.5
Format de stockage des variables
Variables numériques
type
Minimum
Maximum bytes
-------------------------------------------------------byte
-127
100
1
int
-32,767
32,740
2
long
-2,147,483,647
2,147,483,620
4
float
-1.70141173319*10^38 1.70141173319*10^38
4
double -8.9884656743*10^307 8.9884656743*10^307
8
-------------------------------------------------------
La précision pour float est 3.795x10^-8.
La précision pour double est 1.414x10^-16.
Variables alphanumériques (string)
Longueur
type
maximum
Bytes
-------------------------------str1
1
1
str2
2
2
...
.
.
...
.
.
...
.
.
str244
244
244
----------------------------------
1.6
Réduction du format de stockage des variables
Il est nécessaire de régulièrement réduire au maximum le type de stockage des variables pour
éviter de surcharger la mémoire : ne pas stocker sur 8 bytes (format double) une indicatrice qui
pourrait être stockée sur 1 byte (format byte).
► Instruction : compress
1.7
Garder trace de ce qu'on a fait
Stata ne conserve pas dans un fichier le contenu de la fenêtre de résultat. On peut copier-coller
le contenu ou une partie de la fenêtre de résultats, c'est parfois pratique. Ou ouvrir un log – avec
l'icône de la barre d'outil, ou avec la commande log using "chemin et nom du fichier".
2 formats : log (conseillé car permet d'ouvrir le fichier comme un txt) et smcl (formaté).
1.8
L'aide
On accède à l'aide en utilisant le menu déroulant, ou en tapant dans la fenêtre de commande
help nom_de_la_commande.
L'aide en ligne décrit la syntaxe et donne quelques exemples et références. L'aide papier est
beaucoup plus complète, donnant en particulier les formules et des exemples détaillés. A partir de
Stata 11, l'aide papier et l'aide en ligne fusionnent sous forme de fichiers pdf fournis avec le logiciel.
© Benoît Rapoport 2013
Page 5
1.9
La mise à jour
Taper update query permet de savoir si Stata est à jour. Il faut suivre ensuite les
suggestions de Stata pour la mise à jour. Note : on ne peut généralement pas mettre soi-même à jour
une licence réseau (à moins d’avoir des droits).
© Benoît Rapoport 2013
Page 6
2
2.1
Structure générale d’une commande
Structure générale d'une commande
Les commandes d'estimations ont généralement la syntaxe suivante
[by varlist1:] command [varlist2] [in exp] [if exp] [[aw ou
pw ou fw ou iw = varname]] [, options]
Attention : il ne faut pas mettre les [] : ils signifient juste que ce qui est à l'intérieur est
optionnel. Sauf pour les poids (d'où les doubles []) : en fait, les [] sont réservés dans Stata aux
poids.
Ce qui est en gras correspond à des mots réservés par Stata. Ce qui est en italique sont des
arguments.
in et if restreignent le champ (cf. infra).
by varlist exécute la commande pour toutes les combinaisons des variables de varlist1
(cf. infra).
Exemple :
summarize [varlist] [in exp] [if exp] [weight] [, options]
options possibles
detail : affiche des statistiques supplémentaires
meanonly : supprime l’affichage et calcule seulement la moyenne (option pour
programmeurs)
format : utilise le format d’affichage de la variable
separator(#) : tire une ligne de séparation toutes les # variables
Ce qui est souligné dans le nom de commande et dans les options est le raccourci (minimal) :
su, sum, summ etc. fonctionnent.
2.2
Les expression by, if et in
if permet de définir une condition et d'appliquer une commande seulement aux observations
vérifiant la condition.
in permet de restreindre le champ de l'instruction à un sous-ensemble d'observations.
by permet d'implémenter une commande selon les différentes combinaisons d'une liste de
variables. Il faut trier d'abord la base selon la liste de variables ou alors utiliser bysort. by
fonctionne avec la plupart des commandes.
& et | sont utilisés pour exprimer le ET (&) et la OU (|) dans l'expression de conditions.
Remarque importante : Il y a deux types d'égalité sous Stata : l'égalité de définition (=) et
l'égalité d'évaluation de condition (==) dont le contraire est (!= ou ~=).
Exemples : voir section 5.
© Benoît Rapoport 2013
Page 7
3
3.1
Manipulation élémentaire de fichiers
Extension des bases Stata
Les bases Stata ont pour extension dta.
3.2
use : ouvrir un fichier de format Stata (.dta)
use "chemin et nom du fichier", clear
use "C:\Program Files (x86)\Stata11\auto.dta"
open dans le menu déroulant.
3.3
Lecture de bases de données d'un autre format que Stata
Stata peut lire différents formats de fichiers.
Les fichiers bruts avec une virgule ou une tabulation comme séparateurs :
insheet using filename.txt (ou using filename si l'extension est .raw).
Si la première ligne donne le nom des variables, elle est automatiquement utilisée.
Les fichiers bruts avec une virgule ou une tabulation ou un espace comme séparateurs :
infile varlist using filename.txt (ou using filename si l'extension
est .raw). Il faut donner le nom des variables dans varlist. S'il y a des
variables alphanumériques il faut les signaler par strX où X est le nombre de
caractères (infile
str6
nom_individu
varlist
using
filename.txt (dans varlist figurent les variables autres).
Les fichiers bruts de format fixé :
Soit avec la commande infile et un dictionnaire (.dct)
Soit la commande infix similaire à celle utilisée par SAS pour lire ce type de fichiers.
On peut aussi copier (copier/coller) une feuille excel (ou une sélection) dans l'éditeur de Stata. Il
faut que le séparateur décimal soit un point (non une virgule sinon les données sont copiées sous
forme de chaînes de caractères). Il faut d’abord ouvrir l’éditeur (voir ci-dessous 2.4)
Stata permet aussi de lire directement des fichiers SAS XPORT (commande fdause).
On peut utiliser aussi Stat Transfer (ou d’autres logiciels). Ce logiciel permet de convertir des
bases d'un grand nombre de formats dans un autre format (SAS, Stata, Excel…).
Les exportations peuvent se faire avec les commandes outfile et outsheet ou Stat/transfer
(ou sous format SAS XPORT avec Stata 8 : commande fdsave).
3.4
Sauvegarder une table
save ["chemin et nom du fichier"] [, replace]
ou avec la barre d'outils.
© Benoît Rapoport 2013
Page 8
3.5
Ouvrir une table pour la regarder
browse [varlist] [if] [in] permet de la regarder.
edit [varlist] [if] [in] permet de l'éditer et donc de la modifier directement (à éviter
généralement).
Les commandes peuvent agir sur une sélection de variables et/ou d'observations (cf. 2.2).
3.6
Examiner une table et les variables (caractéristiques)
describe [varlist] [, short] décrit de façon synthétique les variables (format, label).
Avec l'option short, on a seulement les éléments importants sur le fichier (nom, taille, nombre
d'observations).
codebook [varlist] décrit de façon détaillée les variables.
list [varlist] [if] [in] : produit une liste des variables sélectionnées pour toutes les
observations (ou celles sélectionnées).
3.7
Examiner les variables (statistiques)
summarize [varlist] [, detail] : comme proc means ; l'option detail donne des
éléments supplémentaires sur la distribution.
tabulate varname ou tabulate varname1 varname2 : comme proc freq
Voir infra tabsum (tab varname1, su(varname2)), tables et tabstat qui
permettent d'avoir d'autres types de tableaux de fréquence.
© Benoît Rapoport 2013
Page 9
4
4.1
Manipulation avancée de fichiers
sort : trie le fichier
sort varlist : trie le fichier dans l’ordre croissant les variables de la varlist.
gsort : permet de trier par ordre décroissant (plus lent que sort).
4.2
merge : assemble des fichiers
Étape 1 : trier les deux fichiers : sort varlist
Étape 2 : merge varlist using "chemin et nom du fichier"
Avec cette syntaxe, Stata assemble les premières observations de chaque fichier qui ont une
varlist commune, puis les deuxièmes etc. D'autres possibilités sont offertes avec les options.
Rq : La syntaxe a changé avec Stata 11 :
merge a:b varlist using "chemin et nom du fichier"
avec a, b = 1 ou m (ex : merge 1:m… : 1 observation dans le fichier maître et m dans le
fichier secondaire).
4.3
append : met bout à bout des fichiers
append using "chemin et nom du fichier"
4.4
reshape : transforme des données en lignes en données en colonnes
Exemple :
(wide form)
-i------- x_ij -------id sex
inc80
inc81
inc82
------------------------------1
0
5000
5500
6000
2
1
2000
2200
3300
3
0
3000
2000
1000
(long form)
-i- -j-x_ijid
year
sex
inc
----------------------1
80
0
5000
1
81
0
5500
1
82
0
6000
2
80
1
2000
2
81
1
2200
2
82
1
3300
3
80
0
3000
3
81
0
2000
3
82
0
1000
reshape convertit les données d'une forme à l'autre:
© Benoît Rapoport 2013
Page 10
4.5
reshape long inc, i(id) j(year)
(1ère forme à 2ème forme)
reshape wide inc, i(id) j(year)
(2ème forme à 1ère forme)
keep/drop : comme leur nom l'indique
keep/drop [varlist] pour garder/éliminer des variables.
keep/drop [if] [in] pour garder/éliminer des observations.
On ne peut faire les deux en même temps.
4.6
collapse : produit des fichiers de moyennes, écarts-types etc.
Exemple :
collapse (mean) age education (median) wage, by(county)
Produit un fichier avec autant d'observations que de modalités de la variable "county" et 4
variables : county, age (qui est l'âge moyen dans le comté), education (qui est l'éducation moyenne
dans le comté) et wage qui est le salaire médian dans le comté.
On met entre parenthèses la statistique désirée que l'on fait suivre de la liste de variables
concernées.
Attention, le fichier actif est automatiquement remplacé par un nouveau fichier actif. Si on veut
conserver le précédent, le sauvegarder et l'enregistrer il faut utiliser preserve/restore (cf. infra).
4.7
preserve/restore
A la différence de SAS, il n'y a sous Stata qu'un seul fichier actif.
preserve "met de côté" le fichier courant. On peut alors travailler dessus, en effacer une
partie etc. Ensuite, restore permet de restaurer le fichier initial.
Exemple : la commande collapse permet de créer un fichier de moyennes, par exemple (il y a
beaucoup d'autres statistiques disponibles, voir doc).
preserve
collapse (mean) age education (median) wage, by(county)
save toto
restore
© Benoît Rapoport 2013
Page 11
5
5.1
Création de variables
Introduction
Il y a deux types d'instructions pour créer des variables selon la fonction que l'on utilise (voir
l'aide en ligne). Note : il existe d’autres façons de créer des variables.
generate/replace
Note : en souligné est indiqué le raccourci. La plupart des commandes ont un raccourci.
egen (extension to generate)/replace
Syntaxe :
generate newvar = fonction
egen newvar = fonction
generate est utilisée avec les opérateurs usuels, les fonctions mathématiques (numériques
(trigonométrie, arrondi…), dates ou alphanumériques) ou statistiques, et quelques fonctions spéciales,
egen avec certaines fonctions particulières (en particulier des fonctions statistiques un peu plus
compliquées).
Exemples :
g sum_mob = sum(x)
sum_mob pour l'observation i est la somme des x de 1 à i.
egen sum = total(x)
sum pour l'observation i est la somme des x de 1 à n.
g sum1_3 = x1 + x2 + x3
sum1_3 est la somme des variables x1, x2 et x3, si
l'une des variables est manquante pour l'observation i, le résultat est manquant pour i.
egen sum1_3b = rowtotal(x1 x2 x3)
x1, x2 et x3, les manquantes sont traitées comme des 0.
sum1_3b est la somme des variables
Remarque : total et rowtotal ont remplacé sum et rsum dans Stata 10 et supérieurs.
Exemples :
g femme = 1 if sex == 2
crée la variable femme qui prend la valeur 1 si la variable sex vaut 2 et est manquante
sinon.
g femme = sex == 2
crée la variable femme qui prend la valeur 1 si la variable sex vaut 2 et la valeur 0 sinon.
S'il y a plusieurs conditions, il faut mettre des () :
g femme_30a50ans = (sex == 2 & age >= 30 & age <= 50)
g essai = 1 in 1/50
crée la variable essai qui prend la valeur 1 pour les 50 premières observations.
by ident_menage: egen revenu_menage = sum(revenu)
crée la variable de revenu du ménage qui est la somme des revenus des membres du ménage.
© Benoît Rapoport 2013
Page 12
Auparavant on aura écrit
sort ident_menage
Stata 8 (et > 8) permet décrire directement :
bysort ident_menage: egen revenu_menage = total(revenu)
5.2
Une variable est modifiée par replace
replace femme = 0 if sex == 1
On peut aussi utilise recode : recode femme . = 0
5.3
Les formats de variable
Numériques : int, float, double
Chaînes de caractère (variable alphanumérique) : string (ex str2 : chaîne de 2 caractères)
Dates (voir doc).
Les formats sont gérés en général automatiquement. Dans un programme, il vaut mieux créer les
variables numériques sous forme double (avec la plus grande précision) pour limiter les problèmes
d'arrondi. Cela peut-être important quand on a des critères d'arrêt dans une boucle ou pour les
matrices. On peut ensuite utiliser la commande compress.
g double logsal = log(sal)
Les commandes destring variable et tostring variable, permettent de
transformer une variable alphanumérique en variable numérique et inversement, dès lors que les
modalités prises par la variable alphanumérique sont toutes réelles.
Remarque importante : les valeurs manquantes (missing) sont désignées par un . (ou "" s'il s'agit
d'une variable alphanumérique). Sous Stata, cela correspond à +∞, ce qui diffère de SAS : donc la
condition "x > 2" prend toutes les valeurs supérieures à 2, y compris les valeurs manquantes (il faut
préciser "& x != ." si on veut les exclure).
5.4
Abréviations et listes de variables
De même que les commandes et les options possèdent généralement une abréviation (souvent la
ou les premières lettres), on peut abréger une variable en utilisant les premières lettres de son nom, il
faut que ces premières lettres suffisent à l'identifier (exemple : si on a education et educ14
comme variable, educ ne suffit pas mais educa et educ1 suffisent).
En outre les raccourcis suivants existent :
x-y : prend toutes les variables entre x et y dans l'ordre du fichier
x* : prend toutes les variables commençant par x (on peut aussi utiliser *x ou x1*x2 ou x?
etc.)
© Benoît Rapoport 2013
Page 13
5.5
Les étiquettes ("labels")
On peut appliquer un label
-
à une base : label data "description".
-
à une variable : label variable "description".
-
aux modalités d'une variable qualitative
o
label define sexe 1 "homme" 2 "femme" (on définit le label).
o
label values sex sexe (on attache le label à la variable)
© Benoît Rapoport 2013
Page 14
6
Statistiques descriptives
Les différentes commandes autorisent un grand nombre d'options, on n'en cite ici que quelques unes,
généralement les plus utiles. On omet ici les if et autres in qui sont permis mais optionnels. Par
ailleurs, ces commandes peuvent être combinées avec le préfixe by: (exemple : bysort sex: su
revenu).
6.1
Statistiques élémentaires
summarize [varlist] [, detail] (rappel) ; l'option detail donne des éléments
supplémentaires sur la distribution.
tabulate varname ou tabulate varname1 varname2 (rappel)
tabulate varname, gen(prefix) donne le tableau de fréquence et crée des
indicatrices pour les différentes modalités qui auront pour noms prefix1, prefix2
etc.
L'option chi2 permet de faire un test du χ 2 (Pearson) entre les deux variables avec la
deuxième syntaxe.
tab1 varlist donne un tableau de fréquence pour chaque variable de la liste.
tab2 varlist [, column row nofreq cell] donne un tableau de fréquence croisé
pour chaque paire de variables de la liste ; les options permettent de contrôler les grandeurs présentées.
6.2
Tableaux croisés de statistiques plus élaborés
tab varname1, su(varname2)
la commande tabsum donne des statistiques descriptives pour la variable varname2
pour toutes les modalités de varname1.
table rowvar [colvar [supercolvar]], contents(clist)]
donne jusqu'à 5 statistiques descriptives décrites dans clist pour toutes les modalités de
rowvar [colvar [supercolvar]].
clist a la forme suivante stat varname ; exemple : mean revenu
table sex, c(mean revenu median revenu mean age)
tabstat varlist [, by(varname) statistics(statname…)]
donne des statistiques (par défaut la moyenne) pour une série de variables (varlist) en
séparant éventuellement selon une autre variable (varname).
6.3
Coefficients de corrélation
correlate [varlist] [, covariance]
affiche la matrice de corrélations ou de variances-covariances avec l'option
covariance.
pwcorr [varlist]
affiche les coefficients pour toutes les paires de variables (traite les manquants pour
chaque paire séparément tandis que correlate traite les manquants globalement).
© Benoît Rapoport 2013
Page 15
6.4
Tests d'égalité de moyennes et de variances
ttest varname1, by(varname2)
teste l'égalité des moyennes de varname1 pour les deux modalités de varname2
avec l'option unequal : relâche l'hypothèse de variance identique dans les deux groupes.
ttest varname1 = varname2
teste l'égalité des moyennes de varname1 et de varname2
avec l'option unequal : relâche l'hypothèse de variance identique dans les deux groupes.
avec l'option unpaired : signifie que les deux variables ne représentent pas des
grandeurs identiques (comme par exemple deux mesures de la même chose).
ttest varname1 = #
teste l'égalité de la moyenne de varname1 au réel #.
On a le même genre de tests sur les variances avec sdtest.
© Benoît Rapoport 2013
Page 16
7
Les poids sous Stata
4 types de poids :
fw : "frequency weights" : poids de réplication : obligatoirement des entiers
aw : "analytic weights" : utilisés quand les observations sont elles-mêmes des moyennes
d'observations dont le nombre est connu.
pw : "probability (sampling) weights"
iw : "importance weights" : traités comme aw, mais non renormalisés.
Les poids sont pris en compte en écrivant
variable_de_poids] à la fin de la commande.
(exemple
avec
aw)
:
[aw
=
Exemple : su wage [fw = poids_de_la_strate]
Attention : toutes les commandes ne prennent pas tous les types de poids, consulter l'aide en ligne.
© Benoît Rapoport 2013
Page 17
8
8.1
Les graphiques
Introduction
Depuis Stata 7 ou 8, un gros effort a été porté à l'élaboration des graphiques qui sont devenus
tout à fait acceptables. Depuis le logiciel intègre même la possibilité d'éditer les graphiques
augmentant encore la souplesse.
Stata offre de larges possibilités de types de graphiques avec une multitude d'options. De
manière générale, je conseille l'utilisation des menus déroulants, bien plus pratique que la recherche de
la syntaxe des options dans l'aide. Comme la ligne de commande est à l'exécution retraduit dans la
fenêtre "review", il est possible de la récupérer pour la modifier dans la fenêtre de commande et de
l'intégrer dans un programme.
On peut régler les préférences graphiques (par exemple, l'allure générale) dans le menu des
préférences graphiques.
© Benoît Rapoport 2013
Page 18
8.2
Les types de graphiques proposés par Stata
Stata permet histogrammes, boîtes, camembert, nuages de points, lignes…
Dans la plupart des cas, il est nécessaire de préciser si la variable est discrète ou continue. Par
exemple, pour les histogrammes, le logiciel doit gérer un découpage du support si la variable est
continue.
Le menu présente pour chaque graphique différents onglets et différentes cases à cocher ou à
remplir. Il est possible de choisir :
o
Le type de graphique, les variables concernées
o
Les caractéristiques visuelles du graphique (exemples : couleurs, types de
connexion entre les points)
o
Le champ utilisé
o
Le format des axes
o
Le format de la légende, des titres, sous-titres etc.
o
Les poids
o
Des options générales ou spécifiques au type de graphique
o
…
© Benoît Rapoport 2013
Page 19
Une fois choisis le graphique et les options, il suffit de soumettre (submit) ses spécifications et
le graphique est affiché dans une fenêtre séparée. La commande est traduite dans la fenêtre de
"review".
Syntaxe générale respectivement pour une seule et deux variables :
graph type_graphe varname, options
twoway type_graphe varname1 varname2, options
En fait on peut dans la plupart des cas se passer du mot graph et du mot twoway.
© Benoît Rapoport 2013
Page 20
Types de graphiques unidimensionnels
Graphiques en secteurs (pie)
graph pie, over(education)
10
16
12
20
Graphiques en bâtons (bar, hbar, dot) : bâtons verticaux, horizontaux ou points sur des axes, on
peut choisir la statistique.
0
10
mean of wagefull
20
30
graph bar (mean) wagefull, over(education)
10
12
16
20
Boîtes à moustaches (box, hbox) : verticales ou horizontales
0
10
wagefull
20
30
40
50
graph box wagefull, over(education)
10
© Benoît Rapoport 2013
12
16
20
Page 21
Histogramme (histogram, kdensity) : (attention considéré comme twoway)
Exemple Graphique 1 :
histogram education, discrete fraction
Exemple Graphique 2 :
histogram wagefull
Graphique 2 : variable continue
0
0
.1
.02
Density
Fraction
.2
.04
.3
.4
.06
Graphique 1 : variable discrète
10
15
education
0
20
10
20
30
40
50
wagefull
Types de graphiques bidimensionnels
Nuages de points pour 2 variables continues (scatter, line, connect, area) : nuages, lignes s'il
n'y a qu'un seule y pour chaque x (et en particulier si x a un ordre), et points connectés entre eux
0
10
wagefull
20
30
40
50
twoway scatter wagefull age
20
30
40
age
50
60
line le year
line le_w le_b year
ou bien twoway (line le_w year) (line le_b year)
cette syntaxe permet de gérer séparément les options.
Il faut trier par la variable x si nécessaire.
© Benoît Rapoport 2013
Page 22
line avec plusieurs courbes
30
50
40
50
life expectancy
60
60
70
70
80
80
line avec une seule courbe
40
1900
1920
1940
1960
1980
2000
Year
1900
1920
1940
1960
1980
2000
Life expectancy, whites
Year
Life expectancy, blacks
Séries chronologiques (dot, spike, dropline)
Il y a d'autres possibilités… Avec les options, on peut faire des pyramides des âges, des barres
empilées, représenter la droite de régression (lfit) avec le nuage de points, ajouter l'intervalle de
confiance (lfitci), tracer des fonctions spécifiques…
8.3
Personnalisation des graphiques
Les options permettent de personnaliser le graphique.
Exemple Graphique 1b :
histogram
education,
discrete
fraction
addlabel
ytitle(Proportion)
ytitle(,
size(medium)
color(green)
orientation(horizontal))
ylabel(,
angle(horizontal)
format(%9.0g))
xtitle(Niveau
d'éducation)
xtitle(,
size(medium)
color(green))
title(Répartition
du
niveau
d'éducation, size(medium) color(sienna))
Exemple Graphique 2b :
histogram
wagefull,
bin(50)
normal
ylabel(,
angle(horizontal)) xtitle(Salaire) title(Salaire de réserve)
subtitle(Femmes)
Graphique 1b : variable discrète
Graphique 2b : variable continue
Répartition du niveau d'éducation
Salaire de réserve
.4
Femmes
.06
.332
.304
.2975
.3
Density
.04
Proportion .2
.02
.1
.0665
0
0
10
15
Niveau d'éducation
© Benoît Rapoport 2013
20
0
10
20
30
40
50
Salaire
Page 23
8.4
Sauvegarde et édition
Le format des graphiques Stata est gph (c'est l'extension par défaut), mais il est possible de
choisir différents formats d'enregistrement en particulier windows metafiles (wmf) ou enhanced
metafiles (emf) qu'on peut insérer dans un document word.
On peut utiliser les menus dans la fenêtre de graphique. Sinon, la commande est
graph save ["chemin, nom du fichier [extension]"][, replace]
On peut aussi utiliser l'option saving directement dans la syntaxe du graphique
line le year, saving(nom du fichier, replace)
Le graphique peut être édité
On peut alors modifier à la main, couleurs, disposition etc.
8.5
Combiner des graphiques
On peut mettre plusieurs graphiques sur le même ensemble, quand on stratifie, en particulier.
histogram wagefull, bin(50) normal ylabel(, angle(horizontal))
xtitle(Salaire) by(, title(Salaire de réserve) subtitle(Femmes))
by(married)
© Benoît Rapoport 2013
Page 24
Salaire de réserve
Femmes
Non
Oui
Density
.06
.04
.02
0
0
20
40
60
0
20
40
60
Salaire
Density
normal wagefull
Graphs by married
Plus généralement, on peut combiner des graphiques différents et pas seulement du même type
pour différentes modalités d'une variable de stratification.
Si on a sauvegardé plusieurs graphiques (sur le disque) avec pour nom par exemple g1, g2, on
peut utiliser la commande graph combine suivie du nom des fichiers avec l'extension .gph.
graph combine g1.gph g2.gph g3.gph
Si on ne veut pas sauvegarder les graphiques on peut simplement les stocker en mémoire avec
l'option naming(nom du fichier, replace), puis utiliser la commande graph combine
suivie du nom des fichiers (sans l'extension .gph).
graph combine g1 g2 g3
© Benoît Rapoport 2013
Page 25
9
9.1
Modèles de régression simples
Structure générale d'une commande d'estimation
Les commandes d'estimations ont généralement la syntaxe suivante
[by varlist:] command varname varlist [in exp] [if exp] [[aw
ou pw ou fw ou iw = varname]] [, options]
Attention : il ne faut pas mettre les [] : ils signifient juste que ce qui est à l'intérieur est
optionnel. Sauf pour les poids (d'où les doubles []) : en fait, les [] sont réservés dans Stata aux
poids.
9.2
Modèle de régression linéaire
Commande regress
exemple :
regress salaire age education [pw = poids] if sex == 1
bysort sex: regress salaire age education [pw = poids]
On peut choisir le mode de calcul de la matrice de variances-covariances avec l'option
vce(vce_type).
Par exemple, vce_type peut être
9.3
o
robust (matrice de White corrigeant pour la présence d'hétéroscédasticité).
o
cluster varname (relâche l'hypothèse d'indépendance des observations, par
exemple si la même personne est interrogée plusieurs fois, ou si plusieurs
observations appartiennent à la même entité (ménage, entreprise…). varname
contient le nom de la variable identifiant l'entité).
Expansion de variables qualitatives
La plupart des commandes autorisent l'expansion de variables qualitatives.
Par exemple :
xi: regress y x1 x2 i.x3
régresse y sur x1, x2 et la série d'indicatrices construite à partir de la variable x3.
Voir la doc pour d'autres possibilités (croisement de qualitatives ou de qualitatives et
de quantitatives). La modalité de référence est la plus fréquente par défaut, mais elle
peut être choisie. Attention aux ":" après xi.
Stata crée alors les variables indicatrices correspondantes commençant par le préfixe _I (peut
être changé). Ces variables sont temporaires et effacées dès que Stata rencontre un nouveau xi. Il ne
faut donc pas nommer des variables commençant par _I qui seraient alors effacées du fichier.
© Benoît Rapoport 2013
Page 26
9.4
Estimation d'une variable dichotomique (probit, logit)
Le modèle probit suppose que le terme d'erreur est distribué normalement, tandis que le modèle
logit suppose qu'il est distribué selon la loi logistique. La syntaxe est simplement :
probit travaille age education married
logit travaille age education married
probit travaille age education married
Iteration
Iteration
Iteration
Iteration
0:
1:
2:
3:
log
log
log
log
likelihood
likelihood
likelihood
likelihood
=
=
=
=
-1266.2225
-1176.8804
-1176.3896
-1176.3896
Probit regression
Number of obs
LR chi2(3)
Prob > chi2
Pseudo R2
Log likelihood = -1176.3896
=
=
=
=
2000
179.67
0.0000
0.0709
-----------------------------------------------------------------------------travaille |
Coef.
Std. Err.
z
P>|z|
[95% Conf. Interval]
-------------+---------------------------------------------------------------age |
.0353986
.0040167
8.81
0.000
.0275261
.0432711
education |
.0523707
.0105444
4.97
0.000
.0317041
.0730373
married |
.1795113
.0673504
2.67
0.008
.047507
.3115156
_cons | -1.607623
.1728399
-9.30
0.000
-1.946383
-1.268863
------------------------------------------------------------------------------
dprobit calcule les effets marginaux des variables explicatives.
dprobit travaille age education married
Iteration
Iteration
Iteration
Iteration
0:
1:
2:
3:
log
log
log
log
likelihood
likelihood
likelihood
likelihood
=
=
=
=
-1266.2225
-1176.8804
-1176.3896
-1176.3896
Probit regression, reporting marginal effects
Log likelihood = -1176.3896
Number of obs
LR chi2(3)
Prob > chi2
Pseudo R2
=
2000
= 179.67
= 0.0000
= 0.0709
-----------------------------------------------------------------------------travai~e |
dF/dx
Std. Err.
z
P>|z|
x-bar [
95% C.I.
]
---------+-------------------------------------------------------------------age |
.0125873
.0014222
8.81
0.000
36.208
.0098 .015375
educat~n |
.0186224
.0037444
4.97
0.000
13.084
.011284 .025961
married*|
.0646766
.024548
2.67
0.008
.6705
.016563
.11279
---------+-------------------------------------------------------------------obs. P |
.6715
pred. P |
.6842687 (at x-bar)
-----------------------------------------------------------------------------(*) dF/dx is for discrete change of dummy variable from 0 to 1
z and P>|z| correspond to the test of the underlying coefficient being 0
La commande logit donne les coefficients pour une régression logistique. La commande
logistic quant à elle, donne les ratios d'occurrence (odd-ratios).
© Benoît Rapoport 2013
Page 27
Après un logit (probit), la prédiction par défait (predict) donne la probabilité prédite.
9.5
Réaffichage des résultats
En retapant le nom de la dernière commande d'estimation qui a été exécuté, Stata, réaffiche les
resultats. Taper dprobit après un probit fonctionne car Stata n'a pas besoin de refaire l'estimation.
De même taper reg, robust après une régression fonctionne et Stata affiche les résultats avec les
écarts-types robustes (note : ne marche pas pour toutes les estimations).
© Benoît Rapoport 2013
Page 28
10 Estimation sous contraintes : constraint
On peut vouloir imposer des contraintes aux paramètres lorsque l'on fait une estimation (par exemple
parce que notre modèle théorique nous impose une relation entre eux). On utilise d'abord la commande
constraint pour définir la contrainte.
constraint [define] # [exp=exp | coeflist]
Example :
Une seule équation : on contraint les coefficients de var1 et var2 à être identiques :
constraint 1 var1 = var2
Une seule équation : on contraint le coefficient de var1 à 1 :
constraint 2 var1 = 1
Plusieurs équations : on contraint les coefficients de var1 et var2 dans l'équation eq1 à être nuls :
constraint 3 [eq1]: var1 var2
Une seule équation : on contraint le coefficient de var1 à être le même dans les équations eq1 et eq2 :
constraint 4 [eq1 = eq2]: var1
Ensuite on met l'option constraint(#) après la commande. On met une seule contrainte ou une
liste.
regress endog var1 var2 var3, constr(1)
regress endog var1 var2 var3, constr(1-2)
© Benoît Rapoport 2013
Page 29
11 Commandes post-estimation
Après une estimation, il est possible d'exécuter un certain nombre de commandes relatives à
cette estimation.
11.1 Récupérer les grandeurs après l'estimation
La plupart des commandes d'estimation sont des commande de type "e-class", ce qui signifie
que les résultats sont stockés dans des macros de type e() dont on obtient la liste après une estimation
en tapant ereturn list. En particulier, les coefficients sont stockés dans une matrice appelée
e(b) et la matrice de variances-covariances est e(V).
Attention : il s'agit de macros temporaires qui sont remplacées dès qu'on exécute une autre
commande. Il faut donc les stocker autrement si on veut les conserver (voir l'exemple de
programmation, voir aussi la doc pour d'autres méthodes).
11.2 predict : prédiction post-estimation
Ce qu'on peut prédire dépend du modèle : résidus, valeurs prédites, index, probabilités etc. De
même la grandeur par défaut dépend du modèle : par exemple, la prédiction linéaire après les MCO ou
la probabilité estimée après un probit. La syntaxe est
predict varname [, options]
options permet de préciser le type de la grandeur.
predict varname, re : si on veut les résidus.
Il s'agit d'une prédiction out-of-sample. Si on veut une prédiction in-sample, il faut le préciser :
predict varname if e(sample). e(sample) est un marqueur qui prend la valeur 1
si l'observation a été utilisée pour l'estimation et est manquant sinon.
11.3 test : tests post-estimation
On écrit le test (test de Wald) après la commande, exactement comme il s'écrit. Par exemple :
après reg y x1 x2 x3
test x1 = x2
teste l'égalité des coefficients de x1 et x2
test x1 = 1
teste que le coefficient de x1 est différent de 1
test (x1 = x2) (x1 = x3)
teste l'égalité des coefficients de x1 et x2 et l'égalité des
coefficients de x1 et x3
La succession des deux tests suivants est équivalente au test précédent
test x1 = x2
test x1 = x3, accum
Il faut préciser l'équation quand il y en a plusieurs (voir la doc). Exemple après une "seemingly
unrelated regression" (modèle de Zellner, commande sureg)
sureg (price foreign mpg displ) (weight foreign length)
test de significativité de la variable foreign dans l'équation de prix
© Benoît Rapoport 2013
Page 30
test [price]foreign
test que la variable foreign est jointement nulle dans les deux équations
test [price]foreign [weight]foreign
test que la variable foreign est identique dans les deux équations (test croisé)
test [price]foreign = [weight]foreign
La commande testnl permet de faire des tests non linéaires. Dans ce cas on écrit
testnl _b[x1]/_b[x2] = _b[x3]
© Benoît Rapoport 2013
Page 31
12 Présentation des différents formats de données : coupe, panel, modèles de durée, séries
temporelles
Sauf pour les données en coupe, il faut généralement définir les données selon le format qu'elles ont.
En effet, Stata a besoin d'informations spécifiques, dans la plupart des cas.
12.1 Données en coupe
12.2 Données de panel
Les commandes sont nommées xtquelquechose.
xtcommand, i(varnamei) t(varnamet)
Pour les versions Stata antérieure à 10.0, on peut aussi définir auparavant
iis varnamei
tis varnamet
Pour Stata 10, on peut utiliser la commande xtset :
xtset varnamei [varnamet]
Avec cette syntaxe, on peut omettre varnamet si l'ordre n'a pas d'importance (plusieurs employés
d'une même entreprise, par exemple) ; il faut en revanche la préciser s'il y a une dimension temporelle
(une même personne observée à différentes dates).
L'avantage d'utiliser xtset est qu'il n'est alors pas nécessaire de repréciser les i(varnamei) et
t(varnamet) à chaque commande utilisée.
Exemples :
xtreg y x1 x2, i(indiv)
estime un modèle de régression linéaire à effet fixe.
xtreg y x1 x2, i(indiv) re
aléatoire.
estime un modèle de régression linéaire à effet
12.3 Données de durée
Les données de ce type doivent être déclarées comme telles à l'aide de la commande stset (voir la
doc pour la description complète).
stset timevar, failure(failvar[ == numlist]) origin(time exp)
enter(time exp) id(varname)
timevar est la variable de durée
failvar est la variable d'événement/failure (optionnelle, si elle n'est pas précisée, on
suppose que tous les enregistrements finissent par l'événement ; sinon, 0 et missing signifient
une censure et toutes les autres valeurs de failvar l'évènement), numlist donne la liste des
valeurs signalant l'événement (toutes les autres valeurs signifient une censure).
© Benoît Rapoport 2013
Page 32
origine indique quand l'individu est à risque.
id est utilisé quand il y a plusieurs enregistrements par individu (une ligne par
enregistrement).
enter indique quand l'individu est observé pour la première fois.
La plupart des commandes pour les modèles de durée s'écrivent stcommand (exemple streg).
12.4 Séries temporelles
Les données de ce type doivent être déclarées comme telles à l'aide de la commande tsset (voir la
doc pour la description complète).
tsset timevar, format(%fmt)
tsset timevar, daily
tsset timevar, weekly etc.
Ensuite un grand nombre de commandes sont disponibles. Stata permet d'utiliser la plupart des
opérateurs temporels standards (ex. L. est l'opérateur retard ; on peut les utiliser de façon synthétique
L(1/3).varname signifie L.varname L2.varname L3.varname).
12.5 Survey data
Données par strates ou cluster. Les variables identifiant les strates ou clusters doivent être déclarées
(voir doc).
© Benoît Rapoport 2013
Page 33
13 Analyse de survie
13.1 Déclaration des données de type modèles de durée : stset
Les données de ce type doivent être déclarées comme telles à l'aide de la commande stset.
Syntaxe de base
stset timevar, failure(failvar[ == numlist]) origin(time exp)
enter(time exp) id(varname)
timevar est la variable de durée
failvar est la variable d'événement/failure (optionnelle, si elle n'est pas précisée, on
suppose que tous les enregistrements finissent par l'événement ; sinon, 0 et missing signifient
une censure et toutes les autres valeurs de failvar l'évènement), numlist donne la liste des
valeurs signalant l'événement (toutes les autres valeurs signifient une censure).
origine indique quand l'individu est à risque.
id est utilisé quand il y a plusieurs enregistrements par individu (une ligne par
enregistrement).
enter indique quand l'individu est observé pour la première fois.
Les différentes formes du fichier
Les données de survie que l'on peut traiter avec Stata peuvent prendre différentes formes. On peut
avoir un seul enregistrement par personne ou plusieurs / avoir de la censure ou non / un seul
évènement ou plusieurs
Données avec un seul enregistrement par personne
+----------------------------+
| failtime
load
bearings |
|----------------------------|
1. |
100
15
0 |
2. |
140
15
1 |
3. |
97
20
0 |
+----------------------------+
failtime est la durée jusqu'à l'évènement, les autres variables des covariables. On suppose ici que
l'évènement est toujours observé.
On déclare avec
stset failtime
© Benoît Rapoport 2013
Page 34
Données avec un seul enregistrement par personne et censure
1.
2.
3.
4.
+-------------------------------------+
| failtime
load
bearings
failed |
|-------------------------------------|
|
100
15
0
1 |
|
140
15
1
0 |
|
97
20
0
1 |
|
122
20
1
1 |
+-------------------------------------+
failtime est la durée jusqu'à l'évènement ou la censure, failed indique si l'évènement a eu lieu
(observations 1, 3, 4) ou non (censure observation 2) ; les autres variables sont des covariables.
On déclare avec
stset failtime, failure(failed)
Données avec plusieurs enregistrements par personne
1.
2.
3.
4.
5.
6.
+------------------------------------------------------------+
| id
year
age
died
stime
surgery
posttran
wait |
|------------------------------------------------------------|
| 1
67
30
1
50
0
0
0 |
| 2
68
51
1
6
0
0
0 |
| 3
68
54
0
16
0
0
1 |
| 3
68
54
1
16
0
1
1 |
| 4
68
40
0
39
0
0
36 |
|------------------------------------------------------------|
| 4
68
40
1
39
0
1
36 |
+------------------------------------------------------------+
Le 4ième individu a 2 enregistrements :
-
l'un allant de t = 0 à t = 36 durant lequel il a survécu (died = 0) et pour lequel la
variable posttran vaut 0
-
l'un allant de t = 36 à t = 39 à la fin duquel il décède (died = 1) et pour lequel la
variable posttran vaut 1
On déclare avec
stset t, failure(died) id(id)
Données avec plusieurs enregistrements par personne et plusieurs évènements
1.
2.
3.
4.
5.
6.
+------------------------------------------------------------+
| id
year
age
code
stime
surgery
posttran
wait |
|------------------------------------------------------------|
| 1
67
30
402
50
0
0
0 |
| 2
68
51
286
6
0
0
0 |
| 3
68
54
208
16
0
0
1 |
| 3
68
54
401
16
0
1
1 |
| 4
68
40
204
39
0
0
36 |
| 4
68
40
401
39
0
1
36 |
+------------------------------------------------------------+
© Benoît Rapoport 2013
Page 35
La variable code indique le type d'évènement. Pour des données médicales, ça pourrait indiquer si le
patient a eu une complication / laquelle / est décédé / est guéri etc.
On déclare avec
stset day, failure(code == 402) id(patid)
On indique ainsi quels sont les codes qui signalent l'évènement (le décès ici).
Données avec plusieurs enregistrements par personne enregistrant la date d'entrée et la date courante
(ou le jour d'entrée et le jour courant) plutôt que la durée
1.
2.
3.
4.
5.
6.
+------------------------------------------+
| id
year
age
code curday
addday |
|------------------------------------------|
| 1
67
30
402
292
287 |
| 2
68
54
286
300
298 |
| 2
68
54
208
308
. |
| 2
68
54
401
311
. |
| 4
68
40
204
297
294 |
| 4
68
40
401
307
. |
+------------------------------------------+
Les variables adday et curday code indiquent le jour d'admission (seulement pour le premier
épisode) et le jour de la fin de chacun des épisodes. On peut avoir des dates au lieu des jours, ça ne
change rien.
On déclare avec
stset curday, failure(code == 402) id(patid) origin(time adday)
Il se peut que le patient ne soit pas à risque dès son entrée, mais seulement après un certain évènement
– par exemple une opération – qui est signalée par une variable (ou un code particulier de la variable
décrivant le type d'évènement).
On déclare avec
stset curday, failure(code == 402) id(patid) origin(code == 208)
Ici l'information avant que l'individu ne soit à risque n'est pas pertinente.
Dans ces deux cas, stata renormalise la durée de façon à ce qu'elle prenne la valeur 0 dès que le sujet
est à risque.
13.2 Description : stdescribe
Produit un résumé des données de survie.
13.3 stfill
stfill permet de remplir les différentes lignes d'un même individu lorsque celles-ci n'ont pas été
remplies systématiquement. Par exemple, le sexe n'a peut-être été enregistré que pour la première
ligne.
stfill varlist [if] [in], {baseline|forward}
© Benoît Rapoport 2013
Page 36
L'option baseline indique qu'on l'on remplit toutes les lignes du même identifiant avec
l'information de la première ligne (à utiliser typiquement quand les variables ne varient pas dans le
temps).
L'option forward indique qu'on l'on remplit toutes les lignes du même identifiant avec l'information
de la dernière ligne où les variables de varlist sont renseignées.
13.4 Estimateur de Kaplan-Meier : sts graph
La commande sts graph permet de tracer l'estimateur de Kaplan-Meier de la fonction de survie,
l'estimateur de Nelson-Aalen de la fonction de hasard cumulé (option cumhaz) et la fonction de
hasard (option hazard).
sts graph
sts graph, cumhaz
sts graph, hazard
Elle peut être combinée avec l'option by(varlist), ce qui permet de tracer les fonctions pour
plusieurs groupes.
L'option adjustfor(varlist) permet de tracer des courbes ajustées. Par exemple, supposons
que l'on compare la survie de personnes ayant ou non suivi un traitement. Si la distribution des âge
n'est pas identique dans les deux groupes, on comparera des choses non-comparables puisque les plus
âgés décèdent plus rapidement qu'ils aient ou non suivi le traitement. L'option permet de corriger de
ceci.
13.5 Modèles de survie paramétriques : streg
La syntaxe de base est :
streg varlist
Principales options
Par défaut le modèle estimé est le modèle exponentiel. On peut changer pour d'autres modèles avec
l'option distribution
distribution(exponential) : distribution exponentielle
distribution(gompertz) : distribution Gmpertz
distribution(loglogistic) ou llogistic : distribution log-logistique
distribution(weibull) : distribution Weibull
distribution(lognormal) ou lnormal : distribution lognormale
distribution(gamma) : distribution gamma généralisée
On peut ajouter de l'hétérogénéité inobservée avec l'option frailty. Deux formes de distributions
sont possibles : gamma et invgaussian (gaussienne inverse).
frailty(gamma | invgaussian)
© Benoît Rapoport 2013
Page 37
Remarque : la distribution définie par l'option distribution est gardée en mémoire ; de même que
l'option frailty, tant que l'on ne change pas de distribution.
Autres options
On peut stratifier l'estimation avec l'option strata(varname) ; dans ce cas les coefficients des
variables explicatives sont identiques d'une strate à l'autre, mais les constantes et les paramètres
auxiliaires peuvent varier. L'option n'est pas disponible si on a spécifié l'option frailty.
L'option offset(varname) permet de contraindre le coefficient de la variable varname à 1.
Quand on a choisi l'option frailty, on peut ajouter l'option shared(varname) qui indique que
les observations ayant la même varname partage aussi la même valeur de la distribution précisée
dans l'option frailty. Note : cette option n'est pas disponible avec la distribution gamma
(distribution(gamma)), les matrices de variances-covariances robust, opg et les clusters,
ainsi que le préfixe svy.
ancillary(varlist) spécifie que les paramètres auxiliaires des Weibull, lognormal, Gompertz,
et log-logistic et le premier paramètre auxiliaire (sigma) de la distribution gamma généralisée soient
estimés comme étant des combinaisons linéaires de varlist.
anc2(varlist) spécifie que le second paramètre auxiliaire (kappa) de la distribution gamma
généralisée soit estimé comme étant une combinaison linéaire de varlist.
13.6 Modèles de survie semi-paramétriques : stcox
stcox estime un modèle de Cox à hasards proportionnels.
stcox [varlist] [if] [in] [, options]
Les principales options sont les suivantes
estimate : modèle sans covariable.
strata(varnames) : variables identifiant la strate .(mêmes coefficients mais hasards de
base différents.
shared(varname) : variables identifiant la frailty partagée (même valeur d’hétérogénéité
inobsevée (distribution gamma).
offset(varname) inclut une variable dont le coefficient est constraint à 1
tvc(varlist) : signale les explicatives qui varient dans le temps.
texp(exp) : multiplicateur pour les explicatives qui varient dans le temps ; le défaut est
texp(_t).
nohr : reporte les coefficients et non les hazard-ratios.
On peut aussi choisir la façon dont les évènements qui arrivent en même temps sont traités.
13.7 Test d'égalité des fonctions de survie : sts test
On peut tester l'égalité des fonctions de survie (plusieurs types de tests peuvent être choisis) entre deux
ou plusieurs groupes définis par une varlist.
sts test varlist
© Benoît Rapoport 2013
Page 38
Ce test peut être fait par strates avec l'option strata(varlist). Avec l'option detail on obtient
en plus du test total, le test strate par strate.
Par exemple, par défaut, la commande effectue le test du logrank. L'option cox effectue le test de
Cox, etc…
13.8 Taille d'échantillon nécessaire : stpower
La commande stpower permet de déterminer la taille de l'échantillon nécessaire pour détecter un
effet. Elle est disponible avec le modèle de cox (stpower cox), le modèle exponentiel (stpower
exponentiel) et la comparaison de deux fonctions de survie (stpower logrank).
(voir des exemples variés dans la doc).
Avec le modèle de cox, on cherche à déterminer la taille minimale de l'échantillon nécessaire pour
détecter un taux de hasard donné (l'effet d'une variable donnée). Il faut préciser le taux de hasard, le
risque d'erreur (1ère espèce), la puissance (2ième espèce) et l'écart-type de la variable.
stpower cox, hratio(#) sd(#) power(#) alpha(#)
stpower cox, hratio(3) sd(0.75) power(0.95) alpha(0.001)
Avec le modèle exponentiel, on cherche à déterminer la taille minimale de l'échantillon nécessaire
pour détecter une réduction du hasard donnée.
stpower exponential 0.4, hratio(0.5)
On peut aussi se baser sur la différence des logs des hasards.
stpower exponential 0.4, hratio(0.5) loghazard
On peut aussi choisir les risques de 1ère et 2ième espèce avec les options alpha(#) et power(#).
Avec stpower logrank, on peut déterminer la taille de l'échantillon nécessaire pour comparer des
fonctions de survie :
stpower logrank 0.2, hratio(0.6667) power(0.9)
Donne la taille nécessaire pour détecter un ratio de hasard de 0.6667, quand le taux de survie (à 5 ans
par exemple) est à la base de 20%. Utile quand on connaît le taux de survie, par exemple d'un
traitement, et qu'on a un taux de survie cible pour un autre traitement ; la commande permet alors de
© Benoît Rapoport 2013
Page 39
déterminer la taille nécessaire de l'échantillon pour l'identifier (avec une puissance de 90% dans cet
exemple).
Inversement, si on précise la taille de l'échantillon avec l'option n(#), on obtient la puissance du test.
© Benoît Rapoport 2013
Page 40
14 Modèles de comptage : poisson, nbreg
poisson depvar indepvars [, exposure(varnamee) offset(varnameo) irr]
estime une régression de Poisson de la variable depvar sur les variables indepvars.
Note : voir d'autres options dans la doc/l'aide.
irr transforme les coefficients en ratios de taux d'incidence.
exposure(varnamee) indique la durée d'exposition.
offset(varnameo) signale une variable dont on veut contraindre le coefficient à 1.
En général, si on dispose de la durée d'exposition, le nombre d'évènements sera proportionnel à la
durée (varnamee). Dans ce cas : exposure(varnamee) inclut la variable ln(varnamee) en
contraignant son coefficient à 1. Si on a déjà le log de l'exposition, on précisera plutôt :
offset(varnameo) ou varnameo est ce log.
estat gof
produit un test de goodness-of-fit après une régression.
nbreg depvar indepvars [, exposure(varnamee)
dispersion(mean | constant)]
offset(varnameo)
estime une régression négative binomiale de la variable depvar
indepvars.
irr
sur les variables
dispersion(mean | constant) spécifie la paramétrisation du modèle : la dispersion
est soit une fonction de l'espérance de la moyenne (c'est le cas par défaut), soit une constante.
Note : la commande gnbreg (régression négative binomiale généralisé permet de paramétrer le
paramètre du processus en fonction de variables explicatives).
zip
depvar
indepvars,
inflate(varlist[,
exposure(varnamee) offset(varnameo) irr]
offset(varname)]
[,
estime une régression de Poisson à zéro prépondérant (ZIP – zéro-inflated Poisson) de la
variable depvar sur les variables indepvars.
L'option inflate(varlist) permet de préciser les variables jouant sur la probabilité
d'avoir 0.
zinb
depvar
indepvars,
inflate(varlist[,
offset(varname)]
[,
exposure(varnamee) offset(varnameo) irr dispersion(mean | constant)]
estime une régression négative binomiale à zéro prépondérant (ZINB – zéro-inflated negative
binomiale) de la variable depvar sur les variables indepvars.
L'option inflate(varlist) permet de préciser les variables jouant sur la probabilité
d'avoir 0.
© Benoît Rapoport 2013
Page 41
15 Séries temporelles : introduction
15.1 Déclaration des données de type séries temporelles : tsset
Les données de ce type doivent être déclarées comme telles à l'aide de la commande tsset (voir la
doc pour la description complète).
tsset timevar, format(%fmt)
tsset timevar, daily
tsset timevar, weekly etc.
15.2 Retardées, avances
Stata permet d'utiliser la plupart des opérateurs temporels standards (ex. L. est l'opérateur retard ; on
peut les utiliser de façon synthétique L(1/3).varname signifie L.varname L2.varname
L3.varname). Pour pouvoir les utiliser il faut que les données aient été déclarées comme séries
temporelles. Stata traite alors un retard (par exemple) en fonction du pas qui a été déclaré (le mois par
exemple).
On peut utiliser les opérateurs en créant des variables (gen varret = L.var) ou directement
dans une commande (reg dep var L.var).
Le L est l'opérateur retard ; F l'opérateur avance ; D l'opérateur différence et S l'opérateur différence
saisonnière
15.3 Représentation graphique des séries, corrélogrammes : tsline, corrgram
tsline permet de tracer la série.
tsline varname
La commande permet de tabuler l'autocorrélogramme et les commandes ac et pac de tracer les
corrélogrammes et les corrélogrammes partiels.
Par exemple, sur des données mensuelles, on peut trace le corrélogramme (graphique des
autocorrélations) avec les intervalles de confiance.
ac varname, lag(24)
Cela permet d'observer s'il y a une tendance et une saisonnalité.
Ensuite, on peut tracer le corrélogramme partiel en tenant compte de la tendance et de la saisonnalité.
pac DS12.varname, lag(24)
(par exemple avec une saisonnalité annuelle – tous les 12 mois)
L'option lag(#) permet de choisir le nombre d'autocorrélations à calculer.
© Benoît Rapoport 2013
Page 42
15.4 Estimation : séries univariées
Il y a 4 estimateurs pour les séries temporelles univariées sous Stata : newey et prais qui sont peu
utilisés aujourd'hui et arima (modèles arma avec perturbations autorégressives à moyenne mobile) et
arch (modèles autorégressif conditionnellement hétéroscédastiques – volatilité non constante).
Processus autorégressif (AR)
L'expliquée dépend de ses p retardées (5 dans l'exemple).
arima varname, ar(5)
Processus à moyenne mobile (MA)
L'expliquée est une fonction d'un terme d'erreur et des q retardées de ce terme d'erreur (3 dans
l'exemple).
arima varname, ma(4)
Processus autorégressif à moyenne mobile (ARMA)
On mêle les deux.
arima varname, ar(5) ma(4)
On peut vouloir désaisonnaliser auparavant (ici avec une saisonnalité de 12 mois) :
arima S12.varname, ar(5) ma(4)
On peut aussi vouloir prendre en compte un éventuel trend :
arima DS12.varname, ar(5) ma(4)
Modèle arch (voir la doc)
De manière la plus générale, la variable expliquée peut dépendre d'explicatives, d'une combinaison
linéaire de fonctions des variances retardées des termes d'erreur et d'un processus Arma. La fonction
peut être choisie. Par exemple, le modèle ARCH le plus simple (avec un retard de 1) suppose que
l'expliquée dépend du résidu au carré retardé.
arch D.varname, arch(1)
On peut ajouter les termes ar et ma
arch D.varname, arch(1) ar(1) ma(1 4)
15.5 Modèles multivariés (introduction)
Dans certains cas, on veut pouvoir lier différentes variables (expliquer une série par d'autres) pour
déterminer des causalités. Stata permet d'estimer le modèle VAR (vector autoregressive) et le modèle
SVAR (structural vector autoregressive) pour les séries stationnaires et des modèle à corrections
d'erreur (VEC) pour les séries cointégrées.
var dln_inv dln_inc dln_consump, dfk
var D.ln_inv D.ln_inc D.ln_consump, dfk
© Benoît Rapoport 2013
Page 43
var D.ln_inv D.ln_inc D.ln_consump, dfk lags(1/3)
Les trois variables sont estimées simultanément (en différence première). Dans la première ligne, on a
d'abord crée les différences premières ; dans la seconde on utilise l'opérateur différence D. Dans la
troisième, on utilise les 3 premières retardées au lieu de deux premières (par défaut).
On peut supposer que certaines de variables sont exogènes :
var D.ln_inc D.ln_consump, dfk exog(D.ln_inv)
© Benoît Rapoport 2013
Page 44
16 Tables pour épidémiologistes
16.1 Les proportions : proportion
La commande proportion varlist donne une estimation (avec les écarts-type et les intervalles
de confiance) des catégories identifiées par les variables de varlist.
L'option over(varlist) permet de produire les proportions pour différents groupes définis par
une varlist.
On peut obtenir des proportions standardisées avec les options stdize(varname) qui indique que
les estimations doivent être standardisées selon les strates (définies par une variable) et stdweight
(varname)qui définit la variable de poids à utiliser.
proportion groupage
Proportion estimation
Number of obs
=
48
-------------------------------------------------------------| Proportion
Std. Err.
[95% Conf. Interval]
-------------+-----------------------------------------------groupage
|
0 |
.1666667
.0543607
.0573071
.2760262
1 |
.5625
.0723605
.4169295
.7080705
2 |
.2708333
.064821
.1404304
.4012363
--------------------------------------------------------------
16.2 Les tables d'épidémiologie : ir, cs, cc, mcc, tabodds, mhodds
Enquêtes de cohorte
ir cas expose temps
cas signale l'évènement (indicatrice), expose le fait d'être exposé (indicatrice) et temps la durée
d'observation.
Produit un tableau résumant le nombre de cas exposés, les durées d'exposition, les taux d'incidence, la
différence et le ratio des taux d'incidence, les fractions attribuables à l'exposition pour la population
des exposés et l'ensemble de la population. Le tableau donne aussi les intervalles de confiance pour
ces statistiques.
Note : La commande se transpose en fractions empêchées plutôt qu'attribuables quand le ratio des taux
d'incidence est inférieur à 1 (incidence plus importante chez les non-exposés).
Les données peuvent être des données agrégées (nombre d'exposés, nombre de non-exposés et les
nombres de personnes-années correspondants, on a alors 2 ou plusieurs lignes), ou bien des données
individuelles (indicatrice d'exposition, indicatrice d'occurrence de d'évènement et durée d'observation),
Stata se chargeant alors d'agréger les données.
© Benoît Rapoport 2013
Page 45
L'option by(varlist) permet de produire une analyse stratifiée (par exemple par sexe ou par
tranche d'âge). On obtient alors le ratio des taux d'incidence pour chaque strate, le ratio pour
l'ensemble (crude) et le ratio qui tient compte du fait qu'il n'est pas nécessairement identique entre
les strates, l'estimateur de Mantel-Haenszel (~ équivalent à celui qu'on obtiendrait en faisant une
régression de Poisson en contrôlant pour les strates). On obtient aussi un test d'homogénéité de la
durée de l'exposition entre les strates.
Les options estandard, istandard et standard(varname) spécifient que l'on souhaite des
estimations standardisées, c'est-à-dire corrigeant de la différence de structure selon les facteurs de
confusion (exemple de la structure par âge). L'option estandard permet de choisir des poids
proportionnels à la population des non-exposés (standardisation externe) et istandard permet de
choisir des poids proportionnels à la population des exposés (standardisation interne).
standard(varname) permet de choisir ses propres poids (si on veut choisir une autre population
de référence).
La commande existe sous forme immédiate : iri a b N1 N2. a est le nombre de cas parmi les
exposés, b parmi les non-exposés, N1 et N2 les durées totales d'observation correspondantes.
ir died transplant stime
| Heart Transplant
|
|
Exposed
Unexposed |
Total
-----------------+------------------------+-----------Survival Status |
45
30 |
75
Survival Time [D |
28653
3285 |
31938
-----------------+------------------------+-----------|
|
Incidence Rate | .0015705
.0091324 |
.0023483
|
|
|
Point estimate
|
[95% Conf. Interval]
|------------------------+-----------------------Inc. rate diff. |
-.0075619
|
-.0108619
-.0042619
Inc. rate ratio |
.1719715
|
.1059858
.2827181
Prev. frac. ex. |
.8280285
|
.7172819
.8940142
Prev. frac. pop |
.7428612
|
+------------------------------------------------(midp)
Pr(k<=45) =
0.0000
(midp) 2*Pr(k<=45) =
0.0000
(exact)
(exact)
(exact)
(exact)
cs cas expose
Lorsque l'on ne dispose pas de la durée d'observation, mais seulement du nombre de cas et de non-cas
à la fois pour les exposés et les non-exposés, on normalise les ratios, non à l'aide de la durée
d'observation mais à l'aide du nombre de sujets. La variable cas signale si l'individu est un cas et la
variable expose s'il a été exposé.
Si ce ne sont pas des données individuelles, mais des données agrégées, il faut une troisième variable
pop qui signale l'effectif. La commande s'écrit alors cs cas expose [pw = pop].
On a alors le même type de sortie qu'avec ir et de la même façon on peut travailler avec des données
stratifiées et aussi obtenir des estimations standardisées.
© Benoît Rapoport 2013
Page 46
cs died transplant
| Heart Transplant
|
|
Exposed
Unexposed |
Total
-----------------+------------------------+-----------Cases |
45
30 |
75
Noncases |
24
4 |
28
-----------------+------------------------+-----------Total |
69
34 |
103
|
|
Risk | .6521739
.8823529 |
.7281553
|
|
|
Point estimate
|
[95% Conf. Interval]
|------------------------+-----------------------Risk difference |
-.230179
|
-.3862481
-.0741099
Risk ratio |
.7391304
|
.5981945
.9132712
Prev. frac. ex. |
.2608696
|
.0867288
.4018055
Prev. frac. pop |
.1747573
|
+------------------------------------------------chi2(1) =
6.10 Pr>chi2 = 0.0135
Enquêtes de type cas-témoins (case-control data)
cc cas expose [pw = pop]
La variable cas signale si l'individu est un cas et la variable expose s'il a été exposé et si ce ne sont
pas des données individuelles, mais des données agrégées, il faut une troisième variable pop qui
signale l'effectif.
La commande donne la proportion d'exposés parmi les cas et les témoins, l'odd-ratio avec un intervalle
de confiance et les fractions attribuables (parmi les exposés et la population). Donne aussi la
statistique de Fisher testant l'égalité du ratio à 1.
Là aussi on peut stratifier avec l'option by(varlist). Note : il est possible de choisir la façon
d'approximer les intervalles de confiance à l'intérieur de chaque strate.
cc died transplant, by(age40)
age40 |
OR
[95% Conf. Interval]
M-H Weight
-----------------+------------------------------------------------0 |
.1242236
.0028176
.9381898
4.128205 (exact)
1 |
.2142857
.0259293
1.557739
2.8 (exact)
-----------------+------------------------------------------------Crude |
.25
.0579606
.8427891
(exact)
M-H combined |
.1606218
.0420441
.6136256
------------------------------------------------------------------Test of homogeneity (M-H)
chi2(1) =
0.16 Pr>chi2 = 0.6846
Test that combined OR = 1:
Mantel-Haenszel chi2(1) =
Pr>chi2 =
© Benoît Rapoport 2013
8.10
0.0044
Page 47
Le test d'homogénéité est "non-significatif" ce qui indique qu'a priori l'occurrence des cas (décès) peut
varier avec l'âge, mais qu'on ne peut pas rejeter l'hypothèse que les odds ratios des exposés et des nonexposés (transplantés et non-transplantés) soient les mêmes dans les deux strates.
Comme pour ir ou cc on peut obtenir des estimations standardisées avec les options estandard,
istandard et standard(varname).
tabodds cas niv_expose [fw = freq]
Permet de traiter le cas de différents niveaux d'exposition décrit dans la variable niv_expose. La
commande détermine pour chaque niveau le nombre de cas et de témoins, le ratio d'occurrence et son
intervalle de confiance, ainsi qu'un test d'homogénéité. L'option graph permet d'obtenir la forme du
lien. Elle produit aussi un test de tendance linéaire (score test).
On peut ajuster le test en stratifiant par les facteurs de confusion possibles avec l'option
adjust(varlist) ; on peut choisir la catégorie de référence avec l'option base(#).
mhodds cas niv_expose group [fw = freq]
Permet de contrôler pour des facteurs de confusion (variable group).
Enquêtes de type cas-témoins appariés (matched case-control data)
mcc cas expose [pw = pop]
Note : fonction comme la plupart des autres commandes décrites ci-dessus, mais ne permet pas la
stratification. On peut dans ce cas utiliser une régression logistique conditionnelle (clogit) pour
obtenir des odds-ratios.
On peut aussi utiliser mhodds.
© Benoît Rapoport 2013
Page 48
17 Écriture d'un programme (fichier "do")
Un "do file" n'est rien d'autre qu'une suite d'instructions. On peut y utiliser des macros locales
ou globales (voir ci-dessous).
17.1 Macros locales et globales
Les macros globales sous Stata (c'est-à-dire les variables qui n'existent que durant la session) se
notent $nom_de_macro.
Les macros locales sous Stata (c'est-à-dire les variables qui n'existent que durant le déroulement
du programme) se notent `nom_de_macro'.
Voir ci-dessous.
17.2 Boucles et conditionnement
17.2.1 if : commande de programmation
if exp {
liste de commandes
}
17.2.2 foreach : boucle sur des éléments (items)
foreach name in list {
liste de commandes
}
Exemple :
foreach X in mpg weight-turn {
liste de commandes
}
exécute la liste de commande pour les deux éléments "mpg" et "weight-turn"
Ceci n'a un sens que s'il est possible d'appliquer les commandes de la liste à l'élément
"weight-turn", sinon il en résulte un message d'erreur (voir ci-dessous).
foreach name of listtype list {
liste de commandes
}
© Benoît Rapoport 2013
Page 49
Exemple :
foreach X of varlist mpg weight-turn {
liste de commandes
}
exécute la liste de commande pour les éléments "mpg" et toutes les variables entre
weight et turn dans l'ordre du fichier : on a précisé que les items étaient des variables,
on peut donc utiliser toutes les façons synthétiques de définir une liste de variables.
A l'intérieur des accolades, on fait référence à l'élément courant en l'appelant du nom figurant
après foreach placé entre des cotes : `X'
Exemple : On veut estimer le même modèle pour plusieurs mesures du revenu
foreach y in revenu1 revenu2 revenu3 {
reg `y' x1 x2 x3
}
17.2.3 while : boucle jusqu'à ce qu'une condition soit remplie
local i = 1
while `i' < 10 {
liste de commandes
local i = `i' + 1
}
17.2.4 forvalues : boucle sur des valeurs "consécutives"
forvalues name = range {
liste de commandes
}
Exemples pour range :
1/10 : tous les entiers de 1 à 10
1(2)10 : les entiers de 1 à 10 par pas de 2 (1-3-5...)
voir d'autres possibilités.
© Benoît Rapoport 2013
Page 50
18 Manipulation des matrices
Il faut définir la taille maximale des matrices (40*40 par défaut sous intercooled Stata et
400*400 sous StataSE).
set matsize #
10 <= # <= 800 (Intercooled Stata) ; 10 <= # <= 11000 (StataSE)
18.1 Définition
Une matrice est définie de la façon suivante :
matrix A = expression
Par exemple,
1 2

3 4
matrix A = (1,2 \ 3,4) crée la matrice : 
matrix A = B + C
Voir la doc pour les opérations sur les matrices.
La virgule (,) sépare les colonnes et l'antislash (\) les lignes.
On extrait de la façon suivante :
matrix B = A[1,2..4], prend les éléments de la première ligne et des colonnes 2,
3, 4
matrix B = A[2…,2..4], prend les éléments des lignes 2 et plus et des colonnes 2,
3, 4
Si on a nommé les lignes et les colonnes, on peut donner le nom de la ligne ou de la colonne au
lieu de son numéro.
Le nom des lignes et colonnes a trois niveaux : le nom de l'équation, le nom de l'opérateur de
série temporel, le nom de la colonne. Par exemple, on a fait un logit multinomial sur une variable à 3
modalités. Il y a deux équations et les colonnes de la matrice de variances-covariances s'appelleront
eq1:var1, eq1:var2,…, eq2:var1, eq2:var2,…
18.2 "Accumulation" : mat accum
On ne peut manipuler que les matrices de taille 800*800 au plus (11 000 avec StataSE).
Toutefois, une commande permet de calculer le produit croisé de matrices.
matrix accum A = varlist
 X' X X'1 
 .
 1' X 1'1 
permet de calculer A = X'X ou plus précisément 
© Benoît Rapoport 2013
Page 51
Pour avoir X'X, on peut soit extraire de A, soit préciser l'option noconstant (matrix
accum A = varlist, noconstant)
On peut calculer X'BX (ou B est une matrice diagonale par bloc) avec la commande matrix
glsaccum
On peut accumuler la première variable avec les autres de la liste (ie calculer x1'X où X = (x2,
x3,…)) avec la commande matrix vecaccum A = varlist.
Dans tous les cas, on peut préciser une variable de poids.
Application :
matrix accum A = y x1 x2 x3
A produit l'accumulation de y et de X = (x1, x2, x3, _cons)
 y' y y' X 

 X' y X' X 
A peut s'écrire : ( y, X )' ( y, X ) = 
On obtient alors X'X et X'y
matrix XX = A[2…,2…]
matrix Xy = A[2…,1]
On peut alors calculer l'estimateur des MCO :
matrix b = syminv(XX)*Xy
18.3 Transformer une matrice en base et réciproquement : mkmat, svmat
Permettent de transformer une matrice en base de données et réciproquement.
18.4 Récupération des matrices de coefficients et de variances-covariances après une estimation
Dans la plupart des cas, la matrice de coefficients se récupère en écrivant
matrix A = get(_b)
Et la matrice de variances-covariances avec
matrix A = get(VCE)
Dans les programmes de classe e (par exemple regress), ces matrices sont stockées sous
e(b) et e(V).
Rq : après une commande, on peut lister avec la commande eret list (ereturn list)
pour les commandes de classe e (comme les commande d'estimation, regress, probit…) ou
return list pour les commandes de classe r (comme summarize) toutes les grandeurs
sauvegardées et que l'on peut récupérer. Par exemple le R² est stocké sous la macro e(r2). Attention
la syntaxe a changé : avant Stata 8, il fallait taper estimates list ou est list au lieu de
eret list.
© Benoît Rapoport 2013
Page 52
19 Ecriture d'une commande (fichier "ado")
19.1 Structure générale
capture prog drop myreg
drop le programme myreg
capture permet l'exécution de la commande drop même si ce programme n'existe pas
(en fait évite l'affichage d'un message d'erreur). De la même façon que Stata charge les
bases en mémoire vive, Stata charge les commandes exécutées en mémoire vive : c'est
alors le premier emplacement dans lequel Stata cherchera une commande. Donc si on
modifie la commande, mais que l'on ne droppe pas la version précédente, c'est celle-ci qui
sera appelée, même si on a écrasé le fichier .ado précédent. Quand la commande est
stabilisée, on peut supprimer cette première ligne.
program define myreg, eclass
définition du programme et de sa classe, eclass indique que les résultats des
estimations seront placées dans des macros de type e(). Aussi nclass, rclass et
sclass existent.
version 10.0
version de Stata (important : indique à Stata comment interpréter la syntaxe ce qui
n'oblige pas à réécrire les programmes pour chaque version…).
syntax varlist [if] (+ options)
syntaxe
(corps du programme)
end
(fin du programme)
Ajouter byable(recall) : par nature, les programmes ne permettent pas d'utiliser
l'instruction by. Pour que ce soit possible, il suffit d'ajouter dans la ligne de définition du programme
l'option byable(recall).
program define myreg, eclass byable(recall)
Les programmes personnels (.ado) se placent généralement dans c:\ado\personal\. On peut
aussi changer le répertoire par défaut : sysdir set PERSONAL "d:\ado\personal\" (pour
que cette commande s'exécute à chaque session, l'enregistrer dans un profile.do que vous placerez en
c:\ado\ ou dans le répertoire où se trouve wstata.exe ; vous pouvez y placer d'autres commandes
comme set matsize 800 par exemple).
19.2 Macros locales et globales sous Stata
Les macros globales sous Stata (c'est-à-dire les variables ou, plus généralement, des objets qui
n'existent que durant la session) se notent $nom_de_macro.
© Benoît Rapoport 2013
Page 53
Les macros locales sous Stata (c'est-à-dire les variables/objets qui n'existent que durant le
déroulement du programme) se notent `nom_de_macro'.
Ces macros doivent être déclarées avant utilisation ; par exemple
global mname "string"
local lclname "string"
Pour les variables locales on utilise généralement plutôt
tempvar varlist
Les deux syntaxes global et local permettent toutefois l'utilisation de fonctions étendues
(voir la doc).
Les matrices, scalaires et fichiers locaux sont déclarés respectivement avec tempname
(matrices et scalaires) et tempfile (fichiers).
19.3 Analyse de la syntaxe (parsing)
gettoken
Permet d'analyser la syntaxe ("parse")
gettoken emname1 [emname2] : emname3, parse(pchars)
prend le premier élément de la macro emname3, le met dans emname1, et si emname2
est précisé, met le reste dans emname2.
Dans pchars figure le caractère séparant les éléments (par défaut " ").
Exemple simple : programmation des MCO.
Remarque : il y a d'autres façons d'analyser la syntaxe (voir doc) : ainsi tokenize met les éléments
dans des macros locales 1, 2, …qui sont ensuite appelées en écrivant `1', `2',….
© Benoît Rapoport 2013
Page 54
20 Introduction au maximum de vraisemblance
20.1 Les méthodes
Il y a 4 méthodes permettant la maximisation de la vraisemblance : lf, d0, d1, d2.
lf (pour linear form, parce que ce qui passe du programme principal au programme annexe est
directement les Xiβ, la vraisemblance doit donc s'écrire comme une fonction des Xiβ) se distingue des
3 autres méthodes en ce que les calculs se basent sur les vraisemblances individuelles (lnLi), et le
résultat donné par le programme annexe est supposé être la somme des vraisemblances individuelles.
Pour les 3 autres méthodes, Stata travaille directement sur la vraisemblance totale lnL. Donc, avec les
méthodes d0, d1 et d2, la fonction de vraisemblance peut avoir des éléments qui ne sont
indépendants que pour des groupes d'observations (exemple : données de panel) ; dans ce cas, il faut
généralement calculer les contributions pour chacun des groupes (par exemple pour chacun des
individus si on a des données de panel) en s'arrangeant pour enregistrer la contribution de l'individu
dans la dernière ligne correspondant à cet individu, créer une indicatrice signalant quelle est la
dernière ligne pour chaque individu et calculer la vraisemblance seulement pour ces lignes (avec une
condition if dans la ligne où l'on écrit la commande mlsum, voir la doc de Stata et les exemples).
La méthode lf passe directement les index (les Xiβ) alors que les méthodes d0, d1 et d2 passent
les paramètres. On utilise alors la commande mleval pour générer les index (si nécessaire).
Avec d0, on ne spécifie que la vraisemblance ; avec d1, on ajoute le gradient (d1debug est une
méthode alternative qui permet d'afficher à chaque étape le gradient numérique et le gradient
analytique afin de vérifier que ce dernier est correct) ; avec d2 (et d2debug), on spécifie en plus le
hessien.
Généralement lf fonctionne bien, mais dès qu'on a du panel, ou encore pour les modèles de
durée, il faut utiliser généralement d0, d1 ou d2. d0 est la méthode la plus lente et la moins précise,
mais la plus facile à implémenter.
20.2 La structure générale
On écrit généralement 2 programmes :
- la commande principale qui fixe la syntaxe et les options d'optimisation
- le programme dans lequel on écrit la vraisemblance et le cas échéant, le gradient et
le hessien.
Voir les exemples : probit, tobit et tobit généralisé.
Structure générale du programme principal
La commande principale s'écrit comme un ado (voir section X). On y fait figurer en outre les
commandes spécifiques à la maximisation de la vraisemblance, en particulier (voir les autres
instructions dans la doc) :
ml model method progname eq [weight] [if exp] [in range] [,
options]
method est lf, d0, d1 ou d2
© Benoît Rapoport 2013
Page 55
progname donne le nom du programme dans lequel la vraisemblance est définie
(en général on lui donne le même nom que le programme principal et on ajoute
_LL ou _ll).
eq déclare les équations sous la forme
([eqname:] [varnames] = [varnames]) soit (nom
l'équation: endogènes = exogènes)
de
/equame quand le paramètre n'est attaché à aucune variable (un sigma par
exemple). Ceci est équivalent à (eqname:)
Parmi les options, on peut préciser la technique d'estimation (depuis Stata 8 ou 9) :
nr (le défaut), bhhh, dfp, bfgs) :
technique(bhhh)
ml search
cherche les valeurs initiales
ml init matname [, options]
donne une matrice (ou des valeurs, cf doc) initiale(s)
ml maximize [, options]
parmi les options :
* difficult si la vraisemblance est difficile à maximiser (plus lent car
plus de sous itérations)
* trace ; gradient ; hessien ; showstep : donnent les détails des
itérations
* iterate(#) (+ les options de tolérance, cf doc) : fixent le nombre
d'itérations et les paramètres de sensibilité
Structure générale du programme annexe
Méthode lf
program progname
version 10.0
arg lnf theta1 [theta2 ...]
* calculs intermédiaires, voir exemples *
...
qui replace `lnf' = ...
end
Méthode d0
program progname
version 10.0
arg todo b lnf
tempvar theta1 theta2 ...
mleval `theta1' = `b', eq(1)
mleval `theta2' = `b', eq(2)
...
© Benoît Rapoport 2013
s'il y a une équation 2
Page 56
* calculs intermédiaires, voir exemples *
...
mlsum `lnf' = ...
end
Méthode d1
program progname
version 10.0
arg todo b lnf g
tempvar theta1 theta2 ...
mleval `theta1' = `b', eq(1)
mleval `theta2' = `b', eq(2)
..
s'il y a une équation 2
* calculs intermédiaires, voir exemples *
...
mlsum `lnf' = ...
if (`todo' == 0 | `lnf' >= .) exit
tempname d1 d2 ...
mlvecsum `lnf' `d1' = ..., eq(1)
* après le =, on met la formule pour le gradient par
rapport au 1er vecteur de paramètres
mlvecsum `lnf' `d2' = ..., eq(2)
...
matrix `g' = (`d1',`d2',...)
end
Méthode d2
program progname
version 10.0
arg todo b lnf g negH
tempvar theta1 theta2 ...
mleval `theta1' = `b', eq(1)
mleval `theta2' = `b', eq(2)
...
s'il y a une équation 2
* calculs intermédiaires, voir exemples *
...
mlsum `lnf' = ...
if (`todo' == 0 | `lnf' >= .) exit
tempname d1 d2 ...
mlvecsum `lnf' `d1' = ..., eq(1)
* après le =, on met la formule pour le gradient par
rapport au 1er vecteur de paramètres
mlvecsum `lnf' `d2' = ..., eq(2)
...
matrix `g' = (`d1',`d2',...)
© Benoît Rapoport 2013
Page 57
tempname d11 d12 d22 ...
mlmatsum `lnf' `d11' = ..., eq(1)
* après le =, on met la formule pour l'opposé du hessien
par rapport au 1er vecteur de paramètres
mlmatsum `lnf' `d12' = ..., eq(1,2)
mlmatsum `lnf' `d22' = ..., eq(2)
...
matrix `negH' = (`d11',`d12',... \ `d12',`d22',...)
end
todo prend la valeur 0 si lnf (le premier argument) doit être calculé, 1 s'il faut aussi calculer g et 2
s'il faut aussi calculer negH (on peut donc appeler le programme avec todo = 0, même pour les
méthodes d1 et d2).
Remarque : la contrainte imposant que la vraisemblance respecte la forme linéaire n'empêche pas que
l'on puisse estimer des modèles non-linéaires.
Par exemple : supposons que l'on cherche à estimer le modèle (on omet l'indice individuel) :
y = β 0 + β1 X 1 + β 2 X 2 + β 3 X 3
On peut écrire la vraisemblance
{(
θ3
ln l = ln φ y − θ1 − θ 2 X 3
β4
) θ }− lnθ
4
(
+ ε avec ε ~ N 0, σ 2
)
4
θ1 = β 0 + β1 X 1 + β 2 X 2 , θ 2 = β 3 , θ 3 = X 3 , θ 4 = σ
Dans ce cas, on écrit le programme annexe
program my_modele_nl_ll
version 10.0
arg lnf theta1 theta2 theta3 sigma
quietly replace `lnf' = ln(normalden($ML_y1,`theta1'
`theta2'*$X3^`theta3',`sigma'))
end
+
Et on définit X3 comme une variable globale dans le programme principal
global X3 variable3
ml model lf my_modele_nl_ll (variable_dep = variable1 variable2)
/beta3 /beta4 /sigma
ml maximize
20.3 _diparm
Dans un certain nombre de cas, il faut transformer certains paramètres auxiliaires dans la
vraisemblance, par exemple contraindre une corrélation entre -1 et 1. Pour calculer ensuite les écartstypes du paramètre non-transformé on peut appliquer après l'estimation la méthode Delta. La
commande _diparm permet de le faire simplement en précisant analytiquement les dérivées
partielles (sauf pour les cas les plus fréquents).
© Benoît Rapoport 2013
Page 58
21 Recherche de ressources sur internet
Mise à jour de Stata : update query permet de recherche s'il existe des mises à jour sur le site
On trouve un grand nombre de commandes faites main sur le site du Boston College:
http://ideas.repec.org/s/boc/bocode.html
Accessible aussi par le site de Stata (ressources & support puis statalist).
Si on connaît le nom du module, on peut taper directement :
ssc install nom-module, all
Commandes Stata : search et findit
Permettent de chercher des ressources à partir de Stata.
On peut aussi utiliser
net search mot-clé, puis net install nom-module, all
Attention : peut ne pas fonctionner avec les licences réseau selon les droits de l'utilisateur.
Statalist est la liste d'utilisateurs de Stata. On peut s'inscrire ou consulter les archives sur yahoo.
http://www.stata.com/statalist/
© Benoît Rapoport 2013
Page 59
Table des matières
1
Prise en main du logiciel : éléments épars ..................................................................................................... 3
1.1
Configuration des fenêtres ..................................................................................................................... 3
1.2
Définition de la taille du buffer de l'ascenseur de la fenêtre de résultats ............................................... 4
1.3
Choix du répertoire de travail ................................................................................................................ 4
1.4
Taille de la mémoire allouée : set mem .............................................................................................. 4
1.5
Format de stockage des variables .......................................................................................................... 5
1.6
Réduction du format de stockage des variables ..................................................................................... 5
1.7
Garder trace de ce qu'on a fait ............................................................................................................... 5
1.8
L'aide ..................................................................................................................................................... 5
1.9
La mise à jour ........................................................................................................................................ 6
2
Structure générale d’une commande.............................................................................................................. 7
2.1
Structure générale d'une commande ...................................................................................................... 7
2.2
Les expression by, if et in ................................................................................................................. 7
3
Manipulation élémentaire de fichiers ............................................................................................................ 8
3.1
Extension des bases Stata ...................................................................................................................... 8
3.2
use : ouvrir un fichier de format Stata (.dta) ........................................................................................ 8
3.3
Lecture de bases de données d'un autre format que Stata ...................................................................... 8
3.4
Sauvegarder une table ............................................................................................................................ 8
3.5
Ouvrir une table pour la regarder........................................................................................................... 9
3.6
Examiner une table et les variables (caractéristiques) ........................................................................... 9
3.7
Examiner les variables (statistiques)...................................................................................................... 9
4
Manipulation avancée de fichiers ................................................................................................................ 10
4.1
sort : trie le fichier ............................................................................................................................ 10
4.2
merge : assemble des fichiers ............................................................................................................ 10
4.3
append : met bout à bout des fichiers................................................................................................ 10
4.4
reshape : transforme des données en lignes en données en colonnes .............................................. 10
4.5
keep/drop : comme leur nom l'indique ............................................................................................ 11
4.6
collapse : produit des fichiers de moyennes, écarts-types etc. ....................................................... 11
4.7
preserve/restore ........................................................................................................................ 11
5
Création de variables ................................................................................................................................... 12
5.1
Introduction ......................................................................................................................................... 12
5.2
Une variable est modifiée par replace ............................................................................................ 13
5.3
Les formats de variable........................................................................................................................ 13
5.4
Abréviations et listes de variables ....................................................................................................... 13
5.5
Les étiquettes ("labels") ....................................................................................................................... 14
6
Statistiques descriptives ............................................................................................................................... 15
6.1
Statistiques élémentaires ...................................................................................................................... 15
6.2
Tableaux croisés de statistiques plus élaborés ..................................................................................... 15
6.3
Coefficients de corrélation ................................................................................................................... 15
6.4
Tests d'égalité de moyennes et de variances ........................................................................................ 16
7
Les poids sous Stata ..................................................................................................................................... 17
8
Les graphiques ............................................................................................................................................. 18
8.1
Introduction ......................................................................................................................................... 18
8.2
Les types de graphiques proposés par Stata ......................................................................................... 19
8.3
Personnalisation des graphiques .......................................................................................................... 23
8.4
Sauvegarde et édition........................................................................................................................... 24
8.5
Combiner des graphiques .................................................................................................................... 24
9
Modèles de régression simples .................................................................................................................... 26
9.1
Structure générale d'une commande d'estimation ................................................................................ 26
9.2
Modèle de régression linéaire .............................................................................................................. 26
9.3
Expansion de variables qualitatives ..................................................................................................... 26
9.4
Estimation d'une variable dichotomique (probit, logit) ....................................................................... 27
9.5
Réaffichage des résultats ..................................................................................................................... 28
10 Estimation sous contraintes : constraint....................................................................................................... 29
11 Commandes post-estimation ........................................................................................................................ 30
© Benoît Rapoport 2013
Page 60
11.1 Récupérer les grandeurs après l'estimation .......................................................................................... 30
11.2 predict : prédiction post-estimation ................................................................................................ 30
11.3 test : tests post-estimation ................................................................................................................ 30
12 Présentation des différents formats de données : coupe, panel, modèles de durée, séries temporelles........ 32
12.1 Données en coupe ................................................................................................................................ 32
12.2 Données de panel ................................................................................................................................. 32
12.3 Données de durée................................................................................................................................. 32
12.4 Séries temporelles ................................................................................................................................ 33
12.5 Survey data .......................................................................................................................................... 33
13 Analyse de survie ........................................................................................................................................ 34
13.1 Déclaration des données de type modèles de durée : stset .............................................................. 34
13.2 Description : stdescribe................................................................................................................ 36
13.3 stfill ............................................................................................................................................... 36
13.4 Estimateur de Kaplan-Meier : sts graph ....................................................................................... 37
13.5 Modèles de survie paramétriques : streg ......................................................................................... 37
13.6 Modèles de survie semi-paramétriques : stcox................................................................................. 38
13.7 Test d'égalité des fonctions de survie : sts test ............................................................................ 38
13.8 Taille d'échantillon nécessaire : stpower ......................................................................................... 39
14 Modèles de comptage : poisson, nbreg ........................................................................................................ 41
15 Séries temporelles : introduction ................................................................................................................. 42
15.1 Déclaration des données de type séries temporelles : tsset ............................................................. 42
15.2 Retardées, avances ............................................................................................................................... 42
15.3 Représentation graphique des séries, corrélogrammes : tsline, corrgram ............................... 42
15.4 Estimation : séries univariées .............................................................................................................. 43
15.5 Modèles multivariés (introduction) ..................................................................................................... 43
16 Tables pour épidémiologistes ...................................................................................................................... 45
16.1 Les proportions : proportion ......................................................................................................... 45
16.2 Les tables d'épidémiologie : ir, cs, cc, mcc, tabodds, mhodds ................................... 45
17 Écriture d'un programme (fichier "do") ....................................................................................................... 49
17.1 Macros locales et globales ................................................................................................................... 49
17.2 Boucles et conditionnement ................................................................................................................. 49
17.2.1
if : commande de programmation ............................................................................................. 49
17.2.2
foreach : boucle sur des éléments (items) .............................................................................. 49
17.2.3
while : boucle jusqu'à ce qu'une condition soit remplie ........................................................... 50
17.2.4
forvalues : boucle sur des valeurs "consécutives" ................................................................ 50
18 Manipulation des matrices ........................................................................................................................... 51
18.1 Définition ............................................................................................................................................. 51
18.2 "Accumulation" : mat accum ........................................................................................................... 51
18.3 Transformer une matrice en base et réciproquement : mkmat, svmat ........................................... 52
18.4 Récupération des matrices de coefficients et de variances-covariances après une estimation............. 52
19 Ecriture d'une commande (fichier "ado") .................................................................................................... 53
19.1 Structure générale ................................................................................................................................ 53
19.2 Macros locales et globales sous Stata .................................................................................................. 53
19.3 Analyse de la syntaxe (parsing) .......................................................................................................... 54
20 Introduction au maximum de vraisemblance ............................................................................................... 55
20.1 Les méthodes ....................................................................................................................................... 55
20.2 La structure générale ........................................................................................................................... 55
20.3 _diparm ............................................................................................................................................ 58
21 Recherche de ressources sur internet ........................................................................................................... 59
© Benoît Rapoport 2013
Page 61