formation À stata 11 - … · stata est un logiciel de gestion de données et d’analyse...

91
F ORMATION À S TATA 11 NOTES DE COURS VÉRONIQUE S IMONNET ET ANTOINE TERRACOL

Upload: dinhthu

Post on 30-Jul-2018

228 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

FORMATION À STATA 11

NOTES DE COURS

VÉRONIQUE SIMONNET ET ANTOINE TERRACOL

Page 2: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi
Page 3: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

Table des matières

Liste des exemples 6

1 Généralités 71.1 Les fenêtres de Stata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.2 Obtenir de l’aide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91.3 Stata sur le web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91.4 Personnalisation et mise à jour . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.4.1 Personnalisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91.4.2 Mise à jour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.5 Commandes et ensemble de commandes . . . . . . . . . . . . . . . . . . . . . 101.5.1 Syntaxe générale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101.5.2 by, bysort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.5.3 if, in . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.5.4 Trucs et astuces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

1.6 Ouverture de bases de données . . . . . . . . . . . . . . . . . . . . . . . . . . 141.6.1 Les bases en format Stata . . . . . . . . . . . . . . . . . . . . . . . . . 141.6.2 Les autres formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.7 Fichiers .do et fichiers .log . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151.7.1 Fichiers .do . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151.7.2 Fichiers .log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2 Gestion des données 192.1 Types de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

2.1.1 Variables numériques et alphanumériques . . . . . . . . . . . . . . . . 192.1.2 Valeurs manquantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

2.2 Labels, notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.2.1 Labels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.2.2 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2.3 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.3.1 Les principales commandes . . . . . . . . . . . . . . . . . . . . . . . . 212.3.2 Résultats sauvegardés . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

2.4 Création et modification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242.4.1 Création de variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242.4.2 Changer de format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252.4.3 Supprimer des données . . . . . . . . . . . . . . . . . . . . . . . . . . 26

2.5 Les variables de date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3

Page 4: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

2.6 Fusion de bases de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282.6.1 merge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282.6.2 append . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

2.7 Format wide et format long . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292.8 collapse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

3 Procédures statistiques courantes 333.1 Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3.1.1 Tests sur une seule variable . . . . . . . . . . . . . . . . . . . . . . . . 333.1.2 Tests sur plusieurs variables . . . . . . . . . . . . . . . . . . . . . . . 37

3.2 Analyse de la variance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383.3 Tables d’épidémiologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

3.3.1 Quelques définitions . . . . . . . . . . . . . . . . . . . . . . . . . . . 403.3.2 Commandes Stata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

3.4 Analyse de facteurs et analyse en composantes principales . . . . . . . . . . . 453.4.1 Analyse de facteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453.4.2 Analyse en composantes principales . . . . . . . . . . . . . . . . . . . 48

4 Graphiques 534.1 Graphiques de statistiques descriptives . . . . . . . . . . . . . . . . . . . . . . 534.2 Graphiques univariés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554.3 Graphiques multivariés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584.4 Superposition de graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . . 604.5 Légende, titres etc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

5 Estimation 655.1 Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655.2 Variables catégorielles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

5.2.1 Stata 10 et avant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675.2.2 Stata 11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

5.3 Moindres carrés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695.3.1 MCO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695.3.2 MCG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

5.4 Variables instrumentales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705.5 Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705.6 Données de panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

5.6.1 Modèles à effets fixes . . . . . . . . . . . . . . . . . . . . . . . . . . . 715.6.2 Modèles à effets aléatoire . . . . . . . . . . . . . . . . . . . . . . . . . 715.6.3 Test d’Hausman . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

5.7 Variables qualitatives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725.7.1 Probit et Logit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 735.7.2 Probit et Logit ordonnés . . . . . . . . . . . . . . . . . . . . . . . . . 735.7.3 Logit multinimial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

5.8 Modèles à sélection endogène . . . . . . . . . . . . . . . . . . . . . . . . . . . 745.9 Modèles de durée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

Page 5: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

5.9.1 Déclaration des données . . . . . . . . . . . . . . . . . . . . . . . . . 745.9.2 Estimation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755.9.3 Hétérogénéité inobservée . . . . . . . . . . . . . . . . . . . . . . . . . 76

6 Programmation 796.1 Macros locales et globales . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796.2 macros numériques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 806.3 macros alphanumériques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 806.4 Boucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 806.5 Boucles simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 816.6 Boucles imbriquées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 816.7 foreach et forvalues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 826.8 Création de commandes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 836.9 Estimation par maximum de vraisemblance . . . . . . . . . . . . . . . . . . . 846.10 Monte-Carlo et bootstrap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

6.10.1 Monte-Carlo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 886.10.2 Bootstrap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

Bibliographie 91

Page 6: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

Liste des exemples

1 Commentaires dans un fichier .do . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 Un exemple de session Stata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 Tests de normalité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334 Tests graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345 Tests sur l’écart-type et sur la moyenne . . . . . . . . . . . . . . . . . . . . . . . . 356 Tests sur deux sous-populations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357 Tests sur données appariées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378 Test du χ2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389 ANOVA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3910 Tables d’épidémiologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4111 Analyse de facteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4512 Analyse en composantes principales . . . . . . . . . . . . . . . . . . . . . . . . . . 4913 Graphique de statistiques descriptives . . . . . . . . . . . . . . . . . . . . . . . . . 5314 Graphique de statistiques descriptives (2) . . . . . . . . . . . . . . . . . . . . . . . 5415 Un histogramme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5516 Estimation de densité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5517 Un graphique en camembert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5618 Boîte à moustache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5719 Nuage de points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5820 Matrice de nuages de points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5921 Graphique reliant les observations . . . . . . . . . . . . . . . . . . . . . . . . . . . 5922 Deux axes des abscisses différents . . . . . . . . . . . . . . . . . . . . . . . . . . . 6023 Titres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6124 Utilisation des options avancées . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6225 Création de variables en chaîne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8126 foreach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8227 foreach (2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8228 forvalues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8229 forvalues (2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8330 Hello world . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8331 Utilisation de syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8332 Programmation d’un probit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8533 Estimation linéaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8734 Propriétés des MCO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

6

Page 7: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

Chapitre 1

Généralités

Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Soninterface graphique permet d’effectuer une analyse en utilisant les menus déroulant de son in-terface graphiques ou bien en tapant directement la ligne de commande à effectuer.

À la différence d’autres logiciels, comme SAS, Stata charge l’ensemble de la base de don-née active en mémoire. Il en résulte que Stata sera typiquement plus rapide que SAS sur des« petites » bases de données, mais deviendra beaucoup plus lent dès lors que la taille de la basenécessite l’utilisation de mémoire virtuelle. De façon générale, il convient de veiller à l’adé-quation de la mémoire vive installée sur l’ordinateur et de la taille de la base sur laquelle ontravaille 1.

1.1 Les fenêtres de StataLa figure 1.1 présente les quatres fenêtres principales de Stata, numérotées de 1 à 4.

1. La fenêtre « Stata Results » dans laquelle s’affichent les résultats des commandes

2. La fenêtre « Stata Command » dans laquelle on tape les instructions

3. La fenêtre « Review » qui indique toutes les commandes effectuées au cours de la ses-sion. Cliquer sur un des éléments de la fenêtre la fait apparaître à nouveau dans la fenêtrede commandes (attention, cela n’annule pas les éventuelles modifications de la base dedonnées effectuées entretemps).

4. La fenêtre « Variables » qui liste toutes les variables contenues dans la base de don-née, ainsi que leurs éventuels labels. Cliquer sur le nom d’une de ces variables la faitapparaître dans la base de donnée.

1. La commande set memory permet cet ajustement, voir infra.

c© V. Simonnet et A. Terracol, 2014 7

Page 8: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

FIGURE 1.1 – Les fenêtres Stata

8 c© V. Simonnet et A. Terracol, 2014

Page 9: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

1.2 Obtenir de l’aideLe menu déroulant « Help » propose un outil de recherche par mot-clef (« Search ») qui

vous proposera des résultats concernant des commandes Stata, des liens vers des FAQ ou desexemples sur internet, etc.

Si vous connaissez le nom de la commande sur laquelle vous souhaitez obtenir de l’aide, ilest plus rapide de passer directement par le menu Help/Stata Command.

Les fichiers d’aide contiennent souvent des liens hypertexte (mots ou phrases en bleu) re-voyant vers les fichiers d’aides d’autres commandes.

1.3 Stata sur le webLe site officiel de Stata (http://stata.com/) contient de nombreuse ressources utiles

aux utilisateurs débutants comme avertis. Notons entre autre :— la faq : http://stata.com/support/faqs/— les archives de la mailing list : http://stata.com/statalist/— la page des graphiques : http://stata.com/capabilities/graphexamples.

html— des exemples de codes pour des graphiques simples : http://stata.com/support/

faqs/graphics/gph/statagraphs.html— Les bases de données utilisées dans les exemples des manuels et des fichiers d’aide :

http://www.stata-press.com/data/r11/

Hors du site officiel de Stata, les consultants en statistiques de l’UCLA maintiennent un sitetrès fourni sur l’utilisation de Stata : http://www.ats.ucla.edu/stat/stata/

1.4 Personnalisation et mise à jour

1.4.1 PersonnalisationLa mémoire allouée par défaut par Stata à la base de donnée est de 1 Mo (peut varier selon les

versions de Stata). Cela est parfois insuffisant, et il convient alors d’augmenter la taille de cettemémoire en utilisant la commande set memory, suivie de la taille de la mémoire souhaitée, etéventuellement de l’option permanent si on veut voir ce réglage effectué à chaque démarragede Stata. On tapera par exemple

set memory 20m, permanentpour allouer de façon « permanente » 20 Mo de mémoire à la base de donnée.

1.4.2 Mise à jourPour chaque version de Stata, des mises à jour sont régulièrement disponibles (gratuite-

ment). On peut s’informer de la disponibilités de ces mises à jour en tapantupdate query

et en se laissant guider par les instructions.

c© V. Simonnet et A. Terracol, 2014 9

Page 10: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

Stata bénéficie d’une communauté d’utilisateur assez large, et d’une liste de discussion trèsactive, la « Statalist » dont on peut trouver les archives sur http ://stata.com/statalist/ De nom-breuses commandes écrites par des utilisateurs 2 sont également mises à la disposition des utili-sateurs. La plupart sont télécheargeables directement depuis Stata, et une liste (non exhaustive)peut être consultée sur http ://ideas.repec.org/s/boc/bocode.html

1.5 Commandes et ensemble de commandes

1.5.1 Syntaxe généraleLa syntaxe générale d’une commande se présente comme suit :commande [varlist] [if exp] [in range] [weight] [, options]

Les mots en gras correspondent à des mots réservés Stata, comme les noms de commande,d’options, ou certains préfixes. Les mots en italique sont des arguments à fournir par l’utili-sateur, comme une liste de variable, une expression logique etc. Les parties [entre crochets]sont des arguments optionnels. Notez ques les éléments placés après la virgule sont dénommé« options », même si ils doivent parfois être obligatoirement spécifiés.

Ainsi, la syntaxe de la commande summarize (qui donne des statistiques descriptives debase) est la suivante :

summarize [varlist] [if] [in] [weight] [, options]

où les options possibles sont :— detail— meanonly— format— separator(#)Lorsqu’une partie d’une commande ou d’une option est soulignée, cela indique la syn-

taxe minimale pour la commande ou l’option. On pourra donc écrire indifféremment su, sum,summ, summa,..., summarize

Le fait que varlist soit entre crochets indique qu’il n’est pas nécessaire de préciser uneliste de variables (idem pour if et in). La commande sera alors effectuée sur toute les variablesde la base.

Les options pour cette commande ont les effets suivants :— detail permet d’ajouter des statistiques telles que les quantiles, et les moments d’ordre

3 et 4.— meanonly permet de ne calculer que les moyennes et statistiques liées (somme, nombre

d’observations...). Cette option supprime l’affichage des résultats, mais les stocke dansdes macros réutilisables (voir la section 2.3.2).

— format utilise le format d’affichage spécifique des variables— separator(#) trace une ligne toutes les # variablesPour obtenir des statistiques détaillées sur l’ensemble des variables de la base de données,

on pourra taper

2. Ces commandes ne sont donc pas « garanties » par StataCorp.

10 c© V. Simonnet et A. Terracol, 2014

Page 11: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

su, dePour obtenir uniquement la moyenne d’une variable nommée age, on pourra taper

summarize age, mean(dans ce cas, rien ne s’affichera à l’écran, mais des résultats sont néanmoins sauvegardés. Voir

la section 2.3.2)

1.5.2 by, bysortUn certain nombre de commandes sont dites « by-able », c’est-à-dire qu’elles peuvent être

effectuées pour différents sous-groupes de la base de données, identifiés par les valeurs d’uneou de plusieurs variables. Pour que ces commandes soient effectuées séparément pour chacundes groupes, il faut lui rajouter le préfixe by suivi du nom de la ou des variables identifiantles groupes. Par exemple, si l’on dispose d’une variable sexe identifiant les hommes et lesfemmes, et que l’on souhaite obtenir des statistiques descriptives concernant une variable ageen séparant les sexes, on tapera :

by sexe : summarize ageSi on veut également des résultats séparés par sexe et par région, on tapera :

by sexe region : su age

En pratique, les données doivent être triées dans le bon ordre pour que Stata puisse effectuerles commandes par sous-groupe. La commande sort permet de faire celà :

sort sexeby sexe : su age

Il est souvent plus pratique d’utiliser bysort au lieu de by, car bysort trie automatique-ment les données avant d’effectuer la commande 3. On tapera par exemple

bysort sexe : su age

Si on veut effectuer un classement interne aux groupes définis par bysort, on indique lesvariables de ce tri supplémentaire entre parenthèse. Taper

bysort sexe (age)effectue le tri par sexe et âge, mais les groupes ne sont définis que par la variable de sexe (et nesont donc pas des groupes de sexe et d’âge)

1.5.3 if, inLes suffixes if et in permettent de n’effectuer les commandes que sur un groupe restreint

d’observations.

3. by garde son interêt si l’on est certain que les données sont déjà correctement triées, car dans ce cas by seralégèrement plus rapide que bysort.

c© V. Simonnet et A. Terracol, 2014 11

Page 12: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

if

if spécifie une condition logique, tandis que in spécifie les numéros de ligne des observa-tions à utiliser. Le tableau 1.1 ci dessous présente les différents opérateurs logiques disponibles.

TABLE 1.1 – Opérateurs logiques== égal à

!= ou ∼= différent de> supérieur à< inférieur à

>= supérieur ou égal à<= inférieur ou égal à& et| ou

Ainsi tapersu age if sexe==1

n’exécutera la commande que pour les hommes.

Conditions logiques

On peut spécifier des conditions logiques complexes en utilisant les parenthèses de façonadéquates, par exemple, pour spécifier que l’on souhaite appliquer la commandes aux femmesdes tous âge ainsi qu’aux hommes de plus de 40 ans, on tapera

if fe==1 | (fe==0 & age>40)

Stata évalue les conditions logiques à 1 si elle est vérifiée, et zéro sinon. On peut tirer partide cette propriété lorsque l’on souhaite créer des indicatrices. Ainsi, au lieu de taper

generate age60p = 1 if age>=60

replace age60p = 0 if age<60, on peut directement utiliser

generate agep60=(age>=60)Si age est plus grand ou égal à 60, la condition est évaluée à 1, et à zéro sinon, et une indicatriceest alors crée.

in

Le suffixe in spécifie les numéros des observations sur lesquelles effectuer les commandes.On peut soit indiquer directement le numéro des observations :su age in 5

ou bien spécifier un ensemble d’observations :su age in 20/30

12 c© V. Simonnet et A. Terracol, 2014

Page 13: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

1.5.4 Trucs et astucesAbréviations

De même que Stata permet d’appeler une commande par son abréviation (g au lieu degenerate, etc.), il est possible d’utiliser une syntaxe abrégée pour les listes de variables. Sil’argument varlist est optionnel, alors ne rien indiquer revient à spécifier toutes les variables. Lamacro _all a le même effet. Séparer deux noms de variables par un tiret vardeb-varfincorrespond à la liste de toutes les variables situées entre vardeb et varfin dans la base dedonnées (voir la commande order pour placer les variables dans un ordre particulier). Enfin,le caractère * s’utilise comme un « joker » : s* représente toutes les variables commençant pars ; et *s représente toutes les variables finisant par s.

Enfin, on peut se contenter d’indiquer les premières lettres d’un nom de variable, tant qu’iln’y a pas d’ambiguïté (une seule variable commençant par cette série de lettres).

Listes de chiffres

Un certain nombre de commandes demandent que vous spécifiez une liste de valeurs (parexemple pour indiquer les valeurs que vous voulez voir apparaître sur les axes d’un graphique,ou bien encore les valeurs délimitant des sous-catégories d’une variable continue, etc.). Si laliste des valeurs que vous souhaitez spécifier a une certaine régularité (par exemple, « 0,2,4,6,8 »,ou bien « 10, 20, 30, 40 », etc.), Stata vous permet de spécifier de telles listes de la façon sui-vante :

<valeur initiale>(<incrément>)<valeur finale>

Ainsi, 0(2)8 est équivalent à la liste « 0, 2, 4, 6, 8 » ; 100(-25)0 est équivalent à « 100,75, 50, 25, 0 », et ainsi de suite.

Il existe d’autres conventions pour indiquer une liste de valeurs. Si on souhaite que l’incré-ment soit de 1, on peut se contenter d’indiquer <valeur initiale>/<valeur finale>.Par exemple, 5/10 correspond à la liste « 5, 6, 7 ,8 ,9 10 »

On peut également indiquer implicitement la valeur de l’incrément en donnant les deuxpremières valeurs, puis en disant à Stata de continuer jusqu’à la dernière : 2 4 to 10 estéquivalent à « 2, 4, 6, 8, 10 »

Dans certains cas, il est possible de combiner plusieurs listes pour former une liste pluscomplexe. Par exemple, si on souhaite construire la liste commençant par 0, puis allant de 1 en1 de 2 jusqu’à 10, puis de 10 en 10 jusqu’à 100, et enfin de 100 en 100 jusqu’à 1000, on pourrautiliser, par exemple 0 2/10 20(10)100 200 300 to 1000

_n et _N

Les macros _n et _N représentent le rang de l’observation courante et le rang de la dernièreobservation. En utilisant le fait que var[i] désigne la ième observation de la variable var ; onva donc pouvoir utiliser var[1] pour représenter la valeur prise par la première observationde var, var[_N] pour la dernière observation, var[_n-1] pour l’observation précédente,etc. Dans le cas où un by var1 (var2) : a été spécifié, var[_N] désigne la valeur de la

c© V. Simonnet et A. Terracol, 2014 13

Page 14: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

variable var pour la dernière observation de chaque groupe défini par var1, classé par valeursde var2 croissante (en clair, c’est la valeur de var prise par la personne ayant la valeur devar2 la plus élevée au sein du groupe défini par var1).

Par exemple, si on dispose d’observations annuelles d’individus désignés par l’identifiantid, où l’année d’observation est désignée par year, mais où on ne dispose de l’âge (age) del’individu que pour son premier enregistrement. Pour calculer automatiquement l’âge de chaqueindividu pour les périodes où il n’est pas renseigné, on tapera :

bysort id (year) : replace age=age[_n-1]+1 if _n>1

1.6 Ouverture de bases de données

1.6.1 Les bases en format StataLes bases de donnée en format Stata portent l’extension .dta. Pour les charger en mémoire,

on peut soit utiliser le menu déroulant (File/Open) ou l’icône correspondante et rechercherla base dans l’arborescence, soit utiliser la commande use :

use C:/Stata/auto.dtaSi une base est déjà chargée en mémoire, il convient d’utiliser l’option clear afin de préciserque l’on désire effectivement changer de base de donnée :

use C:/Stata/auto.dta, clear

1.6.2 Les autres formatsExcel

Les bases sous Excel peuvent être directement copiées-collées sous Stata sous les conditionssuivantes :

— La première ligne du fichier contient les noms de variables— chacune des lignes suivantes correspond à une observation— le séparateur décimal soit le point, et non la virgulePour ouvrir l’éditeur de Stata afin d’y coller les données, on peut taperedit

ou cliquer sur l’icône « Data editor » .

Fichiers texte

les commandes insheet, infile et infix permettent d’ouvrir des bases de donnéesau format .txt.

Par exemple, un fichier texte ASCII sauvegardé à partir d’un fichier Excel ou d’un autrelogiciel peut être lu avec la commande insheet.

Si le séparateur est une tabulation, on écrira :insheet using base.txt, tab

14 c© V. Simonnet et A. Terracol, 2014

Page 15: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

ou bien, si le séparateur est une virgule :insheet using base.txt, comma

Les seules consignes à respecter avec cette commande sont la préparation du fichier dedonnées en indiquant sur la première ligne le nom des variables qui sont disposées en colonne.Il ne faut pas laisser de noms de variables sous format numérique et de préférence transformerles dates (en variables) avec un underscore : 2004 en _2004. Vérifier qu’il n’y a pas de virguledans les données pour ne pas troubler la reconnaissance des variables/colonnes.

Les commandes infile et infix nécessitent qu’on indique le nom des variables pré-sentes dans la base de donnée. Voir le fichier d’aide pour plus de détails.

1.7 Fichiers .do et fichiers .logLorsque l’on souhaite effectuer une série complexe d’opérations, ou tout simplement lorsque

l’on veut conserver les différentes étapes de son travail, il est conseillé d’utiliser les fichiers .doet .log

1.7.1 Fichiers .doUn fichier .do est un simple fichier texte contenant l’ensemble des commandes que l’on

souhaite voir Stata exécuter. Pour créer un fichier .do, on passe par l’éditeur proposé par Stata

en cliquant sur . Pour exécuter la série de commande du fichier, il suffit de cliquer sur

l’icône d’exécution dans l’éditeur de texte. Si on veut exécuter les commandes sans que le

résultat s’affiche à l’écran, il faut utiliser l’icône .Pour n’exécuter qu’une partie des commandes du fichier .do, il faut sélectionner ces lignes

avant de cliquer sur l’icône d’exécution.Il est souvent souhaitable d’ajouter des commentaires aux commandes dans un fichier .do.

Il existe trois façons d’indiquer à Stata qu’un portion de texte doit être ignorée.— L’étoile * placée en début de ligne indique que cette ligne ne doit pas être lue par Stata.

Attention, ailleurs qu’en début de ligne, l’étoile reprend son rôle de symbole de multi-plication.

— Les trois slash /// indiquent que le reste de la ligne (y compris le retour chariot final)doit être ignorée. En plus de commentaires, cela permet de couper une longue commandeen plusieurs lignes en insérant /// à l’endroit où on souhaite couper la commande 4

(voir l’exemple 1 ci-dessous).— Enfin, tout bloc de texte (même de plusieurs lignes) inclus entre /* et */ sera consi-

déré comme un commentaire. On peut également s’en servir pour couper les longuescommandes, comme dans l’exemple 1.

4. Il est également possible d’indiquer à Stata que l’on souhaite utiliser un autre délimiteur que le retour chariotà l’aide de la commande #delimit. Si on souhaite utiliser le point-virgule, on tapera #delimit; au début dufichier .do. Il sera alors possible de séparer les commandes en plusieurs lignes en mettant un point-virgule à la finde chaque commande.

c© V. Simonnet et A. Terracol, 2014 15

Page 16: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

Exemple 1 : Commentaires dans un fichier .do

/*Projet trucexploration des donnéesversion 1.0

*/

use C:/Recherche/Bases/base.dta,clear /// get data

*Statistiques descriptivessummarize age wage education, detail /*avec %iles*/summarize wage if (education >=3 & age>=45) ///

| (education<2 & age<30)summarize wage if (education >=3 & age<=45) /*

*/ | (education<2 & age>30)

1.7.2 Fichiers .logOn peut sauvegarder l’ensemble de ce qui s’imprime à l’écran dans un fichier .log. Pour en

créer un, on peut utiliser la commandelog using C:/marecherche/montravail.log

(NB : préférer le format .log au format .smcl par défaut qui ne permet pas l’ouverture dans

un éditeur de texte). Alternativement, on peut en ouvrir un en cliquant sur . Pour clore unfichier log, on tapera log close. Pour le suspendre temporairement, log off, et pour lereprendre log on (ou peut également cliquer sur l’icône de log pour suspendre, reprendre oufermer un fichier log)

16 c© V. Simonnet et A. Terracol, 2014

Page 17: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

Notes

c© V. Simonnet et A. Terracol, 2014 17

Page 18: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi
Page 19: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

Chapitre 2

Gestion des données

2.1 Types de variables

2.1.1 Variables numériques et alphanumériquesStata distingue les variables numériques des variables alphanumériques. Les variables nu-

mériques peuvent être stockées sous 5 types différents, selon la précision dont on a besoin. Lesvariables ne prenant que des valeurs entières peuvent être stockées sous les formats suivants :

TABLE 2.1 – Variables entièrestype précision valeurs admisesbyte . ±100int . ±32000

long . ±2.109

Les variables pouvant prendre des valeurs décimales peuvent être stockées sous les formatssuivants :

TABLE 2.2 – Variables décimalestype précision valeurs admisesfloat 10−8 ±1036

double 10−16 ±10308

Les variables numériques sont stockés par défaut en format float. Les calculs sont quantà eux effectués en double précision.

Les variables alphanumériques sont stockées au format strX, où X est le nombre de carac-tère que la variable peut contenir. Des valeurs « numériques » peuvent être stockées au formatstring, mais aucun calcul ne peut plus être effectué sur ces variables. Lors de l’utilisation deconditions logiques avec des variables alphanumériques, il faut mettre la valeur de ces dernièresentre guillement, par exemple

summarize if region=="Bretagne"

c© V. Simonnet et A. Terracol, 2014 19

Page 20: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

Comme Stata charge l’ensemble de la base de donnée en mémoire, le format de stockagea son importance. La commande compress permet d’assigner à chaque variable le formatminimisant la mémoire nécessaire.

2.1.2 Valeurs manquantesLes valeurs manquantes des variables numériques sont repérées par un point 1. Celles des

variables alphanumériques le sont par un espace.Une valeur manquante (numérique) est considérée comme ayant une valeur plus grande que

toute autre valeur. Il est important de s’en souvenir car, si les valeurs manquantes sont ignoréesdans les calculs demandés à Stata, elles ne le sont pas pour les conditions logiques. Par exemple,taper

summarize wage if age>=60donnera les statistiques descriptives de la variable wage pour tous les individus pour lesquels

la variable age est plus grande que 60 et pour ceux dont la variable age est manquante. Pouréviter cela, il faut taper

summarize wage if age>=60 & age<.

2.2 Labels, notes

2.2.1 LabelsOn peut attacher un label à une base de donnée, à une variable ou une valeur particulière de

cette variable. Ces labels seront utilisés en particulier dans les graphiques en faisant apparaîtrece label plutôt que le nom de la variable, qu’il convient de garder le plus court possible pour desraisons pratiques. La commande label permet de définir ces labels.

label data "nom de la base"permet de donner un label à la base de données.

label variable <nom de la variable> "label de la variable"donne un label à une variable particulière, par exemple :

label variable wage "salaire horaire, en Euros"

Pour donner un label à une valeur particulière d’une variable 2, il faut procéder en deuxtemps : définir à quelles valeur chaque label doit être associé avec la commande label define,puis appliquer ces label à la variable avec label value :

label define sexlbl 1 Homme 2 Femmedéfini une label nommé « sexlbl » qui indique que la valeur 1 correspond au label « Homme »

et la valeur 2 au label « Femme ». On applique ensuite cette définition à la variable sex :label value sex sexlbl

1. En fait, il est possible de coder diverses raisons pour laquelle une valeur est manquante en utilisant .a, .betc. jusqu’à .z pour repérer les non-réponses, les « je ne sais pas » etc.

2. Seules des valeurs entières peuvent avoir un label.

20 c© V. Simonnet et A. Terracol, 2014

Page 21: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

2.2.2 Notes

On peut également commenter une base ou une variable avec la commande notes. Plu-sieurs commentaires peuvent être associés à une variable ou base de donnée :

notes wage: attention aux variables manquantes

notes wage : les indépendants peuvent avoir des valeurs négatives

Pour lister toutes les notes, on tapera simplement notes.

2.3 Description

Un certain nombre de commandes permettent de décrire plus ou moins précisément la basede donnée ainsi que les variables qu’elle contient :

2.3.1 Les principales commandes— describe décrit la base de donnée— list liste toutes les valeurs de la base, observation par observation— summarize <liste de variables> donne les statistiques descriptives des va-

riables spécifiées (voir plus haut)— codebook <liste de variables> décrit les variables spécifiées, en précisant

le nombre de valeurs manquantes, les valeurs min et max, certains percentiles, etc.— sort <liste de variables> trie la base de donnée selon les valeurs croissantes

des variables spécifiées. L’ordre de tri correspond à la liste des variables spécifiées.— tabulate <1 ou 2 variables> donne les fréquences et pourcentage de chaque

modalité de la variable si une seule est indiquée. Si deux sont indiquées, il en résulte ta-bleau croisé indiquant les fréquences pour chaque couple de valeurs. Dans le cas de deuxvariables, les options row et col donnent les pourcentages en ligne ou en colonnes, etl’option chi2 effectue un test d’indépendance entre les variables.Dans le cas d’une seule variable, l’option summarize(<nom d’une variable>)donne les statistiques descriptives de la seconde variable pour chaque modalité de lapremière. L’option generate(<nouvelle variable>) crée des variables indi-catrices pour chaque modalité de la variable tabulée.

— table <liste de 4 variables au plus>, contents(<liste de statistiquessuivies des variables auxquelles elles doivent s’appliquer>)Permet d’obtenir les statistiques indiquées pour chaque sous groupe d’observations cor-respondant au croisement des variables de la première liste.

— tabstat <liste de variables>, statistics(<liste de statistiques>)Permet d’obtenir des statistiques telles que la moyenne, la médiane, les percentiles etc.du groupe de variables indiquées.

— correlate <liste de variables> affiche la matrice de corrélation des va-riables spécifiées. L’option covariance permet d’obtenir les covariances au lieu descorrélations.

c© V. Simonnet et A. Terracol, 2014 21

Page 22: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

Exemple 2 : Un exemple de session Stata

. des

Contains data from http://www.stata-press.com/data/r11/systolic.dtaobs: 58 Systolic Blood Pressure Datavars: 3 3 Mar 2007 21:40size: 812 (99.9% of memory free)

-------------------------------------------------------------------------------storage display value

variable name type format label variable label-------------------------------------------------------------------------------drug int %8.0g Drug Useddisease int %8.0g Patient’s Diseasesystolic int %8.0g Increment in Systolic B.P.-------------------------------------------------------------------------------Sorted by:

. su

Variable | Obs Mean Std. Dev. Min Max-------------+--------------------------------------------------------

drug | 58 2.5 1.158493 1 4disease | 58 2.017241 .8269873 1 3systolic | 58 18.87931 12.80087 -6 44

. su sys, de

Increment in Systolic B.P.-------------------------------------------------------------

Percentiles Smallest1% -6 -65% -3 -5

10% 1 -3 Obs 5825% 9 -2 Sum of Wgt. 58

50% 21 Mean 18.87931Largest Std. Dev. 12.80087

75% 28 3690% 34 42 Variance 163.862495% 42 42 Skewness -.09499299% 44 44 Kurtosis 2.13251

. codebook disease

-------------------------------------------------------------------------------------------------------------------------------------disease Patient’s Disease-------------------------------------------------------------------------------------------------------------------------------------

type: numeric (int)

range: [1,3] units: 1unique values: 3 missing .: 0/58

tabulation: Freq. Value19 119 220 3

. codebook systolic

-------------------------------------------------------------------------------------------------------------------------------------systolic Increment in Systolic B.P.

22 c© V. Simonnet et A. Terracol, 2014

Page 23: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

-------------------------------------------------------------------------------------------------------------------------------------

type: numeric (int)

range: [-6,44] units: 1unique values: 32 missing .: 0/58

mean: 18.8793std. dev: 12.8009

percentiles: 10% 25% 50% 75% 90%1 9 21 28 34

On peut également visualiser directement le tableau de données avec la commande browse.La commande edit permet en outre de modifier directement le tableau de données (décon-seillé).

2.3.2 Résultats sauvegardésLa plupart des commandes Stata stockent automatiquement un certain nombre de résultats

dans des macros accessibles par l’utilisateur.La commande return list permet d’afficher la liste de ces macros :summarize price

Variable | Obs Mean Std. Dev. Min Max---------+--------------------------------------------------------

price | 74 6165.257 2949.496 3291 15906

return list

scalars:r(N) = 74

r(sum_w) = 74r(mean) = 6165.256756756757r(Var) = 8699525.974268789r(sd) = 2949.495884768919r(min) = 3291r(max) = 15906r(sum) = 456229

Les résultats stockés dans r() sont utilisables pour effectuer certains calculs 3 ou au seinde conditions logiques. Par exemple, pour obtenir les statistiques descriptives de price pourles observations où price est supérieur à la moyenne, on peut maintenant taper :

3. Il est inutile de faire afficher la liste de ces résultats pour qu’ils soient utilisables ; les macros r() sont créesà chaque exécution de la commande.

c© V. Simonnet et A. Terracol, 2014 23

Page 24: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

summarize price if price>r(mean)

Variable | Obs Mean Std. Dev. Min Max---------+--------------------------------------------------------

price | 22 9814.364 3022.929 6229 15906

Attention, l’exécution d’une nouvelle commande efface et remplace les macros r() sau-vées par les commandes précédentes.

2.4 Création et modification

2.4.1 Création de variableLes deux principales commandes pour créer une variable sont generate et egenLa syntaxe de generate est :generate <nouvelle variable>=expression [if] [in]

où expression définit la formule de calcul de la nouvelle variable, par exemple :generate lnwage=ln(wage)

.Si on veut créer une variable alphanumérique, il faut indiquer sa modalité entre guillements :generate pays="France"

Si l’on souhaite modifier les valeurs d’une variable existante, on utilisera la commandereplace dont la syntaxe est similaire :

replace revenu=0 if revenu<0

recode peut être une alternative à replace où à generate... if.... Par exemple,pour créer une variable de catégorie d’âge, on pourra taper :

recode age (min/15=1) (15/35=2) (35/55=3) (55/max=4),generate(grage)

Un certain nombre de fonctions mathématiques sont disponibles pour la définition des va-riables. Parmi elles, on trouve :

— abs() : valeur absolue— exp() : exponentielle— ln() : logarithme népérien— log10() : logarithme décimal— sqrt() : racine carrée— int() : partie entière— round(x,y) : arrondi de x à y près— sum() somme cumulative de la première observation jusqu’à l’observation courante.La liste des fonctions disponibles est consultable à l’entrée functions de la rubrique

d’aide en ligne.Une série d’extensions aux fonctionnalités de generate ont été regroupées sous la com-

mande egen. On peut trouver la liste de ces extensions sous l’entrée egen de la rubrique

24 c© V. Simonnet et A. Terracol, 2014

Page 25: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

d’aide. Certaines différences plus ou moins subtiles avec generate sont à noter. Par exemple,alors que la commande

generate newvar=sum(var)crée la somme courante de la variable var, la commande

egen newvar=sum(var)crée la somme globale de cette même variable (résultant donc en une constante.) Afin d’éviter laconfusion entre ces deux versions de sum, il est préférable d’utiliser egen ... = total()

2.4.2 Changer de formatIl est possible de passer d’un format alphanumérique à un format numérique, et inversement,

à l’aide des commande encode, decode, destring et tostring.Si on dispose d’une variable caractère contenant une "vraie" chaîne alphanumérique (comme

des prénoms, ou des noms de départements par exemple), on peut créer une variable numériquecatégorielle prenant une valeur différente pour chaque chaîne alphanumérique unique dans lavariable originelle. Les labels de ces valeurs correspondront aux chaînes alphanumériques de lavariable originelle :

/*a est une variable alphanumériquecontenant "A" ou "B"*/

. describe a

storage display valuevariable name type format label variable label-------------------------------------------------------------a str1 %9s

. encode a, g(b)

/*b est maintenant une variable numérique prenantles valeurs 1 ou 2, et les labels de ces valeurs

sont "A" et "B"*/

. describe b

storage display valuevariable name type format label variable label------------------------------------------------------------------b long %8.0g b

. su b

c© V. Simonnet et A. Terracol, 2014 25

Page 26: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

Variable | Obs Mean Std. Dev. Min Max---------+--------------------------------------------------------

b | 744 1.932796 .2505439 1 2

. ta b

b | Freq. Percent Cum.------------+-----------------------------------

A | 50 6.72 6.72B | 694 93.28 100.00

------------+-----------------------------------Total | 744 100.00

decode <numvar>, generate(<stringvar>) effectue l’opération inversedestring <stringvar> , [generate(<numvar>) | replace] s’utilise lorsque

la variable alphanumérique contient en fait des nombres stocké en tant que chaîne de caractère.C’est l’équivalent de generate <numvar>=real(<stringvar>)

tostring effectue l’opération inverse.

2.4.3 Supprimer des donnéesLes commandes keep et drop permettent de conserver et de supprimer des variables ou des

observations. Suivis d’une liste de variables, elles permettent de conserver uniquement les va-riables spécifiées (keep), ou de supprimer ces mêmes variables (drop). Suivis d’une conditionif, elles permettent de conserver ou de supprimer les observations pour la quelle la conditionif est vérifiée.

2.5 Les variables de dateStata permet de travailler avec des dates allant jusqu’à une précision d’une miliseconde.

Pour pouvoir profiter des outils liés aux variables de date, il convient de les déclarer en tant quetel grâce à la commande format. Comme pour la plupart des logiciels, Stata assigne la valeur0 à la date du premier janvier 1960.

Les formats de dates autorisés, et les unités correspondantes sont les suivants :— %tc : milliseconde— %td : jour— %tw : semaine— %tm : mois— %tq : trimestre— %th : semestre— %ty : année

26 c© V. Simonnet et A. Terracol, 2014

Page 27: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

À partir de trois variables numériques donnant le jour, le mois et l’année, on construit unevariable de date de la façon suivante :

generate madate=mdy(mois,jour,année)format madate %td

A partir d’une variable caractère strdate présentant une date comme suit : 17jan2001,17/1/2001, 17.1.2001, 17 01 2001,. . . Stata peut recréer une variable de date :

generate madate=date(strdate, "DMY")format madate2 %td

Le « masque » DMY indique à Stata qu’il faut lire, dans l’ordre, le jour, le mois puis l’année.

Si on ne dispose que d’une date mensuelle (du type 06/2003) dans une variable caractèrestrdatemens, on tapera :

generate madatemens=monthly(strdatemens, "MY")format madatemens %tm

Une fois que l’on dispose de variables de dates, on peut en extraire certains éléments(mois, année, jour de la semaine, semestre etc.) Par exemple, pour savoir à quelle semaine(de 1 à 52) correspond une date stockée dans la variable datevar, on tapera generatesemaine=week(datevar). Les fonctions autorisées sont les suivantes :

— year() donne l’année— halfyear() donne le semestre (1 ou 2)— quarter() donne le trimestre (1 à 4)— month() donne le mois (1 à 12)— week() donne la semaine (1 à 52)— day() donne le jour du mois (de 1 à 31)— dow() donne le jour de la semaine (0=dimanche à 6=samedi)— doy() donne le jour de l’année (1 à 366)

Il est également possible de convertir un format de date en un autre. Pour créer une datemensuelle à partir d’une date journalière, on tapera :

gen date_mens=mofd(date_jour)Les fonctions de conversion prennent la forme xofy() où x est le format d’arrivée (day,month, year, etc.) et y le format de départ. Il faut souvent passer par le format %td pour passerd’un format à un autre (voir le fichier d’aide).

Enfin, on obtient des durées par simple soustraction de variables de dates. Il faut cependantfaire attention à ne soustraire que des variables dans le même format. Si elles ne le sont pas, onpourra utiliser les fonctions de conversion :

gen duree=date_day_fin-date_day_deb

c© V. Simonnet et A. Terracol, 2014 27

Page 28: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

gen duree_mens=mofd(date_day_fin)-date_month_deb

2.6 Fusion de bases de donnéesDeux commandes permettent de fusionner différentes bases de données : merge et append

2.6.1 mergeLa commande merge permet de fusionner des bases de données contenant des variables

différentes, mais correspondant aux mêmes individus. Ces individus doivent être identifiés parune ou plusieurs variables d’indentifiant ayant le même nom dans les deux bases. La base dedonnées ouverte lors de l’appel de la commande merge sera nommée master, et celle avec la-quelle on la fusionne la base using. Les appariements peuvent se faire en one to one si le fichiermaster et le fichier using ne contiennent qu’une seule observation par valeur de l’identifiant,en one to many si le fichier master ne contient qu’une seule observation par valeur de l’iden-tifiant, mais que le fichier using en contient plusieurs ; ou encore en many to one si le fichiermaster contient plusieurs observations par valeur de l’identifiant, et le fichier using une seule.La syntaxe de la commande est la suivante :

merge <type d’appariement> <variables d’identifiants> using <baseavec laquelle on fait l’appariement>où le type d’appariement peut être 1:1 pour un appariement one to one, 1:m pour un apparie-ment one to many ou m:1 pour un appariement many to one.

Par exemple, dans le cas où on dispose d’un fichier contenant des informations sur des mé-nages (avec un identifiant nommé menage), et une autre avec des informations individuellessur les membres de ces ménages, avec pour chaque individu une variable menage contenantl’identifiant de son ménage, l’appariement de ces deux fichiers pourra se faire de la façon sui-vante : Si les bases en questions sont basea.dta et

use base_menage.dta, clearmerge 1:m menage using base_indiv.dta

Il existe une option update qui permet de remplacer les valeurs manquantes d’un fichieravec celles de l’autre, ou de repérer les incohérences entre les deux fichiers

Stata crée une nouvelle variable nommée _merge qui renseigne sur la présence ou non del’observation dans chaque base :

En présence d’information incohérentes entre les deux fichiers (_merge=5), Stata retientpar défaut l’information présente dans le fichier maître, sauf si on précise l’option replace,auquel cas l’information du fichier using sera retenue.

2.6.2 appendS’il s’agit de deux bases contenant les mêmes variables, mais correspondant à des observa-

tions différentes, on utilisera la commande append :use base1.dta, clear

28 c© V. Simonnet et A. Terracol, 2014

Page 29: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

TABLE 2.3 – valeurs de _mergepas d’option

1 observation du fichier maître2 observation du fichier « using »3 observation des deux fichiers

avec option1 observation du fichier maître2 observation du fichier « using »3 observation des deux fichiers4 info manquante en maître, remplacée par info de using5 info incohérente entre maître et using

append using base2.dtasave base12.dta, replace

2.7 Format wide et format longLes formats "wide" et "long" sont des concepts importants dans l’organisation des données.

Un format "wide" (en anglais large) correspond à l’utilisation de différentes variables en lieuet place de différentes observations. Le fichier de données est donc plus large car les variablessont rangées en colonne. A l’inverse, le format "long" correspond à l’utilisation minimale desvariables avec plus d’observations, ce qui allonge la base de donnée, puisque les observationssont rangées en ligne. Un exemple va clarifier le concept :

TABLE 2.4 – Format longpays année popAllemagne 1996 81896Allemagne 1997 82052Allemagne 1998 82029Allemagne 1999 82087Allemagne 2000 82168France 1996 59533France 1997 59735France 1998 59942France 1999 60156France 2000 60431Italie 1996 57397Italie 1997 57512Italie 1998 57588Italie 1999 57646Italie 2000 57728

c© V. Simonnet et A. Terracol, 2014 29

Page 30: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

TABLE 2.5 – Format widepays pop1996 pop1997 pop1998 pop1999 pop2000Allemagne 81896 82052 82029 82087 82168France 59533 59735 59942 60156 60431Italie 57397 57512 57588 57646 57728

La plupart du temps les données seront sous la forme "long", ce qui est plus pratique pourtravailler avec Stata. Mais parfois vous aurez à faire à des données en "wide", et il vous faudrales convertir facilement en "long". La commande reshape sera donc particulièrement utile :

reshape long pop, i(pays) j(année)La commande précédente transforme le tableau 2.5 en tableau 2.4. L’indicatrice i() désigne la

ou les variables que vous souhaitez maintenir dans le format actuel et j() désigne la ou les va-riables que vous souhaitez transformer en "long". Dans l’exemple précédent, pays est inchangépuisqu’il était en "long", mais année va être crée avec pop à partir des variables pop1996,pop1997 etc... Si la variable j() est de format texte (string) alors il faut préciser l’option string.Si vous souhaitez au contraire passer du format "long" à "wide", il suffit de remplacer long parwide. Par exemple :

reshape wide pop, i(pays) j(année)

2.8 collapseLa commande collapse transforme la base de données en statistiques essentielles sur celle-ci,

comme en moyenne, somme, médiane... C’est particulièrement utile si vous souhaitez obtenirune base de données annuelle à partir de données trimestrielles ou mensuelles. Une autre utili-sation possible est d’obtenir facilement des statistiques dans l’éditeur que vous pouvez copierdans un tableur (Excel ou autre). Le danger de cette commande est qu’elle efface les donnéessources. Il faut donc bien vérifier que vous avez sauvegardé le fichier de données sous un autrenom auparavant. Prenons l’exemple d’une transformation d’une variable population mensuelleen population annuelle. La première parenthèse donne le type de transformation (sum=somme ;mean=moyenne ; sd=écart-type ; median=médianne) puis il faut préciser la variable qui subit latransformation. Après une virgule et la commande by, entre parenthèses on inclut les variablesqui servent de référence à la transformation ; ici on fait donc la somme de la variable popmoispar pays et par année. Il faut renommer la variable transformée pour qu’elle désigne ensuite cequ’elle représente vraiment.

collapse (sum) popmois, by(pays année)

rename popmois popannée.

30 c© V. Simonnet et A. Terracol, 2014

Page 31: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

Notes

c© V. Simonnet et A. Terracol, 2014 31

Page 32: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi
Page 33: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

Chapitre 3

Procédures statistiques courantes

3.1 TestsUn grand nombre de procédures de tests sont possibles avec Stata. Nous n’en présenterons

que quelques uns.

3.1.1 Tests sur une seule variableTests de normalité

. Plusieurs procédures permettent de tester la normalité de la distribution d’une variable.Un test sur le skewness et le kurtosis (troisième et quatrième moments de la distribution) estobtenu avec la commande sktest <nom de la variable> (l’hypothèse nulle est cellede normalité). Les tests de Shapiro-Wilk et Shapiro-Francia sont obtenus respectivement avecswilk et sfrancia, suivi du nom de la variable à tester. Le test skewness-kurtosis exigeau minimum 8 observations, tandis que les tests Shapito-Wilk et Shapiro-Francia s’appliquentpour un nombre d’observations entre 4 et 200 ; et entre 5 et 5000, respectivement.

Exemple 3 : Tests de normalité

. use births(Data from 500 births)

. sktest matage

Skewness/Kurtosis tests for Normality------- joint ------

Variable | Pr(Skewness) Pr(Kurtosis) adj chi2(2) Prob>chi2-------------+-------------------------------------------------------

matage | 0.033 0.002 12.85 0.0016

. swilk matage

Shapiro-Wilk W test for normal dataVariable | Obs W V z Prob>z

-------------+-------------------------------------------------matage | 500 0.99087 3.071 2.697 0.00350

. sfrancia matage

c© V. Simonnet et A. Terracol, 2014 33

Page 34: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

Shapiro-Francia W’ test for normal dataVariable | Obs W’ V’ z Prob>z

-------------+-------------------------------------------------matage | 500 0.99138 3.096 2.481 0.00655

Tous les tests concluent au rejet de l’hypothèse de normalité.

En plus des tests formels évoqués ci-dessus, Stata permet également de faire des « testsgraphiques » permettant de juger de la proximité de la distribution d’une variable avec celle de laloi normale. La commande qnorm <nom de variable> trace le graphique des quantilesde la loi normale contre les quantiles de la distribution empirique de la variable testée. Plusles points sont proches de la droite à 45◦, plus proche est sa distribution de la normalité. Lacommande pnorm fait de même pour la distribution centrée-réduite de la variable contre laloi N (0,1). Si on souhaite effectuer une comparaison avec la loi du χ2, on utilisera qchi etpchi

Exemple 4 : Tests graphiques

. use births(Data from 500 births)

. qnorm bweight

1000

2000

3000

4000

5000

birt

h w

eigh

t in

gram

s

1000 2000 3000 4000 5000Inverse Normal

Tests d’égalité de la variance et d’égalité de la moyenne

Sur une population La commande sdtest <nom de la variable> = <valeur>permet de tester que l’écart-type de la variable est égale à une valeur donnée.

34 c© V. Simonnet et A. Terracol, 2014

Page 35: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

Pour tester l’hypothèse que la moyenne d’une variable est égale à une valeur donnée, onutilisera ttest <nom de la variable> = <valeur>

Exemple 5 : Tests sur l’écart-type et sur la moyenne

. use births(Data from 500 births)

. sdtest bweight=600

One-sample test of variance------------------------------------------------------------------------------Variable | Obs Mean Std. Err. Std. Dev. [95% Conf. Interval]---------+--------------------------------------------------------------------bweight | 500 3137.076 28.49556 637.1801 3081.09 3193.062

------------------------------------------------------------------------------sd = sd(bweight) c = chi2 = 562.7590

Ho: sd = 600 degrees of freedom = 499

Ha: sd < 600 Ha: sd != 600 Ha: sd > 600Pr(C < c) = 0.9749 2*Pr(C > c) = 0.0501 Pr(C > c) = 0.0251

. ttest bweight=3000

One-sample t test------------------------------------------------------------------------------Variable | Obs Mean Std. Err. Std. Dev. [95% Conf. Interval]---------+--------------------------------------------------------------------bweight | 500 3137.076 28.49556 637.1801 3081.09 3193.062

------------------------------------------------------------------------------mean = mean(bweight) t = 4.8104

Ho: mean = 3000 degrees of freedom = 499

Ha: mean < 3000 Ha: mean != 3000 Ha: mean > 3000Pr(T < t) = 1.0000 Pr(|T| > |t|) = 0.0000 Pr(T > t) = 0.0000

Sur deux sous-populations On peut également vouloir tester l’égalité de la variance et dela moyenne d’une variable sur deux sous-populations différentes. On utilisera alors les com-mandes sdtest et ttest combinés avec l’option by() qui permet de différencier les deuxsous populations.

Comme le test d’égalité des moyennes dépend du fait que les variances sont ou non égalesdans les deux sous-populations, le mieux est de commencer par tester l’égalité des variances. Sion trouve que ces dernières sont différentes, on ajoutera l’option unequal lors du test sur lesmoyennes.

Une alternative au test de Student est le test « rank-sum » de Wilcoxon (ou Mann-Whitney)(commande ranksum), qui permet de tester l’égalité des distributions sur les deux sous-populations.Un test non paramétrique d’égalité des médianes est effectué avec la commande median

Exemple 6 : Tests sur deux sous-populations

On veut savoir si les moyennes des poids à la naissance diffèrent en fonction de la présenced’hypertension chez la mère

c© V. Simonnet et A. Terracol, 2014 35

Page 36: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

On commence par tester l’égalité des variances

. sdtest bweight, by(hyp)

Variance ratio test------------------------------------------------------------------------------

Group | Obs Mean Std. Err. Std. Dev. [95% Conf. Interval]---------+--------------------------------------------------------------------

0 | 428 3199.016 28.3452 586.4101 3143.303 3254.731 | 72 2768.875 93.14809 790.3877 2583.143 2954.607

---------+--------------------------------------------------------------------combined | 500 3137.076 28.49556 637.1801 3081.09 3193.062------------------------------------------------------------------------------

ratio = sd(0) / sd(1) f = 0.5505Ho: ratio = 1 degrees of freedom = 427, 71

Ha: ratio < 1 Ha: ratio != 1 Ha: ratio > 1Pr(F < f) = 0.0002 2*Pr(F < f) = 0.0004 Pr(F > f) = 0.9998

Comme les variances sont différentes, on utilise la forme appropriée du test sur la moyenne

. ttest bweight, by(hyp) unequal

Two-sample t test with unequal variances------------------------------------------------------------------------------

Group | Obs Mean Std. Err. Std. Dev. [95% Conf. Interval]---------+--------------------------------------------------------------------

0 | 428 3199.016 28.3452 586.4101 3143.303 3254.731 | 72 2768.875 93.14809 790.3877 2583.143 2954.607

---------+--------------------------------------------------------------------combined | 500 3137.076 28.49556 637.1801 3081.09 3193.062---------+--------------------------------------------------------------------

diff | 430.1414 97.36538 236.5409 623.7418------------------------------------------------------------------------------

diff = mean(0) - mean(1) t = 4.4178Ho: diff = 0 Satterthwaite’s degrees of freedom = 84.6373

Ha: diff < 0 Ha: diff != 0 Ha: diff > 0Pr(T < t) = 1.0000 Pr(|T| > |t|) = 0.0000 Pr(T > t) = 0.0000

On utilise maintenant le test de Wilcoxon, puis celui sur la médiane

. ranksum bweight, by(hyp)

Two-sample Wilcoxon rank-sum (Mann-Whitney) test

hyp | obs rank sum expected-------------+---------------------------------

0 | 428 112389.5 1072141 | 72 12860.5 18036

-------------+---------------------------------combined | 500 125250 125250

unadjusted variance 1286568.00adjustment for ties -4.38

----------adjusted variance 1286563.62

Ho: bweight(hyp==0) = bweight(hyp==1)z = 4.563

Prob > |z| = 0.0000

36 c© V. Simonnet et A. Terracol, 2014

Page 37: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

. median bweight, by(hyp)

Median test

Greater |than the | hypertens

median | 0 1 | Total-----------+----------------------+----------

no | 198 52 | 250yes | 230 20 | 250

-----------+----------------------+----------Total | 428 72 | 500

Pearson chi2(1) = 16.6147 Pr = 0.000

Continuity corrected:Pearson chi2(1) = 15.5925 Pr = 0.000

3.1.2 Tests sur plusieurs variablesTests sur données appariées

Si on souhaite tester l’égalité des variances ou des moyennes de deux variables, on utilise en-core une fois les commandes sdtest et ttest suivis de variable1 = variable2. Laversion non-paramétrique du test fait appel à la commande signrank. Ces tests sont souventutiles lorsque l’on dispose de données où chaque individu a été observé dans deux circonstancesdifférentes, et que l’on souhaite savoir si cette circonstance a une influence sur la moyenne (oula variance) du résultat d’une mesure.

Exemple 7 : Tests sur données appariées

La consommation de carburant de véhicules a été mesurée avec deux types de carburants. Pourchaque véhicule, on observe la distance parcourue avec une unité de volume de carburant (mpg1et mpg2) ; et on cherche à savoir si un des deux carburants est plus efficace que l’autre.

. use fuel

. ttest mpg1= mpg2

Paired t test------------------------------------------------------------------------------Variable | Obs Mean Std. Err. Std. Dev. [95% Conf. Interval]---------+--------------------------------------------------------------------

mpg1 | 12 21 .7881701 2.730301 19.26525 22.73475mpg2 | 12 22.75 .9384465 3.250874 20.68449 24.81551

---------+--------------------------------------------------------------------diff | 12 -1.75 .7797144 2.70101 -3.46614 -.0338602

------------------------------------------------------------------------------mean(diff) = mean(mpg1 - mpg2) t = -2.2444

Ho: mean(diff) = 0 degrees of freedom = 11

Ha: mean(diff) < 0 Ha: mean(diff) != 0 Ha: mean(diff) > 0Pr(T < t) = 0.0232 Pr(|T| > |t|) = 0.0463 Pr(T > t) = 0.9768

c© V. Simonnet et A. Terracol, 2014 37

Page 38: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

. signrank mpg1=mpg2

Wilcoxon signed-rank test

sign | obs sum ranks expected-------------+---------------------------------

positive | 3 13.5 38.5negative | 8 63.5 38.5

zero | 1 1 1-------------+---------------------------------

all | 12 78 78

unadjusted variance 162.50adjustment for ties -1.63adjustment for zeros -0.25

----------adjusted variance 160.63

Ho: mpg1 = mpg2z = -1.973

Prob > |z| = 0.0485

Test du χ2

Le test d’indépendance du χ2 entre variables catégorielles est obtenu grâce à l’option chi2de la commande tabulate. L’ajout de l’option exact permet d’obtenir la statistique exacte(et non asymptotique).

Exemple 8 : Test du χ2

Le sexe de l’enfant est-il indépendant de la présence d’hypertension chez la mère ?. use births(Data from 500 births)

. tabulate sex hyp, chi2 exact

sex of | hypertensbaby | 0 1 | Total

-----------+----------------------+----------1 | 221 43 | 2642 | 207 29 | 236

-----------+----------------------+----------Total | 428 72 | 500

Pearson chi2(1) = 1.6172 Pr = 0.203Fisher’s exact = 0.251

1-sided Fisher’s exact = 0.126

On conclue à l’indépendance des deux variables.

3.2 Analyse de la variancePréalablement à toute estimation, on peut mesurer l’effet d’une ou d’un ensemble de va-

riables sur la variable à étudier. Pour cela, on opère une analyse de variance-covariance entre les

38 c© V. Simonnet et A. Terracol, 2014

Page 39: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

différentes variables spécifiées. Cette analyse nous indique le pourcentage de la variance totale(de la variable expliquée) expliqué par le modèle (à savoir, l’ensemble des variables explicativesmentionnées) et ce pourcentage est décomposé selon l’apport de chaque variable. Cette analysepermet d’évaluer le rôle global d’une variable catégorielle sur la variable considérée. On utilisealors la commande

anova <variable expliquée> <variables explicatives>Par défaut, les variables explicatives sont supposées catégorielles ou qualitatives. Pour intro-

duire une variable continue dans l’analyse, il faut faire précéder son nom par c..

Exemple 9 : ANOVA

. use sysage(Systolic Blood Pressure Data)

. anova systolic drug

Number of obs = 58 R-squared = 0.3355Root MSE = 10.7211 Adj R-squared = 0.2985

Source | Partial SS df MS F Prob > F-----------+----------------------------------------------------

Model | 3133.23851 3 1044.41284 9.09 0.0001|

drug | 3133.23851 3 1044.41284 9.09 0.0001|

Residual | 6206.91667 54 114.942901-----------+----------------------------------------------------

Total | 9340.15517 57 163.862371

. anova systolic drug disease

Number of obs = 58 R-squared = 0.3803Root MSE = 10.5503 Adj R-squared = 0.3207

Source | Partial SS df MS F Prob > F-----------+----------------------------------------------------

Model | 3552.07225 5 710.414449 6.38 0.0001|

drug | 3063.43286 3 1021.14429 9.17 0.0001disease | 418.833741 2 209.41687 1.88 0.1626

|Residual | 5788.08293 52 111.309287

-----------+----------------------------------------------------Total | 9340.15517 57 163.862371

. anova systolic drug disease drug#disease

Number of obs = 58 R-squared = 0.4560Root MSE = 10.5096 Adj R-squared = 0.3259

Source | Partial SS df MS F Prob > F-------------+----------------------------------------------------

Model | 4259.33851 11 387.212591 3.51 0.0013|

drug | 2997.47186 3 999.157287 9.05 0.0001disease | 415.873046 2 207.936523 1.88 0.1637

drug#disease | 707.266259 6 117.87771 1.07 0.3958|

Residual | 5080.81667 46 110.452536

c© V. Simonnet et A. Terracol, 2014 39

Page 40: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

-------------+----------------------------------------------------Total | 9340.15517 57 163.862371

. anova systolic drug##disease

Number of obs = 58 R-squared = 0.4560Root MSE = 10.5096 Adj R-squared = 0.3259

Source | Partial SS df MS F Prob > F-------------+----------------------------------------------------

Model | 4259.33851 11 387.212591 3.51 0.0013|

drug | 2997.47186 3 999.157287 9.05 0.0001disease | 415.873046 2 207.936523 1.88 0.1637

drug#disease | 707.266259 6 117.87771 1.07 0.3958|

Residual | 5080.81667 46 110.452536-------------+----------------------------------------------------

Total | 9340.15517 57 163.862371

. anova systolic drug##disease c.age

Number of obs = 58 R-squared = 0.6826Root MSE = 8.1164 Adj R-squared = 0.5980

Source | Partial SS df MS F Prob > F-------------+----------------------------------------------------

Model | 6375.73983 12 531.311652 8.07 0.0000|

drug | 2762.01519 3 920.671731 13.98 0.0000disease | 605.323109 2 302.661555 4.59 0.0153

drug#disease | 608.728232 6 101.454705 1.54 0.1871age | 2116.40132 1 2116.40132 32.13 0.0000

|Residual | 2964.41534 45 65.8758965

-------------+----------------------------------------------------Total | 9340.15517 57 163.862371

Le premier modèle indique que le médicament utilisé a une influence sur le niveau de pres-sion sanguine. On introduit ensuite la maladie afin de voir si l’effet du médicament reste si oncontrôle pour la maladie. On trouve que cet effet est toujours significatif. On introduit ensuitel’interaction du médicament et de la maladie pour tenir compte de l’interaction possible entreces deux variables. En contrôlant pour l’âge dans le dernier modèle, on constate que l’effet dela maladie redevient significatif.

3.3 Tables d’épidémiologieStata propose une série de commandes pour l’analyse épidémiologique. Elles sont regrou-

pées sous le nom générique epitab (voir help epitab).

3.3.1 Quelques définitionsConsidérons une variable dichotomique 0/1 indiquant l’exposition à un risque, et une autre

indiquant la survenue d’un événement (par exemple une maladie). On peut également avoir unevariable indiquant la durée au bout de laquelle l’événement est survenu. On note p0 ∈ [0,1] la

40 c© V. Simonnet et A. Terracol, 2014

Page 41: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

probabilité (ou risque) de survenue de l’événement dans le groupe non exposé au risque, et p1cette probabilité dans le groupe exposé au risque. Les commandes regroupées dans epitabpermettent de travailler sur les statistiques suivantes :

— Risk difference : p1− p0— Risk ratio : p1

p0

— Odds difference : p11−p1− p0

1−p0

— Odds ratio :p1

1−p1p0

1−p0Si on dispose d’une variable de temps, on pourra également calculer des taux d’incidence.

Ces derniers correspondent au nombre d’événement par unité de temps dans les groupes expo-sés et non exposés. Si C1 est le nombre de cas d’exposés, et C0 le nombre de cas non exposés,le taux d’incidence chez les exposés, Ir1 est donné par C1

∑exposés tioù ti est le temps chez l’individu

i. Chez les non exposés, Ir0 = C1∑non exposés ti

. On définit alors la différence des taux d’incidence

Ir1− Ir0, et le ratio des taux d’incidences Ir1Ir0

3.3.2 Commandes Stata— ir <var. de cas> <var. d’exposition> <var. de temps> pour cal-

culer un taux d’incidence— cs <var. de cas> <var. d’exposition> Pour obtenir des taux de risques— cc <var. de cas> <var. d’exposition> Pour les odds-ratios. Avec l’op-

tion by(), permet de donner le ratio pour chaque strate, et de tester l’homogénéité duratio entre les strates

— mcc <var. de cas> <var. d’exposition> pour des données appariées— tabodds <var. de cas> <var. d’exposition> permet de traiter plusieurs

niveaux d’exposition. Un test de tendance linéaire du log des risques en fonction du de-gré d’exposition est alors réalisé.

— mhodds <var. de cas> <var. d’exposition> [var. d’ajustement]permet de contrôler pour une ou plusieurs variables d’ajustement.

Exemple 10 : Tables d’épidémiologie

. use births, clear(Data from 500 births)

. cc lowbw hypProportion

| Exposed Unexposed | Total Exposed-----------------+------------------------+------------------------

Cases | 20 40 | 60 0.3333Controls | 52 388 | 440 0.1182

-----------------+------------------------+------------------------Total | 72 428 | 500 0.1440

| || Point estimate | [95% Conf. Interval]|------------------------+------------------------

Odds ratio | 3.730769 | 1.907649 7.100405 (exact)

c© V. Simonnet et A. Terracol, 2014 41

Page 42: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

Attr. frac. ex. | .7319588 | .4757944 .859163 (exact)Attr. frac. pop | .2439863 |

+-------------------------------------------------chi2(1) = 19.83 Pr>chi2 = 0.0000

.

. tabodds lowbw hyp

--------------------------------------------------------------------------hyp | cases controls odds [95% Conf. Interval]

------------+-------------------------------------------------------------0 | 40 388 0.10309 0.07445 0.142751 | 20 52 0.38462 0.22965 0.64416

--------------------------------------------------------------------------Test of homogeneity (equal odds): chi2(1) = 19.79

Pr>chi2 = 0.0000

Score test for trend of odds: chi2(1) = 19.79Pr>chi2 = 0.0000

. cc lowbw hyp, by(sex)

sex of baby | OR [95% Conf. Interval] M-H Weight-----------------+-------------------------------------------------

1 | 5.316129 2.047939 13.39574 1.761364 (exact)2 | 2.773333 .9524546 7.381347 2.224576 (exact)

-----------------+-------------------------------------------------Crude | 3.730769 1.907649 7.100405 (exact)

M-H combined | 3.89698 2.105169 7.213886-------------------------------------------------------------------Test of homogeneity (M-H) chi2(1) = 1.05 Pr>chi2 = 0.3065

Test that combined OR = 1:Mantel-Haenszel chi2(1) = 20.87

Pr>chi2 = 0.0000

. mhodds lowbw hyp, by(sex)

Maximum likelihood estimate of the odds ratioComparing hyp==1 vs. hyp==0by sex

-------------------------------------------------------------------------------sex | Odds Ratio chi2(1) P>chi2 [95% Conf. Interval]

----------+--------------------------------------------------------------------1 | 5.316129 17.42 0.0000 2.20717 12.804292 | 2.773333 5.07 0.0244 1.09713 7.01043

-------------------------------------------------------------------------------

Mantel-Haenszel estimate controlling for sex----------------------------------------------------------------Odds Ratio chi2(1) P>chi2 [95% Conf. Interval]----------------------------------------------------------------

3.896980 20.87 0.0000 2.076218 7.314479----------------------------------------------------------------

Test of homogeneity of ORs (approx): chi2(1) = 1.01Pr>chi2 = 0.3161

. egen agegrp=cut(matage), group(4)

. tabodds lowbw agegr

42 c© V. Simonnet et A. Terracol, 2014

Page 43: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

--------------------------------------------------------------------------agegrp | cases controls odds [95% Conf. Interval]

------------+-------------------------------------------------------------0 | 13 86 0.15116 0.08436 0.270861 | 13 104 0.12500 0.07023 0.222492 | 17 113 0.15044 0.09035 0.250503 | 17 137 0.12409 0.07496 0.20540

--------------------------------------------------------------------------Test of homogeneity (equal odds): chi2(3) = 0.48

Pr>chi2 = 0.9224

Score test for trend of odds: chi2(1) = 0.11Pr>chi2 = 0.7398

. cc lowbw agegrProportion

| Exposed Unexposed | Total Exposed-----------------+------------------------+------------------------

Cases | 47 13 | 60 0.7833Controls | 354 86 | 440 0.8045

-----------------+------------------------+------------------------Total | 401 99 | 500 0.8020

| || Point estimate | [95% Conf. Interval]|------------------------+------------------------

Odds ratio | .8783138 | .4431392 1.851345 (exact)Prev. frac. ex. | .1216862 | -.8513449 .5568608 (exact)Prev. frac. pop | .0979021 |

+-------------------------------------------------chi2(1) = 0.15 Pr>chi2 = 0.6989

. mhodds lowbw agegr

Score test for trend of odds with agegrp

(The Odds Ratio estimate is an approximation to the odds ratiofor a one unit increase in agegrp)

----------------------------------------------------------------Odds Ratio chi2(1) P>chi2 [95% Conf. Interval]----------------------------------------------------------------

0.959663 0.11 0.7398 0.752686 1.223555----------------------------------------------------------------

. cs lowbw hyp

| hypertens || Exposed Unexposed | Total

-----------------+------------------------+------------Cases | 20 40 | 60

Noncases | 52 388 | 440-----------------+------------------------+------------

Total | 72 428 | 500| |

Risk | .2777778 .0934579 | .12| || Point estimate | [95% Conf. Interval]|------------------------+------------------------

Risk difference | .1843198 | .0772494 .2913903Risk ratio | 2.972222 | 1.848078 4.780157

Attr. frac. ex. | .6635514 | .4588974 .7908019Attr. frac. pop | .2211838 |

+-------------------------------------------------chi2(1) = 19.83 Pr>chi2 = 0.0000

c© V. Simonnet et A. Terracol, 2014 43

Page 44: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

. cs lowbw hyp, by( agegrp)

agegrp | RR [95% Conf. Interval] M-H Weight-----------------+-------------------------------------------------

0 | 3.242188 1.215774 8.646161 1.2929291 | 5.037879 1.877767 13.51617 1.1282052 | 1.104762 .2815061 4.335604 1.6153853 | 3.654545 1.520747 8.782332 1.428571

-----------------+-------------------------------------------------Crude | 2.972222 1.848078 4.780157

M-H combined | 3.088892 1.88337 5.066054-------------------------------------------------------------------Test of homogeneity (M-H) chi2(3) = 3.267 Pr>chi2 = 0.3523

. ir lowbw hyp gestw

| hypertens || Exposed Unexposed | Total

-----------------+------------------------+------------low birth weight | 19 40 | 59gestation period | 2662.969 16314.54 | 18977.51-----------------+------------------------+------------

| |Incidence Rate | .0071349 .0024518 | .0031089

| || Point estimate | [95% Conf. Interval]|------------------------+------------------------

Inc. rate diff. | .0046831 | .0013862 .00798Inc. rate ratio | 2.910064 | 1.591878 5.143278 (exact)Attr. frac. ex. | .6563649 | .3718112 .8055715 (exact)Attr. frac. pop | .2113717 |

+-------------------------------------------------(midp) Pr(k>=19) = 0.0002 (exact)(midp) 2*Pr(k>=19) = 0.0004 (exact)

. ir lowbw hyp gestwks

| hypertens || Exposed Unexposed | Total

-----------------+------------------------+------------low birth weight | 19 40 | 59gestation period | 2662.969 16314.54 | 18977.51-----------------+------------------------+------------

| |Incidence Rate | .0071349 .0024518 | .0031089

| || Point estimate | [95% Conf. Interval]|------------------------+------------------------

Inc. rate diff. | .0046831 | .0013862 .00798Inc. rate ratio | 2.910064 | 1.591878 5.143278 (exact)Attr. frac. ex. | .6563649 | .3718112 .8055715 (exact)Attr. frac. pop | .2113717 |

+-------------------------------------------------(midp) Pr(k>=19) = 0.0002 (exact)(midp) 2*Pr(k>=19) = 0.0004 (exact)

. ir lowbw hyp gestwks, by(agegrp)

agegrp | IRR [95% Conf. Interval] M-H Weight-----------------+-------------------------------------------------

0 | 3.358837 .8645539 11.64461 1.255072 (exact)1 | 4.533259 1.211913 16.95702 1.084352 (exact)2 | 1.122428 .1245475 4.826488 1.59266 (exact)

44 c© V. Simonnet et A. Terracol, 2014

Page 45: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

3 | 3.672211 1.115109 10.83264 1.422588 (exact)-----------------+-------------------------------------------------

Crude | 2.910064 1.591878 5.143278 (exact)M-H combined | 3.014735 1.724284 5.270959

-------------------------------------------------------------------Test of homogeneity (M-H) chi2(3) = 2.41 Pr>chi2 = 0.4920

3.4 Analyse de facteurs et analyse en composantes princi-pales

3.4.1 Analyse de facteursL’analyse de facteurs se propose de résumer la structure de corrélation entre variables ob-

servées par un petit nombre de « facteurs » sous-jacents inobservés. Plus précisément, pour Kvariables observées, et M facteurs, on a :

X1 = λ11F1 +λ21F2 + · · ·+λM1FM + ε1

X2 = λ12F1 +λ22F2 + · · ·+λM2FM + ε2

...Xk = λ1kF1 +λ2kF2 + · · ·+λMkFM + εk

...XK = λ1KF1 +λ2KF2 + · · ·+λMKFM + εK

où les Fm sont les facteurs inobservés, les λmk les « charges de facteurs » qui permettent derecomposer la variables observée Xk ; et où εk est un terme d’erreur inobservé. La commandefactor <liste de variables> permet de procéder à l’analyse des facteurs. Plusieursméthodes méthodes sont utilisables via les options

— factor(#) permet de choisir le nombre de facteurs à retenir— ipf pour une estimation itérée— ml pour une estimation par maximum de vraisemblance— pcf pour la méthode par composante principale— pf (le défaut) pour la méthode des facteurs principaux

Après l’estimation, la commande rotate permet d’effectuer une rotation des facteurs. Ànouveau, plusieurs méthodes sont disponibles :

— varimax (le défaut) pour des facteurs orthogonaux— promax pour des facteurs obliques

Finalement, predict <liste de nouvelles variables> permet de créer desnouvelles variables contenant les facteurs estimés.

Exemple 11 : Analyse de facteurs

c© V. Simonnet et A. Terracol, 2014 45

Page 46: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

. use autofull, clear(Automobile Models)

. factor price mpg headroom rear_seat trunk weight length ///turn displacement gear_ratio

(obs=74)

Factor analysis/correlation Number of obs = 74Method: principal factors Retained factors = 6Rotation: (unrotated) Number of params = 45

--------------------------------------------------------------------------Factor | Eigenvalue Difference Proportion Cumulative

-------------+------------------------------------------------------------Factor1 | 6.22509 5.59928 0.8665 0.8665Factor2 | 0.62581 0.18554 0.0871 0.9536Factor3 | 0.44027 0.24295 0.0613 1.0149Factor4 | 0.19731 0.18004 0.0275 1.0424Factor5 | 0.01727 0.01599 0.0024 1.0448Factor6 | 0.00128 0.02360 0.0002 1.0450Factor7 | -0.02232 0.03640 -0.0031 1.0418Factor8 | -0.05872 0.03083 -0.0082 1.0337Factor9 | -0.08955 0.06281 -0.0125 1.0212Factor10 | -0.15236 . -0.0212 1.0000

--------------------------------------------------------------------------LR test: independent vs. saturated: chi2(45) = 721.42 Prob>chi2 = 0.0000

Factor loadings (pattern matrix) and unique variances

--------------------------------------------------------------------------------------Variable | Factor1 Factor2 Factor3 Factor4 Factor5 Factor6 |Uniqueness

-------------+------------------------------------------------------------+-----------price | 0.5001 -0.2485 0.5174 -0.0624 0.0024 0.0000 | 0.4165

mpg | -0.7897 0.0662 -0.0713 -0.1096 0.0511 0.0272 | 0.3516headroom | 0.5756 0.4650 -0.0658 -0.1067 0.0215 -0.0082 | 0.4362

rear_seat | 0.6789 0.2855 0.2382 -0.0121 -0.0476 0.0154 | 0.3982trunk | 0.7600 0.3814 0.0397 -0.0381 0.0181 -0.0024 | 0.2736weight | 0.9636 -0.1731 -0.0034 0.0562 0.0937 -0.0018 | 0.0295length | 0.9561 -0.0044 -0.0481 0.1946 0.0161 0.0056 | 0.0454

turn | 0.8546 -0.0836 -0.1996 0.1874 -0.0407 0.0110 | 0.1859displacement | 0.9050 -0.1924 -0.0720 -0.2029 -0.0029 0.0080 | 0.0975

gear_ratio | -0.7678 0.2060 0.2397 0.2260 0.0300 0.0035 | 0.2586--------------------------------------------------------------------------------------

. factor price mpg headroom rear_seat trunk weight length ///turn displacement gear_ratio, factor(2)

(obs=74)

Factor analysis/correlation Number of obs = 74Method: principal factors Retained factors = 2Rotation: (unrotated) Number of params = 19

--------------------------------------------------------------------------Factor | Eigenvalue Difference Proportion Cumulative

-------------+------------------------------------------------------------Factor1 | 6.22509 5.59928 0.8665 0.8665Factor2 | 0.62581 0.18554 0.0871 0.9536Factor3 | 0.44027 0.24295 0.0613 1.0149Factor4 | 0.19731 0.18004 0.0275 1.0424Factor5 | 0.01727 0.01599 0.0024 1.0448Factor6 | 0.00128 0.02360 0.0002 1.0450Factor7 | -0.02232 0.03640 -0.0031 1.0418Factor8 | -0.05872 0.03083 -0.0082 1.0337Factor9 | -0.08955 0.06281 -0.0125 1.0212Factor10 | -0.15236 . -0.0212 1.0000

46 c© V. Simonnet et A. Terracol, 2014

Page 47: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

--------------------------------------------------------------------------LR test: independent vs. saturated: chi2(45) = 721.42 Prob>chi2 = 0.0000

Factor loadings (pattern matrix) and unique variances

-------------------------------------------------Variable | Factor1 Factor2 | Uniqueness

-------------+--------------------+--------------price | 0.5001 -0.2485 | 0.6881

mpg | -0.7897 0.0662 | 0.3720headroom | 0.5756 0.4650 | 0.4524rear_seat | 0.6789 0.2855 | 0.4576

trunk | 0.7600 0.3814 | 0.2769weight | 0.9636 -0.1731 | 0.0415length | 0.9561 -0.0044 | 0.0859

turn | 0.8546 -0.0836 | 0.2626displacement | 0.9050 -0.1924 | 0.1440

gear_ratio | -0.7678 0.2060 | 0.3680-------------------------------------------------

. rotate

Factor analysis/correlation Number of obs = 74Method: principal factors Retained factors = 2Rotation: orthogonal varimax (Kaiser off) Number of params = 19

--------------------------------------------------------------------------Factor | Variance Difference Proportion Cumulative

-------------+------------------------------------------------------------Factor1 | 4.91107 2.97125 0.6836 0.6836Factor2 | 1.93983 . 0.2700 0.9536

--------------------------------------------------------------------------LR test: independent vs. saturated: chi2(45) = 721.42 Prob>chi2 = 0.0000

Rotated factor loadings (pattern matrix) and unique variances

-------------------------------------------------Variable | Factor1 Factor2 | Uniqueness

-------------+--------------------+--------------price | 0.5579 0.0249 | 0.6881

mpg | -0.7229 -0.3246 | 0.3720headroom | 0.2783 0.6857 | 0.4524rear_seat | 0.4556 0.5786 | 0.4576

trunk | 0.4801 0.7018 | 0.2769weight | 0.9269 0.3154 | 0.0415length | 0.8385 0.4593 | 0.0859

turn | 0.7882 0.3408 | 0.2626displacement | 0.8849 0.2701 | 0.1440

gear_ratio | -0.7715 -0.1918 | 0.3680-------------------------------------------------

Factor rotation matrix

--------------------------------| Factor1 Factor2

-------------+------------------Factor1 | 0.8748 0.4844Factor2 | -0.4844 0.8748

--------------------------------

. rotate, promax

Factor analysis/correlation Number of obs = 74Method: principal factors Retained factors = 2Rotation: oblique promax (Kaiser off) Number of params = 19

c© V. Simonnet et A. Terracol, 2014 47

Page 48: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

--------------------------------------------------------------------------Factor | Variance Proportion Rotated factors are correlated

-------------+------------------------------------------------------------Factor1 | 5.90347 0.8217Factor2 | 3.95191 0.5501

--------------------------------------------------------------------------LR test: independent vs. saturated: chi2(45) = 721.42 Prob>chi2 = 0.0000

Rotated factor loadings (pattern matrix) and unique variances

-------------------------------------------------Variable | Factor1 Factor2 | Uniqueness

-------------+--------------------+--------------price | 0.6351 -0.1511 | 0.6881

mpg | -0.6899 -0.1555 | 0.3720headroom | 0.0104 0.7338 | 0.4524rear_seat | 0.2646 0.5476 | 0.4576

trunk | 0.2368 0.6877 | 0.2769weight | 0.9304 0.0783 | 0.0415length | 0.7626 0.2799 | 0.0859

turn | 0.7581 0.1539 | 0.2626displacement | 0.9024 0.0374 | 0.1440

gear_ratio | -0.8066 0.0198 | 0.3680-------------------------------------------------

Factor rotation matrix

--------------------------------| Factor1 Factor2

-------------+------------------Factor1 | 0.9709 0.7707Factor2 | -0.2397 0.6372

--------------------------------

. predict fact1 fact2(regression scoring assumed)

Scoring coefficients (method = regression; based on promax(3) rotated factors)

----------------------------------Variable | Factor1 Factor2

-------------+--------------------price | 0.01361 -0.02811

mpg | -0.07526 0.00294headroom | -0.05605 0.29874

rear_seat | 0.04690 0.17082trunk | -0.02598 0.36684

weight | 0.62689 -0.42378length | 0.05641 0.60937

turn | 0.01359 0.03239displacement | 0.21845 -0.01009

gear_ratio | -0.05583 0.01421----------------------------------

3.4.2 Analyse en composantes principalesL’analyse en composantes principales permet également de « résumer » un ensemble de va-

riables observées en un certain nombre de « composantes » qui sont des combinaisons linéaires

48 c© V. Simonnet et A. Terracol, 2014

Page 49: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

de ces variables :

Fm = α1mX1 +α2mX2 . . .

La commande correspondante est pca <liste de variables>

Après l’estimation, on peut générer les composantes prédites par l’estimation avec predict<liste de nouvelles variables>

On obtient le graphique des scores et des facteurs de charge avec scoreplot et loadingplot

Exemple 12 : Analyse en composantes principales

. pca price mpg headroom trunk weight length turn ///displacement gear_ratio, factor(2)

Principal components/correlation Number of obs = 74Number of comp. = 2Trace = 9

Rotation: (unrotated = principal) Rho = 0.7801

--------------------------------------------------------------------------Component | Eigenvalue Difference Proportion Cumulative

-------------+------------------------------------------------------------Comp1 | 6.02281 5.02471 0.6692 0.6692Comp2 | .998097 .288666 0.1109 0.7801Comp3 | .709432 .269418 0.0788 0.8589Comp4 | .440014 .138721 0.0489 0.9078Comp5 | .301293 .0375348 0.0335 0.9413Comp6 | .263758 .13191 0.0293 0.9706Comp7 | .131849 .0345361 0.0146 0.9852Comp8 | .0973127 .061874 0.0108 0.9961Comp9 | .0354388 . 0.0039 1.0000

--------------------------------------------------------------------------

Principal components (eigenvectors)

------------------------------------------------Variable | Comp1 Comp2 | Unexplained

-------------+--------------------+-------------price | 0.2121 -0.6150 | .3516

mpg | -0.3444 0.1261 | .2696headroom | 0.2424 0.6585 | .2133

trunk | 0.3148 0.3757 | .2622weight | 0.3934 -0.1160 | .05454length | 0.3863 0.0114 | .1009

turn | 0.3562 0.0061 | .2357displacement | 0.3739 -0.1124 | .1453

gear_ratio | -0.3283 0.0699 | .3459------------------------------------------------

. loadingplot

c© V. Simonnet et A. Terracol, 2014 49

Page 50: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

price

mpg

headroom

trunk

weight

lengthturn

displacement

gear_ratio

−.5

0.5

1C

ompo

nent

2

−.4 −.2 0 .2 .4Component 1

Component loadings

50 c© V. Simonnet et A. Terracol, 2014

Page 51: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

Notes

c© V. Simonnet et A. Terracol, 2014 51

Page 52: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi
Page 53: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

Chapitre 4

Graphiques

Un grand nombre de graphiques peuvent être tracés par Stata. Nous n’en aborderons quequelques uns.

On peut classer les graphiques en trois grandes catégories :— Les graphiques permettant une représentation visuelle de statistiques descriptives (moyenne,

médiane, percentile, etc.)— Les graphiques univariés (portant sur une seule variable)— Les graphiques multivariés (une variable reliée à une ou plusieurs autres)Ces types de graphiques ont en commun un certain nombre d’options concernant les titres,

sous-titres, légendes etc.

4.1 Graphiques de statistiques descriptives

Les commandes graph bar (barres verticales), graph hbar (barres horizontales) etgraph dot (points sur une ligne) permettent de représenter des statistiques particulièresd’une variable donnée. L’option over(<nom de variable>) permet de distinguer plu-sieurs sous-échantillons. On peut indiquer jusqu’à trois variables pour distinguer ces sous caté-gories.

La syntaxe générale est :graph [bar|hbar|dot] (statistique) varname [, over(varname)...]

où statistique est la statistique (mean, median, p1...p99 etc.) que l’on souhaite représenter

Exemple 13 : Graphique de statistiques descriptives

On cherche à représenter la médiane du poids de naissance en fonction du sexe du terme de lagrossesse et de la présence d’hypertension chez la mère (version avec barres verticales)

graph bar (median) bweight , over(preterm) over(hyp) ///ytitle(Médiane du poids de naissance)

c© V. Simonnet et A. Terracol, 2014 53

Page 54: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

Exemple 14 : Graphique de statistiques descriptives (2)

Si on souhaite représenter les mêmes informations que dans l’exemple 13, mais sous forme de"points sur une ligne", on tapera :

graph dot (median) bweight , over(preterm) over(hyp) ///ytitle(Médiane du poids de naissance)

54 c© V. Simonnet et A. Terracol, 2014

Page 55: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

4.2 Graphiques univariésLes principaux graphiques univariés sont les suivants :— histogram pour un histogramme— kdensity pour une estimation par noyau de la densité— graph pie pour un graphique "en camembert"— graph box et graph hbox pour les "boîtes à moustache"

Un histogramme de la variable sera obtenu avec la commandehistogram <nom de la variable>

Le nombre de barres peut être contrôlé avec l’option bin(#) où # est le nombre de barres.On peut indiquer à Stata de placer la fréquence, le pourcentage à la place de la densité sur l’axevertical en indiquant l’option freq ou percent.

Exemple 15 : Un histogramme

Un histogramme du poids de naissance, en utilisant les pourcentages, avec 30 barres

histogram bweight, percent bin(30)

On peut tracer une estimation non-paramétrique de la densité d’une variable avec la com-mande kdensity <varname>. Le type de noyau utilisé se contrôle avec l’option kern()et la largeur de la fenêtre avec l’option bwidth

Exemple 16 : Estimation de densité

Densité de la durée de la grossesse, noyau gaussien, largeur de fenêtre=1.1

kdensity gestwks, kern(gauss) bwidth(1.1)

c© V. Simonnet et A. Terracol, 2014 55

Page 56: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

Les graphiques en « camembert » sont obtenus avec la commande graph pie. Si lescatégories que l’on veut représenter sont représentées par une série de variables indicatrices, onfait suivre la commande de la liste de ces variables :

graph pie cat1 cat2 cat 3

Si une seule variable catégorielle est présente, on utilise l’option over() :

graph pie , over(categ)

Enfin, si on veut savoir comment se répartit une variable (par exemple une dépense) entredifférentes valeurs d’une variable catégorielle (par exemple des postes de dépenses), on tapera

graph pie cout, over(poste)

Il est possible de faire ressortir une des tranches du camembert grâce à l’option pie(<n◦ dela tranche> explode) ; et d’indiquer le pourcentage (ou la somme, ou une phrase quel-conque) correspondant à une tranche particulière avec l’option plabel(<n◦ de la tranche><type de label>)

Exemple 17 : Un graphique en camembert

On dispose d’une variable catégorielle trage indiquant l’appartenance à des quartile d’âge.On peut produire le camembert suivant :

graph pie, over(trage) pie(2, explode) plabel(2 percent) ///plabel(1 "1er quartile")

56 c© V. Simonnet et A. Terracol, 2014

Page 57: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

Enfin, les graphiques en « boîte à moustache » (box and whiskers plot) sont produits parla command box <varname>. On peut distinguer divers sous-échantillons selon la valeurde variables catégorielles avec l’option over(varname) (jusqu’à trois variables, dans desover() différents)

Exemple 18 : Boîte à moustache

Graphique du poids de naissance, en fonction de la présence d’hypertension chez la mère

graph box bweight, over(hyp)

c© V. Simonnet et A. Terracol, 2014 57

Page 58: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

4.3 Graphiques multivariésPour représenter l’évolution d’une (ou de plusieurs) variables en fonction d’une autre, on

utilisera la commande graph twoway (ou tout simplement twoway). Cette commande au-torise plusieurs types de graphiques, par exemple :

— scatter pour un nuage de points— line pour obtenir des points reliés entre eux (nécessite de faire un sort sur la variable

en abscisse au préalable)— lfit pour la prédiction linéaire— qfit pour la prédiction quadratique— graph matrix permet de présenter sous forme matricielle une série de nuages de

points de chaque variable en fonction de toutes les autresOn obtient un nuage de point à l’aide de la commandetwoway scatter <liste de variables>

La liste de variables doit en contenir au moins deux. La dernière correspondra à la variableen abscisses, les autres aux variables en ordonnées (attention à la lisibilité du graphique si oninclut plusieurs variables en ordonnées). Le type de symbole utilisé se contrôle avec l’optionsymbol(). Pour voir une liste des symboles autorisés, taper palette symbol

Exemple 19 : Nuage de points

Nuage de points pour le poids de naissance contre la durée de gestation, on utilise le symboledu cercle

twoway scatter bweight gestwks, scheme symbol(oh)

Si on désire représenter une série de nuages de points pour tous les couples de variablesd’une liste, on utilisera la commande

graph matrix <liste de variables>

58 c© V. Simonnet et A. Terracol, 2014

Page 59: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

Si on ne veut qu’une moitié de la matrice (qui est « symétrique »), on ajoutera l’option half

Exemple 20 : Matrice de nuages de points

graph matrix bweight gestwks matage

Si on dispose de données telles que à chaque valeur de la variable en abscisse correspondeune seule valeur pour les variables en ordonnées (par exemple l’évolution du PIB (en ordonnée)dans le temps (en abscisse)), il peut être intéressant de joindre les observations par une ligne.C’est le rôle de la commande

twoway line <liste de variables>

Le style de ligne se contrôle avec l’option lpattern(). Pour voir une liste des styles delignes autorisés, taper palette line. Il est souvent utile d’ajouter l’option sort pour s’as-surer que les données sont classées selon les valeurs de la variable en abscisse (sinon on risqued’avoir une graphique illisible).

Exemple 21 : Graphique reliant les observations

On représente l’évolution des espérances de vie des hommes et des femmes depuis 1900 auxÉtats-Unis. On utilise une ligne pointillée pour les hommes, et pleine pour les femmes

twoway line le_male le_female year, sort lpattern(dash solid)

c© V. Simonnet et A. Terracol, 2014 59

Page 60: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

4.4 Superposition de graphiques

On peut superposer deux (ou plus) graphiques en séparant les commandes par ||, ou enincluant les commandes entre parenthèses. Si on souhaite représenter le nuage de points desvariables var1 et var2 ainsi que la droite de regression linéaire liant les deux variables, ontapera :

twoway scatter var1 var2 || lfit var1 var2

ou bien

twoway (scatter var1 var2) (lfit var1 var2)

On peut superposer des graphiques de variables qui ne sont pas mesurées sur la même échelleen séparant les axes des abscisses grâce aux options yaxis(1) et yaxis(2)

Exemple 22 : Deux axes des abscisses différents

twoway (line le year, sort yaxis(1)) ///(line ratio year, sort yaxis(2))

60 c© V. Simonnet et A. Terracol, 2014

Page 61: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

4.5 Légende, titres etc.

Pour donner un titre aux axes du graphique, on utilise les options xtitle() et ytitle().Pour l’intitulé du graphique, on utilise l’option title(), et subtitle() pour un sous-titre.L’exemple suivant indique les divers titres que l’on peut spécifier dans un graphique.

Exemple 23 : Titres

c© V. Simonnet et A. Terracol, 2014 61

Page 62: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

Pour donner une légende aux variables représentées en ordonnée on utilise l’option legend(label(1"legende1") label(2 "legende2"))

En utilisant l’option name(), on peut créer plusieurs fenêtres de graphiques simultanément.Pour sauvegarder un graphique, on utilisera la commande graph save

Pour un guide des graphiques Stata, voir Mitchell (2004) et les liens donnés en section 1.3

Exemple 24 : Utilisation des options avancées

sysuse uslifeexp,cleargenerate ratio=le_female/le_malelabel var ratio "female/male ratio"twoway (line le year, yaxis(1) xaxis(1 2) sort) ///(line ratio year, sort yaxis(2) ///ylabel(40(10)80, axis(1) angle(horizontal) ///grid gstyle(major) glcolor(black) glwidth(thin) nogmax) ///ytick(25, axis(1) notick) ///ylabel( 1(0.05)1.15 , angle(horizontal) labsize(small) axis(2) ///grid gstyle(major) glcolor(black) glwidth(thin)) ///ytick(2, axis(2) notick)) ///, scheme(s2mono) graphregion(color(white) lwidth(thick)) ///xlabel(1918, axis(1)) xtitle("", axis(1)) ///title(US life expectancy) subtitle(1900-2000) ///note(note: 1918 dip due to influenza pandemic)

62 c© V. Simonnet et A. Terracol, 2014

Page 63: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

c© V. Simonnet et A. Terracol, 2014 63

Page 64: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

Notes

64 c© V. Simonnet et A. Terracol, 2014

Page 65: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

Chapitre 5

Estimation

5.1 GénéralitésLa plupart des commandes d’estimation de Stata ont une structure commune dont la syntaxe

est la suivante :commande <var. dep> <liste des vars indep.>, options

Pour toutes les commandes d’estimations, les conditions if et in peuvent être spécifiées, et lesobservations peuvent être pondérées en ajoutant [weight=<variable de pondération>]à la commande.

Après avoir effectué l’estimation, un certain nombre de prédictions peuvent être effectuéesavec la commande predict. La liste des prédictions autorisées varie selon l’estimation effec-tuée, et peut être consultée dans la rubrique d’aide de la commande d’estimation utilisée.

Les tests de contrainte linéaires sur les paramètres se font avec la commande test.On peut accéder au vecteur des paramètres estimés β̂ qui est stocké dans la macro e(b),

ainsi qu’à la matrice de variance-covariance stockée dans e(V). On peut également accéder auxparamètres et écart-types estimés de chaque variable individuellement, qui sont stockés dans lesmacros internes _b[variable] et _se[variable]. Pour la constante, on remplace le nomde la variable par _cons

De façon générale, et comme pour les commandes de description de données vues précé-demment, les commandes d’estimation stockent un certain nombre de résultats dans des macrose() dont on peut obtenir la liste à l’aide de la commande ereturn list :

. regress price mpg weight

Source | SS df MS Number of obs = 74---------+------------------------------ F( 2, 71) = 14.74

Model | 186321280 2 93160639.9 Prob > F = 0.0000Residual | 448744116 71 6320339.67 R-squared = 0.2934---------+------------------------------ Adj R-squared = 0.2735

Total | 635065396 73 8699525.97 Root MSE = 2514

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

---------+----------------------------------------------------------------mpg | -49.51222 86.15604 -0.57 0.567 -221.3025 122.278

weight | 1.746559 .6413538 2.72 0.008 .467736 3.025382_cons | 1946.069 3597.05 0.54 0.590 -5226.245 9118.382

--------------------------------------------------------------------------

c© V. Simonnet et A. Terracol, 2014 65

Page 66: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

. ereturn list

scalars:e(N) = 74

e(df_m) = 2e(df_r) = 71

e(F) = 14.73981538538409e(r2) = .2933891231947527

e(rmse) = 2514.028573297152e(mss) = 186321279.7394509e(rss) = 448744116.3821706

e(r2_a) = .2734845914537599e(ll) = -682.8636883111165

e(ll_0) = -695.7128688987767

macros:e(title) : "Linear regression"

e(depvar) : "price"e(cmd) : "regress"

e(properties) : "b V"e(predict) : "regres_p"

e(model) : "ols"e(estat_cmd) : "regress_estat"

matrices:e(b) : 1 x 3e(V) : 3 x 3

functions:e(sample)

La commande estimates store permet de sauvegarder le contenu d’une estimationsous un nom que l’on choisit, puis d’y revenir ultérieurement (par exemple pour des test d’Haus-mann)

regress price mpg weight

<output ommited>

estimates store reg1

regress price mpg weight turn

<output ommited>

estimates store reg2

estimates replay reg1

<output ommited>

estimates replay reg2

66 c© V. Simonnet et A. Terracol, 2014

Page 67: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

<output ommited>

estimates table reg1 reg2, star

----------------------------------------------Variable | reg1 reg2

-------------+--------------------------------mpg | -49.512221 -72.865012

weight | 1.7465592** 3.5243386***turn | -395.19019**_cons | 1946.0687 12744.244**

----------------------------------------------legend: * p<0.05; ** p<0.01; *** p<0.001

Enfin, les effets marginaux ainsi que les élasticités peuvent être calculés avec la commandemfx compute

sous Stata 10 et les versions antérieures, et avec la commande margins depuis Stata 11.

5.2 Variables catégorielles

5.2.1 Stata 10 et avant

L’inclusion de variables catégorielles dans une procédure d’estimation est facilitée par lepréfixe xi:

Si on dispose d’une variable catégorielle (par exemple la variable niveduc), et que l’onsouhaite inclure la série des indicatrices correspondantes dans notre modèle, on fait précéder lacommande par le préfixe xi:, et on indique à Stata les variables catégorielles à décomposer eny ajoutant le préfixe i.. Par exemple, on pourra taper

xi: regress wage age i.niveduc sexeafin d’inclure automatiquement la série des indicatrices correspondant aux différentes valeurs

possibles de niveduc.On peut également introduire automatiquement des interactions entre les diverses catégories

et d’autres variables (continues ou catégorielles). Pour introduire, en plus des indicatrices pourniveduc, les interactions entre le niveau d’éducation et l’âge, on tapera :

xi: regress wage sexe i.niveduc*age

Les différentes possibilités sont résumées ci-dessous :— i.var1 : inclut les indicatrices pour les différentes valeurs de var1— i.var1*var2 : inclut les indicatrices pour les différentes valeurs de var1, ainsi que

les termes d’interactions entre ces catégories et la variable var2— i.var1|var2 : inclut uniquement les termes d’interaction entre les différentes valeurs

de var1 et la variable var2

c© V. Simonnet et A. Terracol, 2014 67

Page 68: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

— i.var1*i.var2 : inclut toutes les indicatrices pour les différentes valeurs de var1et var2, ainsi que les termes d’interactions entre ces catégories.

Par défaut, Stata omet l’indicatrice de catégorie la plus représentée. Il est possible de changerce comportement à l’aide de la commande char ... [omit]...

Par exemple, si vous voulez que la catégorie exclue soit celle de niveduc=1, vous taperezchar niveduc[omit] 1

5.2.2 Stata 11

Stata 11 a éliminé la nécessité de spécifier le préfixe xi:, et la syntaxe a été légèrementmodifiée. Pour introduire automatiquement les différents niveaux d’une variable catégorielle,on fera précéder son nom du préfixe i. (comme dans les versions de Stata plus anciennes).Les interactions seront spécifiées avec # et ##. Les variables devant être traitées comme desvariables continues seront indiquées par le préfixe c.

Par exemple, la commanderegress wage i.niveduc

inclura automatiquement les différents niveaux de la variable de niveau d’éducation dans larégression. La commande

regress wage i.niveduc#c.ageinclura les niveaux d’éducation croisés avec la variable continue d’âge. Attention, écrire

i.niveduc#ageproduira les croisements des niveaux de la variable d’éducation avec les niveaux de la variabled’âge, qui sera donc considérée comme une catégorielle !

Si on souhaite introduire les variables telles qu’elles en plus de leurs interactions, on mettra## au lieu de # :

regress wage i.niveduc##c.ageeffectue la régression de wage sur les niveaux de niveduc, sur age ainsi que sur les croise-

ments de ces derniers.On peut se servir de ces opérateurs pour inclure des puissances de variables explicatives

sans avoir à les générer. Par exemple,regress wage c.age##c.age##c.age

effectue une régression de wage sur age, age au carré et age au cube.Il est également possible de choisir de n’inclure qu’un seul niveau de la variable catégorielle,

en faisant suivre i. par le niveau en question. Par exemple,regress wage i2.niveduc

inclura dans la régression une seule indicatrice pour niveduc=2.Il est également possible de spécifier la catégorie de référence avec le préfixe ib#. (où #

est un chiffre) au lieu de i.. Par exemple,regress wage ib4.niveduc

prendra comme catégorie de référence le niveau d’éducation valant 4. Si l’on veut que la se-conde catégorie dans l’ordre croissant soit la catégorie de référence, on utilisera ib(#2).niveduc.Si l’on veut que la dernière catégorie soit la catégorie de référence, on tapera ib(last).niveduc.

68 c© V. Simonnet et A. Terracol, 2014

Page 69: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

Enfin, il est possible d’appliquer ces opérateurs à tout un groupe de variables en réunissantces dernières dans un jeu de parenthèses. Par exemple,

regress wage i.niveduc##(c.age c.experience)est équivalent à

regress wage i.niveduc##c.age i.niveduc##c.experience

5.3 Moindres carrés

5.3.1 MCO

On effectue une regression multiple par la méthode des moindres carrés ordinaires avec lacommande regress :

regress <variable dependante> <liste des variables indépendantes>On peut indiquer à Stata de ne pas inclure de constante dans le modèle en indiquant l’optionnoconstant

Suite à l’estimation d’un modèle, on peut obtenir diverses prédictions à l’aide de la com-mande predict :

predict <nouvelle variable>, optionLe type de prédiction souhaitée est précisé par l’option, qui peut être :

— xb : prédiction linéaire— residuals résidus estimés— ...Pour guide complet en ligne sur les méthodes de régression avec Stata, voir UCLA Acade-

mic Technology Services (2006).

5.3.2 MCG

On peut tester l’hypothèse d’homoscedasticité des résidus à l’aide du test de Breush-Paganavec la commande estat hettest après avoir estimé le modèle. Stata peut également tracerun graphique des résidus contre la variable prédite afin d’effectuer une détection « visuelle » del’hétéroscédasticité à l’aide de la commande rvfplot (residuals versus fitted plot)

En présence d’hétéroscédasticité, il convient d’ajouter l’option robust afin d’appliquer lacorrection de White à la matrice de variance-covariance des résidus :

regress y x1 x2, robust

Afin de pouvoir tester pour la présence d’autocorrélation, il est nécessaire d’indiquer aupréalable à Stata quelle est la variable représentant le temps avec la commande tsset <variablede temps> après avoir effectué l’estimation par les MCO avec regress, on obtient la sta-tistique de Durbin-Watson en tapant

estat dwatsonSi le résultat indique la présence d’autocorrélation, on peut effectuer une correction de Prais-

Winsten ou de Cochrane-Orcutt à l’aide de la commande prais.

c© V. Simonnet et A. Terracol, 2014 69

Page 70: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

5.4 Variables instrumentalesLe traitement de l’endogénéité d’une variable explicative par la méthode des variables ins-

trumentales se fait à l’aide de la commande ivregress. Trois méthodes sont proposées : lesdoubles moindres carrés (2sls), le maximum de vraisemblance à information limitée (liml)et la méthode des moments généralisée (gmm). En notant varlist1 la liste des variablesexogènes, varlist2 les variables endogènes, et varlist_iv la liste des instruments, l’es-timation par variables instrumentales s’écrit :

ivregress <méthode> varlist1 (varlist2 = varlist_iv)où méthode est soit 2sls, soit liml soit gmm. Si l’option gmm est spécifiée, on peut spécifierle type de matrice de poids désiré via l’option wmatrix.

Après une estimation par variables instrumentales, on peut effectuer un test d’endogé-néité avec la commande estat endoenous ; et un test de suridentification avec estatoverid.

5.5 TestsLa commande test permet de tester des hypothèses de contraintes linéaires sur les coeffi-

cients. Imaginons que l’on fasse l’estimation suivante :

y = β0 +β1x1 +β2x2 +β3x3 + ε

Pour tester l’égalité des coefficients β1 et β2, on tape :test x1=x2

Pour tester l’hypothèse β1 = β2 = β3, on utilise l’option accumulate :test x1=x2test x2=x3, accumulate

De même, si on veut tester que β1 = β3 = 1, on pourra taper :test x1=x3

test x3=1, accumulate

Des tests d’hypothèses non-linéaires (e.g. un test de l’hypothèse exp(β1) = 0) peuvent êtreeffectuées avec la commande testnl :

testnl exp(_b[x1])=0

Notez que la commande testnl, au contraire de test, nécessite que l’on spécifie lecoefficient à tester sous la forme _b[varname]

5.6 Données de panelLes commandes Stata relatives aux données de panel commencent par le préfixe xt

70 c© V. Simonnet et A. Terracol, 2014

Page 71: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

Avant d’utiliser ces commandes, il est judicieux d’indiquer à Stata quelle est la variableidentifiant les individus, et, éventuellement, quelle est la variable indiquant le temps. Cela sefait à l’aide de la commade tsset :

tsset <variable d’identifiant> <variable de temps>Alternativement, on peut utiliser les commandes iis et tis :

iis <variable d’identifiant>tis <variable de temps>

Il est toutefois possible d’indiquer ces variables à Stata à l’aide des options i() et t() lorsquevous taperez la commande.

xtsum et xttab permettent d’obtenir des statistiques descriptives intra et inter-individuelles.Pour estimer un modèle en données de panel, on utilise la commandextreg y x1 x2, option

. Le type de modèle est déterminé par l’option utilisée, par exemple fe pour le modèle à effetsfixes, et re pour le modèle à effets aléatoires.

5.6.1 Modèles à effets fixesCe modèle repose sur la différenciation des variables par rapport à la moyenne individuelle

pour éliminer les effets fixes 1. Quelques particularités des résultats : trois statistiques de R2

sont affichées. Le R2 within donne la part de la variabilité intra-individuelle de la variable degauche expliquée par celles des variables de droite. C’est le plus important des trois. Le R2

between estime l’apport des effets fixes au modèle. Le R2 overall traduit la qualité globale dela régression. D’autre part, deux F-stat sont proposées. La première indique la significativitéjointe des variables explicatives, la seconde la significativité jointe des effets fixes.

Le LM-test de Breush-Pagan (xttest2) teste la corrélation entre observations dans lemodèle à effets fixes.

Le test d’autocorrélation sérielle au premier ordre des résidus peut s’effectuer grâce à lacommande pantest2 id_temps. On peut aussi utiliser xtserial y x1 x2 qui n’im-pose pas de choix entre le modèle à effets fixes ou aléatoires. Enfin, la commande xtregar yx1 x2, lbi permet d’estimer modèles a effets fixes ou aléatoires avec erreurs autocorréléesd’ordre 1. L’option lbi permet d’effectuer le test de Baltagi-Wu et celui de Durbin-Watson.

5.6.2 Modèles à effets aléatoirextreg y x1 x2, re estime le modèle à effets aléatoires. Ce dernier permet d’estimer

les coefficients des variables ne variant pas dans le temps (sexe, ethnie, etc.). Il se base surl’hypothèse que les effets individuels sont indépendants des régresseurs du modèle.

On retrouve les trois R2. Le R2 within donne la contribution des effets aléatoires au mo-dèle. Le R2 between indique la part de la variabilité inter-individuelle expliquée par celles desvariables de droite. Il se focaliser sur celui-ci. Le R2 overall est le même que précédemment.

1. L’autre possibilité pour estimer un modèle à effets fixes est d’intégrer des variables indicatrices pour chaqueindividu, voir areg. On peut également avoir recours à l’estimateur de Hausman-Taylor, xthtaylor lorsqu’ondoit intégrer dans les variables explicatives des variables invariantes au fil du temps. Pour estimer un modèle àeffets fixes en utilisant des variables instrumentales, voir xtivreg, fe

c© V. Simonnet et A. Terracol, 2014 71

Page 72: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

Le test de Breush-Pagan (xttest0) teste la significativité des effets aléatoires. La com-mande xttest1 permet d’obtenir plusieurs les résultats de plusieurs tests classiques à ef-fectuer après le modèle à effets aléatoires (test de Breush-Pagan, test de Baltagi-Li (1995) decorrélation sérielle d’ordre 1, le test joint de Baltagi-Li (1991) de corrélation sérielle et d’effetsaléatoires, etc...).

Le test d’autocorrélation sérielle au premier ordre des résidus peut s’effectuer grâce à lacommande xtserial y x1 x2.

5.6.3 Test d’HausmanLe test d’Hausman permet de tester une hypothèse H0 à l’aide de l’estimation d’un modèle

consistent que H0 soit vérifiée ou non ; et d’un modèle consistent et efficient si H0 est vérifiée,et inconsistent sinon 2. On utilise la commande estimate store <nom du modèle>pour stocker les résultats des différents modèles avant d’effectuer le test :

<estimation du modèle consistent>estimate store consist<estimation du modèle efficient>estimate store effichausman consist effic

Lors de l’appel de la commande hausman, il faut toujours placer le nom du modèle consistenten premier, et celui de l’efficace en second. D’autre part, on peut remplacer le nom du secondmodèle par un point pour indiquer que l’on souhaite utiliser le dernier modèle à avoir été estimécomme modèle efficient :

hausman consist .

Dans le cadre des données de panel, si on veut tester l’hypothèse nulle d’effets aléatoires(c’est à dire de non-corrélation des effets individuels et des régresseurs), on va utiliser le modèleà effet fixes comme modèle consistent dans tous les cas, et le modèle à effets aléatoires commemodèle consistent et efficient sous H0, mais non consistent sous l’hypothèse alternative. Ontapera alors :

xtreg y x1 x2 x3, feestimate store fixedxtreg y x1 x2 x3, reestimate store randomhausman fixed random

5.7 Variables qualitativesStata permet d’estimer des modèles « qualitatifs » sur des variables prenant la valeur 0 ou

1, pour indiquer la survenance ou non d’un évènement, ou la présence ou nom d’une caractéris-

2. Un estimateur θ̂ est dit "consistent" s’il converge en probabilité vers la quantité θ à estimer lorsque la taillede l’échantillon tend vers l’infini : limN→∞ Pr

(|θ̂ −θ |< ε

)= 1∀ε > 0. Un estimateur est "efficient" s’il est de

variance minimale parmi les estimateurs sans bias.

72 c© V. Simonnet et A. Terracol, 2014

Page 73: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

tique. Des variables indiquant un classement peuvent également être utilisées dans le cadre desmodèles ordonnés.

5.7.1 Probit et Logit

Ces deux modèles se basent sur l’estimation de la probabilité que la variable dépendante soitégale à 1. Dans le modèle probit, le résidu est supposé suivre une loi normale contrée-réduite,et une loi logistique dans le modèle logit. Les commandes correspondantes sont probit etlogit :

probit <variable dépendante> <liste des variables explicatives>

logit <variable dépendante> <liste des variables explicatives>

La commande logit permet de reporter les « odd ratios » plutôt que les coefficients enajoutant l’option or :

logit y x1 x2 x3, or

On peut également obtenir les effets marginaux issus de l’estimation probit en utilisantdprobit :

dprobit y x1 x2 x3

5.7.2 Probit et Logit ordonnés

Lorsque la variable endogène représente un classement ordinal à plus de 2 catégories (parexemple des réponses liées à la satisfaction), on utilise les modèles ordonnés. Les commandesStata correspondantes sont oprobit et ologit

5.7.3 Logit multinimial

Lorsque la variable dépendante est une variable catégorielle que l’on ne peut ordonner (parexemple un choix entre différentes alternatives), on utilise un logit multinomial avec la com-mande Stata mlogit. Attention, l’interprétation des coefficients doit se faire en référence à unecatégorie de base que l’on peut définir avec l’option base(<numéro de la modalité>)de la commande mlogit.

Après avoir estimé le modèle, Stata peut prédire les probabilités associées à chaque modalitéà l’aide de la commande predict. si la variable dépendante prenait 3 modalités, on peutcalculer les probabilités associées à ces modalités avec :

predict pr1 pr2 pr3, prou bien avec

predict pr1, outcome(1) pr

predict pr2, outcome(2) pr

predict pr3, outcome(3) pr

c© V. Simonnet et A. Terracol, 2014 73

Page 74: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

5.8 Modèles à sélection endogèneLorsque l’échantillon sur lequel on souhaite effectuer ses analyses est lui même issu d’un

processus qui n’est pas indépendant de celui que l’on veut analyser, alors on fait face à unproblème de sélection endogène. Par exemple, lorsque l’on souhaite étudier les déterminantsdu salaire, l’échantillon des individus travaillant est auto-sélectionné car seuls ceux dont lescaractéristiques permettent d’avoir un salaire plus élevé travailleront, et seront donc observés.En 1979, Heckman a proposé une solution pour corriger le biais résultant de cette sélectionendogène. Il s’agit de spécifier que le processus de sélection dans l’échantillon est lié à celuique l’on étudie via une corrélation entre leurs termes d’erreurs (supposés suivre une loi normalebivariée). On implémente cette méthode avec la commande heckman. En notant varlist1la liste des variables explicatives de l’équation d’intérêt, et varlist2 la liste des variablesinfluençant le processus de sélection, on tapera :

heckman <variable dépendante> <varlist1>, select(<varlist2>)Notez que l’échantillon utilisé doit contenir des personnes pour lesquelles la variable dépen-

dant est observée, et d’autres pour lesquelles elle ne l’est pas. Pour ces derniers, la variabledépendante doit être codée comme manquante. Enfin, la variable dépendant doit être continue.

On peut indiquer à Stata d’implémenter la méthode en deux étapes (avec introduction duratio de Mills) avec l’option twostep.

Après l’estimation, la commande predict permet de spécifier une série de prédictions, enparticulier l’espérance conditionnelle de la variable dépendante, sachant que l’individu participeau processus étudié (option ycond).

5.9 Modèles de duréeSi vos données représentent des durées (par exemple de chômage), et que ces durées sont

censurées pour une partie des observations (par exemple si on a interrogé des individus au coursde leur épisode de chômage), il faut effectuer l’analyse en terme de modèles de durée. Statapropose un ensemble de commandes préfixées par st pour effectuer ces analyses.

5.9.1 Déclaration des données

Une étape essentielle dans l’analyse des données de durée est leur déclaration, qui permettraà Stata d’effectuer correctement les analyses. Elle se fait à l’aide de la commande stset etsert à indiquer la variable de durée, les censures, le mode d’échantillonnage, etc. La variableindiquant les « sorties » est indiquée avec l’option failure(<nom de la variable>)(cette variable vaut 1 si la durée observée est complète, et zero si elle est censurée). On indique sinécessaire (lorsqu’il y a plusieurs observations pour un même individu, ou que l’épisode étudiéest divisé en plusieurs morceaux avec des valeurs différentes pour les variables explicatives)avec l’option id(<nom de la variable>).

Si vous disposez d’un échantillon en stock, il convient d’utiliser l’option enter() pourindiquer le moment auquel l’individu a commencé à être observé.

Par exemple, si la variable de durée est dur, celle de sortie exit, on tapera :stset dur, fail(exit)

74 c© V. Simonnet et A. Terracol, 2014

Page 75: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

. Si on a un échantillon tiré dans le stock, et que la variable indiquant le temps passé avantl’entrée en observation est dstock, on tapera

stset dur, fail(exit) enter(dstock)

Si vos données indiquent les dates de début (begin) et de fin (end) d’épisodes, on utiliseral’option origin() qui permet d’indiquer quand l’individu devient à risque. on fera alors ladéclaration suivante :

stset end, fail(exit) origin(begin)

Lors de la déclaration des données de durée, Stata crée quatre variables qui lui servirontdans son analyse :

— _st vaut 1 si l’observation doit être utilisée, et 0 sinon— _t0 indique le moment du début d’observation— _t indique le moment de fin d’observation— _d vaut 1 si la durée est complète, et 0 sinonUne fois la déclaration effectuée, la commande stgen permet la création de variables de

façon plus aisée. De même, la commande stfill permet le « remplissage » de certainesvariables au cours d’un épisode pour un individu donné.

5.9.2 Estimation

Stata propose une large gamme d’estimateurs pour les données de durée.

Estimateurs non-paramétriques

L’estimateur de Kaplan-Meier de la fonction de survie est calculé et représenté graphique-ment à l’aide de la commande sts graph. On peut distinguer la fonction de survie selon lesvaleurs prises par une variable en utilisant l’option by(). Par exemple, pour représenter lesfonctions de survie associées à un sexe, on tapera :

sts graph, by(sexe)

On peut également tracer le graphique de la fonction de hasard intégré avec l’option na.Pour lister les valeurs de la fonction de survie ou du hasard intégré, on utilisera la commande

sts list qui a la même syntaxe que sts graph.Enfin, on peut générer des variables contenant les valeurs de la fonction de survie, de hasard

ou de hasard intégré avec la commande sts gen <nom de variable> = <type> oùle type peut être s si on veut la survie, na si on veut le hasard intégré, haz si on veut le hasard.

Enfin, on peut tester l’égalité des fonctions de survie entre deux sous-échantillons avec lacommande sts test : la commande

sts test, by(sexe)

testera l’égalité de la fonction de survie entre les hommes et les femmes.

c© V. Simonnet et A. Terracol, 2014 75

Page 76: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

Estimation de modèles

L’estimation d’un modèle de Cox à hasard proportionnel se fait avec la commande stcoxsuivi de la liste des variables explicatives et des options. Parmi ces dernières, nohr permetl’affichage direct des paramètres estimés, et non pas du ratio de hasard correspondant.

Les modèles paramétriques sont estimés à l’aide de la commande streg, où l’on va préci-ser la forme que doit prendre la fonction de hasard de base grâce à l’option dist(). Les distri-butions autorisées sont exponential, weibull, lognormal, loglogistic, gamma,gompertz.

La forme paramétrique (hasard proportionnel ou temps accéléré) est déterminé par la loi quel’on a choisi pour le hasard de base. Le tableau 5.1 donne quelques unes de ces lois.

5.9.3 Hétérogénéité inobservéeIl est souvent nécessaire d’introduire un paramètre d’hétérogénéité inobservée dans la mo-

délisation des durées, faute de quoi un phénomène de type « mover-stayer » risque de venirbiaiser l’estimation du hasard de base. Stata propose deux distributions pour ce paramètre d’hé-térogénéité : la distribution Gamma et Inverse-Normale. On les spécifie à l’aide de l’optionfrailty(gamma) ou frailty(invgaussian)

Pour plus de détails sur l’estimation de modèles de durée avec Stata, voir Cleves et al.(2004).

76 c© V. Simonnet et A. Terracol, 2014

Page 77: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

TABLE 5.1 – Quelques lois usuellesLoi Hasard Survie Paramétrisation MétriqueExponentielle λ e−λ t λ = exp(Xβ ) PH/AFTWeibull λαtα−1 e−λ tα

λ = exp(Xβ ) PH/AFT

Log-normaleφ

(ln(t)−µ

σ

)1−Φ

(ln(t)−µ

σ

) 1−Φ

(ln(t)−µ

σ

)µ = Xβ AFT

Log-logistique λ1γ t

1γ −1

γ

(1+(λ t)

) 1

γ

(1+(λ t)

) λ = exp(−Xβ ) AFT

c© V. Simonnet et A. Terracol, 2014 77

Page 78: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

Notes

78 c© V. Simonnet et A. Terracol, 2014

Page 79: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

Chapitre 6

Programmation

6.1 Macros locales et globales

Les variables macros sont des éléments que Stata garde en mémoire et qui peuvent êtrerappelées ultérieurement dans le corps du programme. Elles peuvent contenir un chiffre commeune chaîne de caractères. Stata distingue deux types de variables macros : les macros localeset les macros globales. La différence entre le deux tient au fait que les locales seront effacéesà la fin du programme, tandis que les globales pourront être utilisées plus tard dans un autreprogramme.

— Macros localesUne macro locale nommée "i" sera appelée ‘i’ dans le corps du programme. Attentionà la différence entre les guillemets d’ouverture et de fermeture : Guillemet d’ouverture :‘ (AltGr+7) ; Guillemet de fermeture : ’

— Macros globalesUne macro globale nommée "i" sera appelée $i dans le corps du programme.

Nous donnerons par la suite nos exemples en utilisant des macros locales qui sont les plus cou-rantes.On définit le type de la macro en l’initialisant :local nomdelamacro =...ouglobal nomdelamacro =...

Lorsque Stata rencontre une macro dans une commande, il la remplace par son contenu. Parexemple, si on a :

local i=10...su if age==‘i’

Stata lira la commande comme :su if age==10

c© V. Simonnet et A. Terracol, 2014 79

Page 80: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

6.2 macros numériques

On les initialise en leur donnant un nom et une valeur de départ : local i=1On pourra par la suite changer leur valeur ou effectuer des opérations les utilisant :

local i=1...local i=‘i’+1...gen a‘i’=a*‘i’ ...

6.3 macros alphanumériques

On les initialise en leur donnant un nom et une valeur de départ entre guillemets (il est pré-férable de ne pas mettre de signe "=" lors de la définition de macros alphanumériques, ce quipermet de ne pas limiter leur longueur ) :local i "contenu de i"On pourra par la suite changer leur contenu ou les utiliser à des fins de comparaisons ou d’affi-chage :

local i "Contenu"...display "‘i’"...

Une application utile est la définition une fois pour toutes d’un chemin d’accès à des fichiers(on utilise alors plutôt des macros globales) :

global chemin "C:\mondossier\mesfichiers"...use $chemin\mabase.dta...

6.4 Boucles

On utilise des boucles afin d’éviter d’avoir à écrire plusieurs fois la même commande oulorsque les commandes à effectuer ne diffèrent que par un paramètre.

Les quatre étapes de l’écriture d’une boucle sont :

1 Définir le type de la macro, la nommer et l’initialiser

80 c© V. Simonnet et A. Terracol, 2014

Page 81: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

2 Donner la condition d’arrêt 1 et ouvrir une accolade

3 Donner la série de commandes à effectuer

4 Incrémenter la macro et fermer l’accolade

6.5 Boucles simpleslocal i=1while ‘i’<=10 {

...commandes utilisant ‘i’...local i=‘i’+1}

6.6 Boucles imbriquéesLes boucles imbriquées permettent d’effectuer des opérations plus complexes que ce que

permettent les boucles simples et, par exemple, d’effectuer à chaque étape de la boucle "mère"une série d’instruction donnée par la boucle "fille". L’exemple 25 utilise cette possibilité.La structure générale d’une boucle imbriquée à deux niveaux est la suivante :

local i=1while ‘i’<=10 {

local j=1while ‘j’<=10 {

...commandes utilisant ‘i’ et ‘j’...local j=‘j’+1}

local i=‘i’+1}

Exemple 25 : Création de variables en chaîne

Si on veut créer les puissances de 2 à 10 de la variable salaire, les nommer sal2 à sal10,et simultanément diviser ces puissances par les entiers de 2 à 5, et créer les variables sal2d2à sal10d5, on écrira :

local i=2while ‘i’<=10 {

gen sal‘i’=salaire^‘i’local j=2

1. En fait, la "condition d’arrêt" s’apparente plus à une condition de "continuation" : elle va être de la forme"tant que ... fait..." ;

c© V. Simonnet et A. Terracol, 2014 81

Page 82: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

while ‘j’<=5 {gen sal‘i’d‘j’=sal‘i’/‘j’local j=‘j’+1}

local i=‘i’+1}

6.7 foreach et forvaluesLes commandes foreach et forvalues permettent de programmer des boucles de façon

plus simple. On utilise par exemple foreach <nom-de-macro> in <liste d’éléments>.Si la liste d’éléments a été stockée au préalable dans une autre macro locale, on écrira foreach<nom-de-macro> of local <macroname>. Chaque élément de la liste est alors sto-ckée dans la macro locale dont on a spécifié le nom. Par exemple :

Exemple 26 : foreach

unab liste : _all /*permet de stocker la liste des variablessous la macro locale ‘liste’*/

foreach var of local liste {summarize ‘var’, meanonlydisplay "la moyenne de ‘var’ est "r(mean)}

Exemple 27 : foreach (2)

foreach mot in age diplome salaire {summarize ‘mot’, meanonlydisplay "la moyenne de ‘mot’ est "r(mean)}

La commande forvalues permet de boucler sur des valeurs numériques :

Exemple 28 : forvalues

forvalues nombre = 1/10 {generate x‘nombre’=x/‘nombre’}

82 c© V. Simonnet et A. Terracol, 2014

Page 83: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

Exemple 29 : forvalues (2)

forvalues nombre = 0(10)100 {count if age>‘nombre’}

Notez qu’on utilise le signe = à la place de « in » ou « of ».

6.8 Création de commandesIl est possible de créer ses propres programmes et commandes que l’on pourra ensuite utili-

ser comme n’importe quelle autre commande de Stata. Pour créer une nouvelle commande, onutilise program define suivi du nom de la commande que l’on souhaite créer ; puis la suitedes instructions à effectuer, et on termine par end. L’exemple ci-dessous définit un programmequi affiche l’heure.

Exemple 30 : Hello world

program define helloworlddisplay "Hello, world"end

Après avoir fait exécuter ce code à Stata, on peut appeler le programme en tapant helloworldSi on veut spécifier des arguments qui seront utilisés par la commande, on utilise syntax,

qui permet de spécifier les types d’arguments que Stata doit recevoir pour exécuter la com-mande. On peut indiquer que Stata doit recevoir une liste de variable (varlist), un nom devariable (varname), une option (à spécifier entre crochets), etc. (voir l’aide pour syntax).Lorsque la commande est appelée, chaque élément de la syntaxe est stockée dans une macrolocale du même nom. Ansi, si le premier élément de la syntaxe est varlist, la liste de va-riable spécifiée par l’utilisateur sera stockée dans la macro locale ‘varlist’ (en fait, tous lesarguments contenant une liste de variables seront stockés dans ‘varlist’, même si on avaitspécifié varname ou encore newvarlist).

L’exemple suivant définit la syntaxe d’une commande qui va créer les logarithmes népériensde chaque variable qu’on lui indique :

Exemple 31 : Utilisation de syntax

program define creelnsyntax varlistforeach word of varlist ‘varlist’ {

c© V. Simonnet et A. Terracol, 2014 83

Page 84: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

quietly generate ln‘word’=ln(‘word’)}

end

Pour faire en sorte que la commande que vous avez programmé soit accessible à tout mo-ment, il faut l’enregistrer dans un fichier .ado dont le nom reprend le nom de la commande (parexemple creeln.ado pour l’exemple ci-dessus) ; et le placer dans le répertoire "PERSONAL"indiqué lorsqu’on tape la commande sysdir 2.

6.9 Estimation par maximum de vraisemblanceStata permet à l’utilisateur de définir et de maximiser ses propres fonctions de vraisem-

blances à l’aide de la commande ml model.Plusieurs méthodes sont offertes :

• la méthode lf, la plus simple, ne nécessite que l’écriture de la fonction de log-vraisemblance,chaque observation étant considérée comme une contribution à cette fonction.

• la méthode d0, est similaire à la précédente, mais permet d’utiliser plusieurs observationspour construire la contribution à la vraisemblance (utile pour les estimateurs de panel).

• la méthode d1, semblable à d0, nécessite l’écriture du gradient.

• la méthode d2, quant à elle, nécessite l’écriture du gradient et du hessien.

Nous ne traiterons ici que de la méthode lf.

Les étapes de la création d’un programme de maximisation de vraisemblance sont les sui-vantes :

1. Écrire soigneusement sa log-vraisemblance « à la main » (étape évidente mais impor-tante).

2. Repérer le nombre d’équations que cette fonction comprend (un paramètre auxiliaire telqu’un écart-type ou un coefficient de corrélation est considéré comme une équation àpart).

3. Et enfin, programmer le tout...

2. C’est généralement C:/ado/personal

84 c© V. Simonnet et A. Terracol, 2014

Page 85: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

La programmation en elle même se fait dans un programme Stata commençant par programdefine “ nom du programme ” et se terminant par end. Les étapes indispensables sont :

1. Donner les arguments du programme qui seront ensuite stockés dans des macros locales.ils comprennent obligatoirement : lnf qui va correspondre à la contribution à la fonc-tion de log-vraisemblance ; et un nom de macro par équation (on peut leur donner lenom qu’on veut).

2. Éventuellement définir des variables intermédiaires temporaires (double précision) quiseront stockées sous formes de macros locales et ensuite appelées dans la fonction delog-vraisemblance.

3. Repérer le nombre de variables dépendantes (généralement une seule) qui seront ensuitenommée $ML_y1, $ML_y2...

4. Remplacer ensuite ‘lnf’ par son expression.

Ne pas oublier de faire précéder les commandes de quietly afin de ne pas surcharger la fe-nêtre d’output.

Après avoir définit notre programme de vraisemblance, comment l’utiliser ?On l’appelle à l’aide de la commande ml model de la façon suivante :

ml modelméthode 3 nom_de_la_commande (variable(s) dépendante(s) = variables indépendantes)︸ ︷︷ ︸équation 1

4

(... = ...)︸ ︷︷ ︸équation 2

...

puis, éventuellement

ml check si on veut que Stata vérifie la cohérence du programme 5.

et enfin :

ml maximize 6

Un exemple étant toujours plus parlant, nous allons maintenant programmer un probit dansl’exemple 32.

3. lf, d0, d1 ou d24. On peut y ajouter l’option noconstant (après une virgule) qui supprime la constante de l’équation.5. On peut aussi inclure ml search pour rechercher de meilleures valeurs initailes, ou ml init pour spé-

cifier des valeurs initiales6. Éventuellement suivi des options difficult ou trace, voir Gould et al. (2006)

c© V. Simonnet et A. Terracol, 2014 85

Page 86: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

Exemple 32 : Programmation d’un probit

Rappelons que la fonction de vraisemblance d’un modèle probit est :

Φ

(Xβ

σ

)Y

(−Xβ

σ

)1−Y

où Y est la variable dépendante (égale à 0 ou 1), X est le vecteur des variables explicatives et β

le vecteur des paramètres à estimer.Comme il n’est pas possible d’identifier σ , on le pose à 1, et on écrit la fonction de log-vraisemblance comme :

LL =

{ln(Φ(Xβ )) si Y = 1ln(Φ(−Xβ )) si Y = 0

Étudions maintenant cette fonction :

— Combien d’équations ? Une seule (Xβ ).

— Combien de variables dépendantes ? Une seule

On peut maintenant écrire le programme :

capture program drop myprobit 7

program define myprobit 8

args lnf xb 9

quietly replace ‘lnf’=ln(normprob(‘xb’)) if $ML_y1==1 10

quietly replace ‘lnf’=ln(normprob(-‘xb’)) if $ML_y1==0 11

end

On va maintenant utiliser notre programme pour estimer un probit sur la base auto.dtafournie avec Stata.

ml model lf myprobit (foreign = price mpg weight) 12

ml maximize

Nous allons maintenant programmer une estimation linéaire, exemple plus complexe car ellecomprends deux équations (Xβ et σ ).

7. Permet de supprimer le programme de la mémoire de Stata si on doit le corriger.8. Notre programme s’appelle donc "myprobit"9. On définit les arguments de la fonction de log-vraisemblance

10. Cas où la variable dépendante est égale à 111. Cas où la variable dépendante est égale à 012. foreign est donc notre variable dichotomique dépendante ($ML_y1 dans le pro-

gramme), et price mpg weight sont les variables explicatives

86 c© V. Simonnet et A. Terracol, 2014

Page 87: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

Exemple 33 : Estimation linéaire

La fonction de log-vraisemblance s’écrit :

LL = ln(

φ

(y−Xβ

σ

))− ln(σ)

où y est la variable dépendante (continue).

Étudions maintenant cette fonction :

— Combien d’équations ? Deux (Xβ et σ ).

— Combien de variables dépendantes ? Une seule

Petit « truc » : comme σ ne peut être négatif, on va faire estimer son logarithme à Stata enspécifiant son exponentielle dans l’écriture de la vraisemblance. Cette méthode assure que Statautilise bien un nombre positif dans ces calculs (sinon ça n’a pas de sens), il ne nous restera plusensuite qu’à recalculer la vraie valeur de paramètre en passant ln(σ) à l’exponentielle, il faudraégalement recalculer l’écart-type grâce à la Delta-méthode.

On peut maintenant écrire le programme :

capture program drop lineaireprogram define lineaireargs lnf xb lnsigma 13

tempvar sigma 14

quietly generate double ‘sigma’=exp(‘lnsigma’)quietly replace ‘lnf’=ln(normd(($ML_y1-‘xb’)/‘sigma’))-‘lnsigma’end

et on appelle le programme pour la maximisation :

ml model lf lineaire (price = foreign mpg) () 15

ml maximize

6.10 Monte-Carlo et bootstrapStata permet d’implémenter assez facilement les méthodes de simulations de Monte-Carlo,

ainsi que le calcul des écarts-type par la méthode du bootstrap.

13. xb correspondra à Xβ et lnsigma à ln(σ)14. On définit une variable temporaire appelée sigma15. La spécification de la seconde équation est vide car elle ne comporte qu’une constante

c© V. Simonnet et A. Terracol, 2014 87

Page 88: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

6.10.1 Monte-CarloAfin d’effectuer des simulations de Monte-Carlo, il faut au préalable écrire un programme

contenant le processus générateur de données, ainsi que le calcul des statistiques auxquelleson s’intéresse. Le programme devra être de type « rclass » afin de pouvoir sauver les ré-sultats (commande return scalar <nom du scalaire> = <statistique>) quel’on souhaite dans des macros que l’on pourra ensuite appeler (sous le nom de r(<nom duscalaire>)). On exécute ensuite ce programme un grand nombre de fois avec la commandesimulate qui va ensuite créer une base de donnée regroupant les statistiques d’intérêt pourchaque réplication :

simulate <stockage des r() dans des variables>, reps(<nombre deréplications>) : <appel du programme>

L’exemple 34 présente le code permettant de vérifier « expérimentalement » les propriétésdes estimateurs des MCO

Exemple 34 : Propriétés des MCO

program define mco, rclass /*L’option rclass indique/**/ que l’on va sauver des scalaires dans des r()*/syntax ,obs(integer) /*on crée une option pour indiquer

le nombre d’observations souhaité*/capture drop _all /*On supprime la base en mémoire*/set obs ‘obs’ /*On crée le nombre d’observations souhaité*/drawnorm x1 x2 epsilon /*On tire dans une loi normale*/quietly generate y = 1+x1+x2+epsilon /*Processus générateur*/quietly regress y x1 x2 /*On estime le modèle*/return scalar beta0=_b[_cons] /*on stocke le coeff de /*

/* la constante*/return scalar beta1=_b[x1] /*on stocke le coeff de x1*/return scalar beta2=_b[x2] /*on stocke le coeff de x2*/end

Si on souhaite executer le programme 1000 fois, avec un nombre d’observations de 100, ontapera :

simulate beta0=r(beta0) beta1=r(beta1) beta2=r(beta2), /*/*reps(1000): mco, obs(100)

On peut maintenant étudier les 1000 observations (une par réplication) des variables contenantles paramètres estimés par les MCO.

Pour vérifier que le paramètre de la constante β̂0 est bien distribué selon une loi normalecentrée sur la vraie valeur β0 (1 dans notre exemple), on tapera par exemple :

kdensity beta0, xline(1) normet on obtiendra le graphique suivant :

88 c© V. Simonnet et A. Terracol, 2014

Page 89: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

01

23

4D

ensity

.6 .8 1 1.2 1.4r(beta0)

Kernel density estimate

Normal density

6.10.2 BootstrapUn certain nombre de commandes admettent une option vce(bootstrap) permettant de

calculer la matrice de variance-covariance à l’aide de la méthode du bootstrap.On peut également bootstaper toute commande, y compris celles écrites par l’utilisateur à

l’aide de la commande bootstrap :bootstrap <liste de statistiques>, reps(<nombre de tirages>) :

<appel de la commande>Si on souhaite bootstraper les coefficients d’une régression, il est inutile de spécifier la liste de

statistiques :bootstrap, reps(100) : regress y x1 x2

Si on souhaite bootstraper la différence entre les coefficients de x1 et de x2, on tapera :bootstrap diff=(_b[x1]-_b[x2]), reps(100) : regress y x1 x2

c© V. Simonnet et A. Terracol, 2014 89

Page 90: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

Notes

90 c© V. Simonnet et A. Terracol, 2014

Page 91: FORMATION À STATA 11 - … · Stata est un logiciel de gestion de données et d’analyse statistique à visée généraliste. Son ... il faut lui rajouter le préfixe by suivi

Bibliographie

CLEVES, M., GOULD, W. et GUTIERREZ, R. (2004). An Introduction to Survival AnalysisUsing Stata. Stata Press.

GOULD, W., PITBLADO, J. et SRIBNEY, W. (2006). Maximum likelihood estimation with Stata.Stata Press, 3rd édition.

MITCHELL, M. (2004). A Visual Guide to Stata Graphics. Stata Press.

STATA CORP (2009). Stata 11 Complete Documentation Set. Stata Press.

UCLA ACADEMIC TECHNOLOGY SERVICES (2006). « Regression with Stata ». Web book.http ://www.ats.ucla.edu/stat/stata/webbooks/reg/default.htm.

91