Research Resources

Analyse des données

Summary

Ce guide offre une présentation générale de la phase d’analyse des données en vue d’estimer l’impact causal dans le cadre d’une évaluation aléatoire. Son objectif est de fournir un point de départ et des orientations concrètes aux personnes qui ne maîtrisent pas toutes les subtilités de la littérature. Il ne prétend pas traiter ces sujets de manière exhaustive ni faire autorité en la matière. Nous proposons toutefois des liens vers des ressources utiles pour approfondir les différentes questions, ainsi que des exemples de codes Stata et R pour chaque thème abordé.

Panorama des ressources

Ressources sur la programmation

Stata

R

Théorie et intuition

  • L’article de Duflo et al. (2007) intitulé Using Randomization in Development Economics Research: A Toolkit est un guide accessible sur l’utilisation de la randomisation dans le domaine de l’économie du développement. Bien qu’il contienne quelques discussions et équations techniques, il est compréhensible pour la plupart des lecteurs.
  • Le chapitre « The Econometrics of Randomized Experiments » d’Athey & Imbens (2017) propose un traitement plus récent et plus technique de sujets comme la stratification et l’inférence basée sur la randomisation (randomization inference). Il s’adresse plus particulièrement aux lecteurs ayant un niveau de deuxième cycle universitaire en économétrie.
  • Mostly Harmless Econometrics (MHE) n’est pas un ouvrage spécifique aux évaluations aléatoires, mais plutôt un manuel accessible d’économétrie appliquée qui couvre les notions mathématiques et l’intuition sur lesquelles reposent les décisions prises dans le cadre de l’analyse économétrique. L’ouvrage contient également des extraits de code pour certains exemples. Le cours 14.387 du MIT, intitulé « Applied econometrics : Mostly harmless big data », suit globalement la structure de l’ouvrage MHE, et la présentation du cours de l’automne 2014 est disponible sur le site MIT OCW.
  • Les guides méthodologiques d’EGAP abordent un large éventail de sujets qui vont de la lecture des tableaux de régression à l’inférence causale, en passant par l’hétérogénéité des effets du traitement, les effets moyens locaux du traitement (LATE) et l’ajustement sur les covariables. Si ces guides n’offrent pas une analyse approfondie et complète de chaque sujet, ils en donnent cependant une bonne vue d’ensemble et incluent des exemples de code R. 
  • La Banque mondiale propose sur son blog une série d’articles méthodologiques portant sur un large éventail de sujets. Ces billets de blog résument souvent des articles scientifiques majeurs sur ces sujets, généralement cités en lien.

Cours

Effets du traitement

Les chercheurs ont pour objectif de tirer des conclusions sur l’effet du traitement au sein de la population de référence à partir des estimations obtenues sur l’échantillon de l’étude. En raison de la variation d’échantillonnage, il est peu probable qu’une estimation de l’effet du traitement obtenue à partir d’un échantillon donné soit exactement égale à l’effet réel sur la population globale. Cependant si l’on avait la possibilité de répéter l’étude un grand nombre de fois sur des échantillons différents issus de cette même population de référence, la moyenne des effets obtenus serait égale à l’effet du traitement sur la population de référence. Ce principe sert de base aux calculs de puissance.

En outre, dans tout échantillon donné, l’évolution des variables de résultat provoquée par le traitement est susceptible de varier d’un individu ou d’un groupe à l’autre. En d’autres termes, il est probable que les effets1 du traitement soient hétérogènes entre individus ou entre groupes. Par exemple, un programme offrant des soins prénataux gratuits aux femmes éligibles peut avoir un impact plus important sur l’issue de la grossesse pour les femmes situées au bas de la distribution des revenus que pour celles situées dans la partie supérieure de la distribution, qui ont peut-être accès à d’autres ressources. 

Formellement, on peut noter la variable de résultat de chaque unité du groupe de traitement ou du groupe témoin de la manière suivante :

$$ Y_i = \beta_iT_i +\sum_{j=1}^J \gamma_jx_{ij} $$

  • βi est l’effet du traitement (qui peut être propre à l’unité)
  • Ti est une variable indicatrice de traitement
  • xij sont j=1,...,J des facteurs observables et inobservables, spécifiques à l’unité, qui peuvent affecter la variable de résultat Y
  • γj indique l’effet de xj sur Y et peut être positif ou négatif

On distingue alors deux approches principales pour estimer les effets du traitement. Dans le cadre de l’approche la plus simple, décrite ci-dessous, on suppose que les effets du traitement sont homogènes, de sorte que βi. C’est cette approche « conventionnelle » que nous suivons dans la majeure partie de ce guide. Une deuxième approche, l’inférence basée sur la randomisation (randomization inference), jouit d’une popularité croissante dans l’analyse des données expérimentales en économie. Avec l’inférence basée sur la randomisation, il est possible de tester directement l’hypothèse nulle exacte selon laquelle βi=0 pour tous les i. Dans la mesure où cette approche se distingue quelque peu de l’approche « conventionnelle » d’un point de vue conceptuel, nous l’aborderons vers la fin de ce guide

Effet moyen du traitement (Average Treatment Effect, ou ATE)

Les chercheurs souhaitent généralement mesurer l’effet moyen du traitement (ATE), qui correspond à l’effet causal moyen d’une variable (ici, une intervention ou un programme) sur une variable de résultat pour l’ensemble de la population étudiée. Dans un protocole expérimental classique (c’est-à-dire le protocole le plus simple comprenant un groupe de traitement, un groupe témoin et une situation de conformité parfaite, abordée plus en détail plus bas), on estime l’ATE en calculant la différence entre la moyenne de la variable de résultat dans le groupe de traitement et dans le groupe témoin. 

Formellement, pour un échantillon expérimental donné de taille N et une répartition donnée des unités entre groupes de traitement et groupe témoin, on peut estimer l’ATE à partir de la moyenne du groupe de traitement (T=1) et du groupe témoin (T=0) :

$$ \bar{Y_1} - \bar{Y_0} = \bar{\beta_1}+\sum_{j=1}^J (\bar{x}_{1j}-\bar{x}_{0j}) $$

β1 is the average treatment effect; the subscript indicates that this estimate calculates the average of the treatment effects in the treatment group. The second term is the “error term” of the ATE estimate: the average difference between treatment and control group that is unrelated to treatment (from observable and unobservable differences).

Perfect compliance is when all individuals in the treatment group take up treatment and no control individuals receive treatment. Under perfect compliance, treatment assignment (which is determined randomly by the research design) and treatment status (or the participation variable, which is determined by the individual or group) are identical. Then, a simple difference in means provides an unbiased estimate of the ATE in randomized studies, provided there is also no attrition or unaccounted-for spillovers. In this case, a linear model regressing the observed outcome on a treatment indicator can be used to estimate the effect of the treatment. Linear regression models can accommodate more flexible estimation techniques that rely on ordinary least squares (OLS). Examples include clustering of standard errors to account for within-group correlations (which is particularly important in a clustered design), or the inclusion of covariates to increase precision.

In Stata, the ATE can be estimated with the following code:

**** Stata Code ****

reg y treatment, robust
 

And in R:

#### R Code ####

# Produces regression estimates: insert dataset  name in "data" field
ATEestimate <- lm(y ~ treatment, data = “”)

# Produces robust standard errors
ATERobust <- coeftest(ATEest, vcov = vcovHC(ATEest, "HC1"))
 

y est la variable de résultat et treatment est une variable binaire qui indique si une unité a été assignée au groupe de traitement ou au groupe témoin. robust permet d’obtenir des erreurs-types robustes à l’hétéroscédasticité, décrites plus bas et dans White (1980), Angrist & Pischke (2009), et Wooldridge (2013) (voir également le chapitre 8 de Wooldridge pour le code Stata associé).

Analyse en intention de traiter (Intention-to-treat, ITT)

On parle de conformité imparfaite lorsque les individus ne respectent pas parfaitement leur assignation de traitement. On appelle alors « compliers » les personnes qui participent au traitement uniquement parce qu’elles ont été assignées à le recevoir (et qui n’y participent donc pas si elles n’ont pas été assignées au traitement). À l’inverse, les « non-compliers » se répartissent en trois groupes : 

  • Les « always-takers » (ou « toujours preneurs »), qui participent au traitement quoi qu’il arrive, même s’ils ont été assignés au groupe témoin
  • Les « never-takers » (ou « jamais preneurs »), qui refusent toujours de participer au traitement, même s’ils ont été assignés au groupe de traitement
  • Les « defiers » (ou non-conformistes), qui agissent à l’inverse de leur assignation de traitement 

La non-conformité peut être unilatérale ou bilatérale. On parle de non-conformité unilatérale lorsque les individus assignés au groupe de traitement refusent le traitement OU que les individus assignés au groupe témoin participent au traitement. On parle de non-conformité bilatérale lorsque ces deux situations se produisent simultanément. 

Bien souvent, les chercheurs et les décideurs politiques souhaitent identifier l’impact du fait d’offrir le programme sur la population à laquelle il a été proposé, et ce même si certains individus n’y ont pas participé, dans la mesure où c’est sans doute ce qui arriverait si le programme était réellement déployé. L’estimateur de l’intention de traiter (ITT) permet d’estimer l’effet du programme sur les personnes assignées au traitement, qu’elles y participent ou non. En d’autres termes, on obtient l’ITT en régressant la variable de résultat sur l’assignation du traitement pour l’ensemble de l’échantillon.

Cet estimateur fournit souvent (mais pas toujours) une limite inférieure de l’effet moyen du traitement, car  certains individus du groupe de traitement n’ont pas participé au traitement (en supposant qu’ils auraient tiré moins de bénéfices du traitement que ceux qui y ont participé), tandis que certains individus du groupe témoin ont en fait participé au traitement. 

Sous Stata (en haut) et R (en bas), on obtient l’ITT avec le code suivant :

**** Stata Code ****

reg y assign_treatment
 
#### R Code ####

# Produces regression estimates
ITTestimate <- lm(y ~ assign_treatment, data = “”)

# Produces robust standard errors
ITTRobust <- coeftest(ITTest, vcov = vcovHC(ITTest, "HC1"))
où assign_treatment=1 si l'individu est assigné au traitement et 0 dans le cas contraire.

Effet moyen local du traitement (Local Average Treatment Effect, ou LATE)

L’estimateur LATE permet d’estimer l’effet du traitement sur les « compliers », c’est-à-dire les individus qui se conforment à leur assignation de traitement. Il est donné par la formule suivante :

$$ LATE = \frac{E(Y_i \mid z_i = 1) - E(Y_i \mid z_i = 0)}{E(d_i \mid z_i = 1) - E(d_i \mid z_i = 0)} $$

Comme plus haut, Y est la variable de résultat pour l’individu i (ou le groupe, selon l’unité d’analyse choisie). z correspond à l’assignation du traitement et est égal à 1 si l’individu a été assigné au traitement et à 0 dans le cas contraire, et d indique si le traitement a effectivement été reçu (et prend la valeur 1 si c’est le cas, et 0 dans le cas contraire). En d’autres termes, l’assignation (aléatoire) du traitement est utilisée comme instrument du statut de traitement.

L’estimateur LATE présente cependant des limites en ce sens qu’il n’est bien défini que pour les compliers et qu’il est spécifique à l’instrument utilisé. Il ne permet donc pas de mettre en évidence les effets pour les « always-takers », les « never-takers » ou les « defiers ». Outre l’hypothèse d’indépendance classique, qui doit normalement être vérifiée pour la randomisation (à savoir que l’instrument, en l’occurrence l’assignation du traitement, est considéré comme ayant été déterminé aléatoirement), et l’hypothèse selon laquelle il y a une proportion positive de compliers, elle repose sur deux hypothèses clés : 

  1. Monotonicité : Le fait d’être assigné au traitement ne rend pas l’individu moins susceptible d’être traité.
  2. La restriction d’exclusion : Les individus réagissent au traitement lui-même et non à l’assignation du traitement, ce qui signifie que la valeur de la variable de résultat doit être identique pour les individus qui, quoi qu’il arrive, n’auraient pas participé au traitement, indépendamment de leur assignation.

De la même manière que l’estimateur ITT fournit généralement une limite inférieure à l’effet moyen du traitement en cas de conformité imparfaite, l’estimateur LATE fournit en général une limite supérieure (même si, là encore, ce n’est pas toujours le cas). En effet, il estime l’effet du traitement sur ceux qui y ont participé, qui sont souvent plus susceptibles de retirer des avantages du traitement que ceux qui n’y ont pas participé. En général, plus le taux de conformité est élevé, plus l’estimateur LATE se rapproche du véritable effet moyen du traitement.

Parmi les ressources utiles sur l’estimateur LATE, citons Imbens & Wooldridge (2007), les notes des cours magistraux d’Angrist (2014) et les notes de TD correspondantes de Peter Hull, ainsi que le guide méthodologique d’EGAP sur le LATE.

Sous Stata (en haut) et R (en bas), l’estimateur LATE est donné par le code suivant :

**** Stata Code ****

ivreg2 y (treated=assign_treatment), robust first
 
#### R Code ####

# Produces regression estimates
LATEestimate <- ivreg(y~treated | assign_treatment, data = "")

# Produces robust standard errors
LATERobust <- coeftest(LATEest, vcov = vcovHC(LATEest, "HC1"))
où treated=1 si le traitement a été reçu et 0 dans le cas contraire, et assign_treatment est défini de la même manière que précédemment.

Effet du traitement sur les traités (Treatment on the Treated, ou ToT)

Il s’agit de l’effet du traitement sur les personnes qui ont effectivement participé au traitement. Le contrefactuel du ToT correspond au scénario dans lequel les membres du groupe témoin auraient accepté le traitement s’il leur avait été proposé, ce qui ne peut pas être observé. Le ToT peut être estimé lorsqu’aucun membre du groupe témoin n’est traité, de sorte que la non-conformité est unilatérale. Cela peut être dû au protocole expérimental (si l’on empêche le groupe témoin de recevoir le traitement ou d’y participer), ou simplement au fait qu’aucun membre du groupe témoin n’a participé au traitement, alors qu’il leur était possible de le faire. 

Le ToT repose sur les mêmes hypothèses que l’estimateur LATE et est estimé de la même manière, en utilisant une approche par variables instrumentales (IV). La seule différence réside dans le fait que pour le ToT, aucun membre du groupe témoin n’a reçu le traitement. De façon plus intuitive, il s’agit de la moyenne pondérée des effets sur les « always-takers » et les « compliers » qui ont été assignés au traitement (Angrist 2014, diapositive 12)

Effets du traitement sur le quantile

Les évaluations aléatoires se concentrent généralement sur la différence entre les moyennes du groupe de traitement et du groupe témoin. Cependant, on peut également avoir envie de savoir comment le traitement a affecté la distribution de la variable de résultat entre le groupe de traitement et le groupe témoin. On peut alors utiliser la régression quantile pour estimer l’effet du traitement sur un quantile donné de la variable de résultat (par exemple, la médiane, le 10e centile, le 90e centile, etc.). En d’autres termes, on peut estimer la différence de résultats entre groupes expérimentaux au niveau d’un quantile donné. La régression quantile est utile pour comprendre la manière dont le traitement a affecté la distribution de la variable de résultat en différents points. En revanche, elle ne peut généralement pas être utilisée pour estimer la distribution des effets du traitement. En outre, les coefficients de la régression quantile nous renseignent uniquement sur les effets sur la distribution, et non sur les individus.

La régression quantile repose sur l’hypothèse selon laquelle la variable de résultat est une variable aléatoire dont la fonction de répartition est continue et dont la densité présente certaines propriétés pratiques (par exemple, pas de pics ni de creux). L’hypothèse d’invariance des rangs doit être vérifiée si l’on veut pouvoir déterminer si les individus sont mieux ou moins bien lotis suite à l’intervention, plutôt que de se contenter d’identifier l’effet sur le décile inférieur, par exemple, sans savoir si les personnes qui se trouvaient initialement dans le décile inférieur sont en réalité mieux ou moins bien loties qu’elles ne l’auraient été en l’absence d’intervention (Angrist et Pischke, 2007).

Il existe un certain nombre de ressources utiles sur la régression quantile, notamment :

  • Le chapitre 7 d’Angrist & Pischke (2007) couvre la régression quantile de manière assez détaillée, et aborde notamment les cas où il est possible d’obtenir une interprétation causale des coefficients, et de quelle manière.
  • La section 4.3 de Athey & Imbens (2017).
  • Le guide méthodologique d’EGAP inclut une brève discussion à ce sujet, un extrait de code R et un exemple de cas où l’effet moyen du traitement est égal à 0, mais où l’effet du traitement est négatif pour les quantiles inférieurs de la réponse et positif pour les quantiles supérieurs.

Sous Stata : La régression quantile s’effectue à l’aide de la commande qreg, dont vous trouverez un exemple ci-dessous. Pour plus d’informations, voir Froelich et Melly (2010), le fichier d’aide de Stata et un guide utile publié par UCLA sur l’interprétation. 

Sous R : La régression quantile s’effectue à l’aide du package quantreg. Pour plus d’informations, voir la documentation du CRAN ci-dessous

**** Stata Code ****

qreg outcome assign_treatment, quantile(0.9) vce(robust) // for 90th percentile 
 
#### R Code ####

# For 90th percentile
QTEest <- quantreg::rq(outcome ~ assign_treatment,tau = .9, data =””)

# For producing different types of standard errors;
## The options for "se=" include (but aren't limited to) "rank," "iid," and "boot"
QTERob <- quantreg::summary.rq(QTE, se = “boot”)
 

Ajustement sur les covariables

Les évaluations aléatoires représentent une avancée majeure : en effet, dans une évaluation aléatoire, il n’est pas nécessaire, pour l’identification, d’inclure des variables de contrôle dans la spécification (l’assignation du traitement étant, par définition, orthogonale aux autres covariables). L’inclusion de covariables présente à la fois des avantages et des inconvénients. Les covariables peuvent accroître la précision et permettre de corriger les déséquilibres aléatoires qui existent entre les groupes expérimentaux. Cependant, à moins que les covariables soient toutes des variables indicatrices, qu’elles divisent la population en sous-groupes indépendants et qu’elles soient incluses en tant qu’ensemble complet d’interactions, l’ATE sera généralement biaisé (même si ce biais diminue à mesure que la taille de l’échantillon augmente) (Athey & Imbens 2017)3. Si elles sont mal choisies (si elles ne sont pas prédictives de la variable de résultat), elles risquent également de diminuer la précision. 

Les covariables peuvent être incluses soit de manière additive, soit sous la forme d’un ensemble complet d’interactions avec la variable de traitement. La première approche permet d’accroître la précision, tandis que l’inclusion de l’ensemble des interactions avec la variable de traitement peut permettre de détecter des effets de traitement hétérogènes (voir plus loin). En outre, la façon dont les covariables déséquilibrées doivent être incluses dans l’analyse fait l’objet de débats : certains chercheurs les incluent telles quelles dans la régression, tandis que d’autres recommandent d’abord de les centrer en soustrayant la moyenne (Imbens & Rubin 2015). Il convient de sélectionner des covariables qui ne sont pas affectées par le traitement (c’est pour cette raison que l’on utilise souvent les variables collectées lors de l’enquête initiale) mais qui sont susceptibles d’avoir une influence sur la variable de résultat. Si vous décidez d’inclure des covariables, il est généralement recommandé de présenter à la fois les résultats obtenus avec et sans ajustement sur les covariables. 

Pour plus d’informations sur l’inclusion de covariables, voir les articles mentionnés plus haut ainsi que le guide méthodologique d'EGAP sur l’ajustement sur les covariables (spécifique aux ECR) et Athey & Imbens (2017)

Analyse de l’hétérogénéité et tests d’hypothèses multiples

Analyse de l’hétérogénéité

Comme indiqué plus haut, il est probable qu’un même traitement n’affecte pas tous les individus ou groupes d’individus de la même manière. Si vous pensez qu’un sous-groupe donné risque de réagir différemment au traitement sur la base d’une caractéristique ou d’un ensemble de caractéristiques observables, il peut être intéressant de chercher à détecter l’existence d’une hétérogénéité dans les effets du traitement. Idéalement, cette hétérogénéité potentielle doit être envisagée en amont, de façon à concevoir une étude dotée d’une puissance suffisante pour pouvoir la détecter si elle existe. Pour ce faire, les sous-groupes concernés doivent être inclus en tant que strates (définies plus bas et dans la ressource sur la randomisation) dans le protocole de recherche. Cela permet de procéder à une randomisation stratifiée. Cette approche présente les mêmes avantages que l’inclusion de covariables (précision accrue), sans les inconvénients associés (ATE biaisé).

Cependant, si vous ne découvrez qu’après la randomisation et la mise en œuvre qu’un ou plusieurs groupes spécifiques réagissent différemment au traitement, vous pouvez chercher à mesurer les effets hétérogènes du traitement en utilisant des groupes définis ex post (c.-à-d. après la randomisation). Duflo et al. 2007 (page 64) expliquent dans les grandes lignes comment analyser les résultats d’une analyse de sous-groupes lorsque les groupes sont définis ex ante vs. ex post. EGAP propose également une analyse plus détaillée et plus technique, incluant notamment un exemple de code R pour vérifier l’existence d’effets de traitement hétérogènes, et Ben Jann met à disposition une présentation utile issue d’un atelier organisé en 2015 par l’Université du Michigan.

Stratification

On peut avoir recours à la stratification pour améliorer l’équilibre initial entre le groupe de traitement et le groupe témoin en ce qui concerne les variables de stratification. Cette méthode est utile quand on souhaite mesurer l’hétérogénéité des effets du traitement pour une variable donnée (comme le sexe) et que l’on veut s’assurer de disposer de la puissance nécessaire pour le faire. La décision de stratifier se prend au stade de la conception de l’étude : elle doit être prise en compte dans les calculs de puissance et être mentionnée dans l’entrée du registre des essais ainsi que, le cas échéant, dans le plan de pré-analyse. Comme mentionné ci-dessus, le fait d’inclure des strates peut également contribuer à améliorer la précision (si elles sont corrélées à la variable de résultat) sans introduire de biais, étant donné que le statut de traitement est, par construction, aléatoire, conditionnellement aux variables des strates. Nous partons ici du principe que les strates ont déjà été créées et que la randomisation était stratifiée (pour plus d’informations, voir la ressource sur la randomisation).

Si la probabilité d’être traité varie selon la strate, l’assignation du traitement est conditionnelle à la strate et l’analyse doit tenir compte des variables de stratification en les incluant comme variables de contrôle dans la spécification de la régression (Duflo et al. 2007). Si la probabilité de traitement ne varie pas en fonction de la strate, on peut tout de même inclure des indicateurs de strate, mais ils ne sont pas nécessaires pour garantir l’absence de biais. Si vous stratifiez en fonction de plusieurs variables et que vous incluez des indicateurs de strate, il faudra inclure toutes les variables de stratification dans votre régression et construire les variables de la même manière que les catégories au sein desquelles vous avez effectué la randomisation. Par exemple, si vous avez stratifié en fonction du sexe et du milieu urbain/rural et que vous avez randomisé au sein de quatre strates distinctes (féminin/urbain, féminin/rural, masculin/urbain, masculin/rural), vous devez avoir une variable de strate qui peut prendre les valeurs 1 à 4, chaque valeur correspondant à une strate distincte, et l’inclure en tant que i.stratum dans une régression Stata). Pour vérifier la présence d’effets de traitement hétérogènes, il faut faire interagir les indicateurs de strate avec l’indicateur de traitement. En règle générale, les erreurs-types ne sont pas clusterisées, mais doivent être ajustées pour tenir compte des tests d’hypothèses multiples (voir ci-dessous).

Bras de traitement multiples et comparaisons multiples

Lorsqu’une évaluation aléatoire comporte plusieurs bras de traitement, les chercheurs peuvent trouver intéressant d’effectuer toutes les comparaisons par paires possibles entre groupes expérimentaux, avec le groupe témoin, ou avec le meilleur des autres traitements. On peut alors utiliser des tests F dans un modèle de régression avec des variables indicatrices distinctes pour chaque bras de traitement afin de déterminer si l’un des traitements est en moyenne meilleur (ou moins bon) que les autres, ou pour effectuer des comparaisons par paires entre les différents groupes. Sous Stata, on peut effectuer cette opération en utilisant le code test _b[t1]=_b[t2] si l’on veut déterminer si l’effet du traitement 1 est égal à l’effet du traitement 2.

Tests d’hypothèses multiples

De nombreux traitements sont susceptibles de produire un impact sur plusieurs variables de résultat différentes (une intervention de tutorat, par exemple, peut avoir une incidence sur le taux d’obtention du diplôme, les résultats aux examens, la motivation, etc.). Il est important de noter que plus le nombre d’hypothèses testées augmente, plus la probabilité de rejeter à tort l’hypothèse nulle (erreur de type I) augmente elle aussi. Voir le guide méthodologique d’EGAP ou McKenzie (2020) pour une description plus approfondie de ce problème. Dans ce type de cas, l’une des options possibles consiste à agréger plusieurs variables de résultat connexes pour former un indice unique. Par exemple, Bergman et al. (2019) utilisent le Kirwan Child Opportunity Index, un indice qui intègre des indicateurs sur l’éducation, la santé et l’économie, dans leur évaluation du programme Moving to Opportunity. Cependant, cette approche a ses limites car elle ne permet pas aux chercheurs de déterminer l’effet sur les indicateurs individuels, et notamment si le traitement a des effets opposés ou d’ampleurs différentes sur les différents indicateurs.

Une autre option consiste à appliquer l’une des nombreuses méthodes de correction du taux d’erreur par famille (family-wise error rate) ou du taux de fausses découvertes (false discovery rate) en ajustant soit les erreurs types, soit la règle de rejet. Ces méthodes sont notamment les suivantes :

  • La correction de Bonferroni (sous Stata: test …, mtest(bonferroni), qui consiste à multiplier chaque valeur-p par le nombre de tests effectués (ou, de manière équivalente, à diviser le niveau de signification α par le nombre de tests effectués). Cette méthode peut toutefois s’avérer trop conservatrice et générer des valeurs-p calculées supérieures à un.
  • La procédure de Benjamini Hochberg (application pratique), qui consiste à ordonner les valeurs-p et à ajuster le niveau de signification α par (rang de la valeur-p)/(nombre total de tests). Par exemple, s’il y a 5 tests, le seuil α pour le deuxième test sera ajusté à hauteur de ⅖ α. Si la valeur-p pour ce test est inférieure à ⅖ α, cette hypothèse et celles qui la suivent dans l’ordre (c’est-à-dire celles dont la valeur-p est plus faible) sont rejetées. 

Code Stata : Dans un article de blog de 2020, David McKenzie passe en revue les commandes permettant d’effectuer des tests d’hypothèses multiples sous Stata.

Code R : Voir le guide méthodologique d’EGAP.

Menaces

La validité statistique, qui inclut à la fois la validité interne et la validité externe, correspond au degré de crédibilité des conclusions de l’étude concernant les effets du traitement. La validité externe désigne la capacité des résultats de l’étude à être généralisés à d’autres contextes, et notamment à d’autres populations, à d’autres lieux ou à d’autres périodes. La validité interne correspond quant à elle à la capacité de l’étude à établir des relations de cause à effet (par exemple, en estimant correctement la taille de l’effet du traitement), compte tenu du protocole de recherche et de la mise en œuvre de l’étude. 

En sciences sociales, les essais contrôlés randomisés ne se déroulent pas dans un laboratoire aux conditions rigoureusement contrôlées. Les chercheurs sont donc souvent confrontés à des menaces potentielles pesant sur le protocole de recherche, qui sont susceptibles de compliquer ou de compromettre l’intervention. Les menaces les plus courantes pour la validité interne des évaluations aléatoires sont les effets de diffusion et l’attrition

Effets de diffusion

Les effets de diffusion sont des violations de l’hypothèse SUTVA (« stable unit treatment value assumption », hypothèse selon laquelle le résultat potentiel d’un individu donné ne dépend pas de l’assignation de traitement des autres). Des effets de diffusion peuvent se produire lorsque les individus qui ne reçoivent pas le traitement sont tout de même affectés par celui-ci, ce qui risque de biaiser l’effet estimé du traitement. Dans le contexte d’une évaluation aléatoire, les chercheurs doivent idéalement tenir compte des effets de diffusion potentiels dans leur protocole de recherche en choisissant le niveau de randomisation le plus adapté. Par exemple, une intervention qui risque d'avoir des effets de diffusion au sein des établissements scolaires pourra être randomisée au niveau de l'établissement plutôt qu'au niveau de l’élève. Il est également possible de concevoir l’étude de manière à mesurer directement les effets de diffusion, par exemple en randomisant l’exposition au traitement. Cette question est abordée plus en détail dans Duflo et al. (2007) et Baird et al. (2014)

Comme pour d’autres considérations liées au protocole expérimental, l’analyse des effets de diffusion dépend de la conception de l’étude. Si l’étude est conçue pour mesurer les effets de diffusion, l’équation d’estimation doit inclure une variable correspondant à l’exposition (indiquant par exemple si l’individu vit dans le même quartier que des bénéficiaires du traitement). L’effet direct de l’intervention est alors mesuré par l’indicateur de traitement, comme mentionné plus haut, tandis que l’effet indirect de l’exposition au traitement est mesuré par la variable supplémentaire. Cette méthode est illustrée dans l’extrait de code ci-joint. Les études de Miguel & Kremer (2004) et Duflo & Saez (2003) illustrent bien la mesure des effets du traitement en présence d’effets de diffusion.

Attrition 

On parle d’attrition lorsque des membres du groupe étudié quittent l’étude ou que les données les concernant ne peuvent être récupérées. Si les caractéristiques des participants qui ont quitté l’étude sont corrélées à leur assignation de traitement ou à la taille de l’effet, cette corrélation peut indiquer l’existence de différences systématiques entre les membres restants du groupe de traitement et ceux du groupe témoin. Cela risque de biaiser les estimations des effets du programme, le risque de biais augmentant avec le taux d’attrition. Si, à l’inverse, l’attrition n’est pas corrélée à l’assignation du traitement ni aux variables de résultat, elle a pour effet de réduire la puissance statistique dans la mesure où la taille de l’échantillon diminue, mais elle n’affecte pas l’effet du traitement en moyenne. L’attrition est un phénomène très répandu dans les expérimentations sur le terrain, comme l’explique en détail l’étude systématique de Ghanem et al. (2020). Elle a souvent des effets (négatifs) considérables sur la puissance statistique des expérimentations.

Dans la mesure du possible, les chercheurs doivent se demander s’il est envisageable de réduire ou d’éliminer l’attrition à un coût raisonnable. Lorsqu’on est confronté à un phénomène d’attrition, il est important d’essayer de comprendre pourquoi certains membres de l’échantillon ont quitté l’étude en examinant le lien éventuel entre les caractéristiques des personnes concernées et leur statut de traitement ou leurs résultats. Les chercheurs doivent commencer par examiner le taux d’attrition global de l’étude. Ils doivent ensuite vérifier s’il existe une attrition différentielle : y a-t-il des différences systématiques entre le taux d’attrition des individus traités et témoins ? Les caractéristiques des personnes ayant quitté l’étude varient-elles en fonction de leur assignation de traitement, du sous-groupe auquel elles appartiennent ou d’une autre caractéristique observable ? Pour répondre à cette question, on peut régresser l’attrition sur l’assignation du traitement, sur un ensemble de caractéristiques observables ou sur des caractéristiques observables en interaction avec l’assignation du traitement, en utilisant les caractéristiques de la spécification principale. En d’autres termes, si la spécification principale clusterise les erreurs-types et inclut des effets fixes de strate, des pondérations et des covariables, ce doit également être le cas du test d’attrition.

Pour reprendre la terminologie de Ghanem et al. (2020), un test d’attrition sélective permet de déterminer si, conditionnellement au statut d’attrition ou de non attrition, les caractéristiques observables mesurées lors de l’enquête initiale sont différentes dans le groupe de traitement et le groupe témoin. Bien que l’approche adoptée pour ce type de test varie, il faut dans tous les cas utiliser la spécification principale (c’est-à-dire utiliser les mêmes effets fixes, poids, covariables, traitement des erreurs-types, etc.). Une approche courante consiste à effectuer un simple test pour détecter les différences entre les caractéristiques observables du groupe de traitement et du groupe témoin, en fonction du statut d’attrition. Un test conjoint examine les caractéristiques du groupe de traitement et du groupe témoin parmi les participants concernés par l’attrition et les participants non concernés4.

Voici quelques ressources utiles sur l’attrition : Ghanem et al. (2020), l’article de blog de Berk Ozler intitulé Dealing with attrition in field experiments, la page 58 de Duflo et al. (2007) et le chapitre 7 de Gerber & Green

Sous Stata (en haut) et R (en bas), on peut procéder de la manière suivante :

**** Stata Code ****

* Test for differential attrition: 
areg attrit treat, absorb (stratum) cluster(stratum) 

* Simple test for selective attrition: 
reg X treat if attrit==0 
reg X treat if attrit==1

* Two options for a joint test for selective attrition: 
reg X treat attrit treat#attrit
reg attrit treat X treat#X

 
#### R Code ####

# Testing for differential attrition using the "lfe" package
## regresses attrition on treatment, absorbs "stratum," 
## is not an IV specification ("0"), and uses "stratum" 
## as the cluster for cluster robust standard errors
DiffattEst<-lfe:: felm(attrit~treat | stratum | 0 | stratum, data = "")

# Simple test for selective attrition:
SimpAttrEst1 <- lm(x~treat, data = “”, subset = (attrit ==0))
SimpAttrRobust1 <- coeftest(SimpAttrEst1, vcov = vcovHC(SimpAttrEst1, "HC1"))
SimpAttrEst2 <- lm(x~treat, data = “”, subset = (attrit ==1))
SimpAttrRobust2 <- coeftest(SimpAttrEst2, vcov = vcovHC(SimpAttrEst2, "HC1"))

# Two options for a joint test for attrition:
JointAttrEst1 <- lm(x~treat + attrit + treat:attrit, data = “”)
JointAttrRobust1 <- coeftest(JointAttrEst1, vcov = vcovHC(JointAttrEst1, "HC1"))

JointAttrEst2 <- lm(attrit ~ treat + x + attrit:x, data = “”)
JointAttrRobust2 <- coeftest(JointAttrEst2, vcov = vcovHC(JointAttrEst2, "HC1"))
 
Bornes

Pour traiter le problème de l’attrition, l’une des solutions possibles consiste à borner les effets en ayant recours à des méthodes non paramétriques. Parmi les études qui utilisent l’assignation aléatoire, les deux approches les plus courantes sont les bornes d’Horowitz-Manski et les bornes de Lee. Ces deux méthodes reposent sur des hypothèses spécifiques concernant les individus qui ont quitté l’échantillon, mais ne nécessitent pas que l’attrition soit aléatoire. 

Les bornes d’Horowitz-Manski visent à limiter les biais résultant de l’existence d’une corrélation entre les variables de résultat et l’attrition, et reposent sur l’hypothèse selon laquelle l’attrition concerne les individus dont les variables de résultat présentent des valeurs extrêmes. La borne supérieure suppose que tous les participants qui ont disparu du groupe de traitement avaient la valeur de résultat la plus élevée, et que ceux qui ont disparu du groupe témoin avaient la valeur de résultat la plus faible. En pratique, cela consiste à remplacer les valeurs de résultats manquantes dans le groupe de traitement par la plus élevée de toutes les valeurs de résultat observées, et à remplacer les valeurs manquantes du groupe témoin par la valeur observée la plus basse. La borne inférieure repose sur l’hypothèse inverse, selon laquelle tous les participants qui ont disparu du groupe de traitement avaient la valeur de résultat la plus faible et tous ceux qui ont disparu du groupe témoin avaient la valeur de résultat la plus élevée. Cette approche présente l’avantage de reposer uniquement sur l’hypothèse d’un support borné, mais les bornes qu’elle génère peuvent être larges et donc pas nécessairement utiles.

Sous Stata (en haut) et R (en bas) :

**** Stata Code ****

/* To create upper bounds: replace missing outcome values of 
treatment group with the highest observed outcome and missing 
outcome values of control group with lowest observed outcome values */

gen hm_upperbound = outcome
quietly sum hm_upperbound
replace hm_upperbound = r(max) ///
 if hm_upperbound == . & treatment == 1
replace hm_upperbound = r(min) ///
 if hm_upperbound == . & treatment == 0

/* To create lower bounds: replace missing outcome values of 
treatment group with lowest observed and replace missing control 
outcome values with highest observed outcome */

gen hm_lowerbound = outcome
quietly sum hm_lowerbound
replace hm_lowerbound = r(min) ///
 if hm_lowerbound == . & treatment == 1
replace hm_lowerbound = r(max) ///
 if hm_lowerbound == . & treatment == 0
 
#### R Code ####

# Generating minimum and maximum values of the outcome
hm_upperbound <- max(data$outcome)
hm_lowerbound <- min(data$outcome)

# To create upper bounds: replace missing outcome values of 
## treatment group with the highest observed outcome and missing 
## outcome values of control group with lowest observed outcome values
Data<-Data %>%
  mutate(hm_upperbound = ifelse(is.na(outcome) & treatment == 1,hm_upperbound,outcome))
Data<-Data %>%
  mutate(hm_upperbound = ifelse(is.na(outcome) & treatment == 0,hm_lowerbound,outcome))

# To create lower bounds: replace missing outcome values of 
## treatment group with lowest observed and replace missing control 
## outcome values with highest observed outcome
Data<-Data %>%
  mutate(hm_lowerbound = ifelse(is.na(outcome) & treatment == 1,hm_lowerbound,outcome))
Data<-Data %>%
  mutate(hm_lowerbound = ifelse(is.na(outcome) & treatment == 0,hm_upperbound,outcome))
 

Les bornes de Lee impliquent une hypothèse plus forte de monotonicité, selon laquelle l’assignation du traitement ne peut affecter l’attrition que dans un seul sens. Le calcul des bornes de Lee consiste à éliminer des observations dans le groupe où l’attrition a été la moins forte. On peut en outre resserrer ces bornes en utilisant une covariable prédictive de l’attrition. Concrètement, pour calculer les bornes de Lee, il faut :

  1. Calculer la fraction d’« écrémage » (trimming) : p=(fraction restante dans le groupe ayant subi le moins d’attrition - fraction restante dans le groupe ayant subi le plus d’attrition)/fraction restante dans le groupe ayant subi le moins d’attrition
  2. Éliminer les pourcentages de valeurs les plus faibles du groupe ayant subi le moins d’attrition
  3. Recalculer la moyenne des variables de résultat dans le groupe ainsi « écrémé » (celui qui avait subi le moins d’attrition), et la comparer à la moyenne des résultats dans le groupe ayant subi le plus d’attrition. On obtient ainsi une première borne.
  4. Recommencer les étapes 2 et 3, mais en éliminant cette fois les pourcentages de valeurs les plus élevées du groupe ayant subi le moins d’attrition afin d’obtenir l’autre borne.

Sous Stata, vous pouvez utiliser la commande leebounds. Pour connaître les options permettant de resserrer les bornes, consultez le fichier d’aide après l’installation. Sous R, voir le package leebounds de Vira Semenova et sa documentation pour les instructions de mise en œuvre.

**** Stata Code ****

leebounds outcome treatment 
* where treatment denotes receipt of treatment
 

Voici quelques ressources utiles sur les bornes :

Pondération inverse

La pondération par l’inverse de la probabilité (Inverse probability weighting, ou IPW) repose sur l’hypothèse selon laquelle, conditionnellement à un ensemble de facteurs observables X, l’attrition est indépendante de la variable de résultat. Il s’agit d’une hypothèse plus forte que celles sur lesquelles reposent les bornes d’Horowitz-Manski et les bornes de Lee, c’est pourquoi son utilisation a reculé ces dernières années. L’IPW augmente l’effet estimé du traitement pour les individus non manquants qui présentent un profil de covariables X. Par exemple, si, conditionnellement au sexe, l’attrition est aléatoire et qu’un quart des femmes ont disparu des données, les résultats des femmes du groupe de traitement seront majorés de 1/(3/4)=4/3. 

Sous Stata (en haut) et R (en bas) :

**** Stata Code ****

teffects ipw (y) (treatment X) 
* where treatment denotes receipt of treatment
 
#### R Code ####

# Uses package "causal weight" to estimate the ATE or LATE w/IPW; 
## y is outcome variable, treatment is binary treatment indicator, 
## and x is vector of confounders. 
# No option for "data=", so if want individual variables have to call them in the function

TweightEst <- causalweight:: treatweight(data$y, data$treatment, data$x)
 

Erreurs-types

Concernant la construction des erreurs-types associées aux effets estimés du traitement, deux grands cas de figure sont à prendre en considération. Le premier concerne la méthode d’échantillonnage, et plus particulièrement le cas où vous avez procédé à un échantillonnage aléatoire en grappes et souhaitez généraliser vos résultats à une population donnée. Le second concerne le cas où vous avez utilisé l’assignation aléatoire en grappes pour assigner le traitement. Dans cette deuxième situation, vous risquez de rencontrer des difficultés d’estimation si le nombre de grappes est faible (moins de 25 à 30). Dans ce cas, les chercheurs peuvent avoir recours à la technique du bootstrap. 

Une autre approche de plus en plus répandue consiste à utiliser l’inférence basée sur la randomisation, décrite plus bas, pour tester l’hypothèse nulle stricte selon laquelle l’effet du traitement est nul pour tous les participants.

Erreurs-types robustes et clusterisation

Quelle que soit votre procédure d’échantillonnage ou d’assignation, il est généralement recommandé de toujours utiliser des erreurs-types robustes à l’hétéroscédasticité dans la spécification de votre régression (White (1980), Angrist & Pischke (2009), et Wooldridge (2013).

Comme le recommandent Abadie et al. (2017) et le résume David McKenzie, deux raisons peuvent vous inciter à clusteriser les erreurs-types :

  1. Lorsque l’unité d’assignation du traitement est différente de l’unité au niveau de laquelle les résultats sont mesurés. Dans ce cas, Abadie et al. (2017) recommandent de clusteriser au niveau auquel le traitement a été assigné. Par exemple, si le traitement est assigné au niveau du village mais que les résultats sont mesurés au niveau individuel, les erreurs-types doivent être clusterisées au niveau du village. Notez que, même en l’absence d’assignation aléatoire en grappes, si vous disposez de plusieurs observations d’une même unité (par exemple si vous avez des données de panel), vous devrez clusteriser les erreurs-types au niveau de l’unité afin de tenir compte des corrélations au sein de l’unité au fil du temps.
  2. Lorsque vous avez utilisé un échantillonnage en grappes pour tirer les unités de la population de référence : Les principaux éléments à prendre en compte dans ce cas sont la manière dont l’échantillon a été sélectionné ; l’existence éventuelle, au sein de la population de référence, de grappes qui ne sont pas présentes dans l’échantillon ; et le fait que l’on veuille dire quelque chose sur la population dont l’échantillon a été tiré. Il est également possible d’utiliser des poids d’échantillonnage pour généraliser les résultats à la population (voir plus loin).

Si le nombre de grappes est trop faible (<25-30), des erreurs-types robustes aux grappes risquent de sous-estimer la corrélation intra-grappe. Par conséquent, elles seront biaisées vers le bas, conduisant ainsi à un rejet excessif de l’hypothèse nulle. Parmi les solutions alternatives, on peut citer l’estimation des erreurs-types par la méthode du bootstrap ou l’utilisation de l’inférence basée sur la randomisation, que nous verrons plus loin.

Outre Abadie et al. (2017) et McKenzie (2017), les ressources utiles sur la clusterisation incluent notamment Blattman (2015), Cameron & Miller (2015) (qui contient également une analyse utile comparant la clusterisation des erreurs-types aux effets fixes), et les notes du TD 14.771 du MIT.

Technique de bootstrap 

Le bootstrap non-paramétrique, ou de rééchantillonnage, consiste à traiter l’échantillon d’origine comme une population à partir de laquelle on va tirer d’autres échantillons aléatoires. En pratique, les unités de l’échantillon d’origine sont rééchantillonnées de manière aléatoire, généralement avec remise, à partir de l’échantillon d’origine. Chacun de ces tirages donne lieu à un nouvel ensemble de données au sein duquel certaines observations apparaissent plusieurs fois et d’autres pas du tout (il est d’usage de constituer ces pseudo-échantillons avec le même nombre d’observations N que l’échantillon d’origine). À partir de la distribution des estimations dans tous ces pseudo-échantillons, on peut calculer une erreur-type valide pour l’estimation d’origine, à condition que l’échantillon d’origine soit raisonnablement représentatif de la population d’origine en termes de couverture (et donc que l’on puisse raisonnablement supposer que la distribution du paramètre que l’on souhaite estimer est une estimation non-paramétrique de la distribution au sein de la population) (Cameron & Miller 2015). En cas d’échantillonnage en grappes, au lieu de procéder à un tirage des unités d’observation avec remise, on procède à un tirage des grappes avec remise. 

Notons que, comme dans le cas de la randomisation, il est important de définir la graine, ou valeur initiale, lorsque vous rédigez votre code afin de permettre à d’autres personnes (ou à vous-même dans le futur) de répliquer vos résultats. Par défaut, le nombre de réplications bootstrap est parfois fixé à 50 pour limiter le temps de calcul, mais ce nombre est généralement trop faible pour les résultats d’un article de recherche. Cameron & Trivedi (2005) suggèrent d’effectuer 400 réplications lorsque la technique de bootstrap est utilisée pour calculer les erreurs-types, même si d’autres utilisations (par exemple les intervalles de confiance) en nécessitent généralement davantage. En théorie, le fait de procéder à un très grand nombre de réplications est censé être bénéfique, puisque la procédure suppose un nombre infini d’observations et de réplications. Toutefois, en pratique, le bootstrap converge rapidement lorsque le nombre de réplications augmente, et un nombre fini de réplications est donc suffisant.

Le bootstrap suppose une linéarité approximative et une distribution normale de l’estimateur (Horowitz 2001). Il suppose également que les observations sont indépendantes (bien que la méthode des grappes autorise une dépendance à l’intérieur des grappes, à condition que les grappes elles-mêmes soient indépendantes). Si les erreurs sont indépendantes mais non identiquement distribuées, la méthode dite du bootstrap « sauvage » est plus adaptée. 

Le bootstrap sauvage permet de tenir compte de l’hétéroscédasticité des résidus en créant des pseudo-échantillons de tirages des βx+e et βx-e ajustés (où les accents circonflexes habituels sur β et e sont omis pour des raisons de fonctionnalité du site Internet) (Wu 1986). Le bootstrap sauvage est également utile dans les contextes où la taille des grappes varie ou lorsqu’elles sont peu nombreuses. En effet, cette technique a démontré son efficacité avec seulement cinq grappes (Cameron et al. 2008 et l’article de blog de Berk Ozler). Toutefois, cette méthode peut également être utilisée dans des contextes où il y a peu de grappes traitées ou lorsque l’instrument est faible. Le bootstrap sauvage est particulièrement utile lorsque les méthodes classiques d’inférence ne sont pas fiables parce que les hypothèses propres aux grands échantillons ne sont pas respectées. 

Voici quelques ressources utiles sur le bootstrap :

Pour Stata, le Coder's Corner du CSAE donne un exemple de code pour un bootstrap prenant en compte trois dimensions. Pour les bootstraps sauvages : voir la commande boottest écrite par les utilisateurs (et l’exemple de code fourni par le Coder's Corner du CSAE).

  • Pour obtenir vos estimations en utilisant la technique du bootstrap, utilisez l’option vce des commandes regress/xtregress.

Sous R, le package boot est un outil flexible pour le bootstrap. Pour plus d’informations sur l’estimation par bootstrap des coefficients, voir l’article de John Fox & Sanford Weisberg intitulé « Bootstrapping Regression Models in R » (2018), ainsi que l’exemple de code ci-dessous.

**** Stata Code ****

regress y x1 x2 x3,  vce(bootstrap reps(50) seed(20200121))

/* You can cluster the bootstrapped standard errors by adding 
the cluster option inside the vce brackets, as in 
vce(bootstrap, cluster(clustervar)), where clustervar denotes the
clustering variable (e.g., school or village) */
 
#### R Code ####

# Sets up the standard error bootstrap function:
# The first two arguments (data, indices) are necessary for the "boot" function,
## and then the rest of the function is customizable based on which 
## statistic you would like to bootstrap

boot_function <- function(data, indices, formula){
  d <- data[indices, ]
  obj <- lm(formula, d) ##Sets up the object being bootstrapped
  coefs <- summary(obj)$coefficients ##Pulls the coefficients from the regression
  coefs[, "Std. Error"] ##Pulls the standard errors from the coefficients
}
set.seed( ) ##Set the seed so that the code is replicable
# Performs the bootstrap with "R" number of replications
seboot <- boot(data, boot_function, R = 1000, formula = y ~ x1+x2+x3)
 
  • Pour toute commande ne relevant pas de l’estimation ou tout programme écrit par les utilisateurs sous Stata, utilisez le préfixe bootstrap, qui permet également la clusterisation.
  • Pour les commandes ne relevant pas de l’estimation sous R, modifiez la fonction initiale initiée grâce à la commande boot.
**** Stata Code ****

/* For non-estimation commands such as obtaining the mean, use e.g., */

bootstrap, mean=r(mean), reps(200) seed(20200121): summarize x1

/* The bootstrap prefix can also be used with your own programs. 
Using the example from Cameron & Trivedi (2005), the point estimates 
and standard errors of a user-written program called poissrobust 
can be bootstrapped using: */

bootstrap _b _se, reps(100) seed(20200121): poissrobust

/* _b returns the point estimate, _se the bootstrapped standard 
error, and poissrobust is a user-written program (omitted here). 
A similar approach should be taken for two-step estimators (e.g., 
using a control function approach), where the standard errors for the 
two stages need to be bootstrapped together. */
 
#### R Code ####

# As in example above, first sets up a function with
## the necessary first two arguments
my.mean = function(data, indices) {
  return(mean(data[indices])) ##Returns the mean
}
# Then bootstraps the mean using the "boot" function
Boot.mn<-boot(Treat$outcome, my.mean,R=400 )
 

L’inférence basée sur la randomisation

L’inférence basée sur la randomisation considère que l’échantillon de l’étude constitue l’univers complet des unités éligibles. Ce principe se distingue de l’approche classique du calcul des valeurs-p pour les tests de Student, où l’on considère que l’échantillon de l’étude est tiré d’une population plus large. 

Avec l’inférence basée sur la randomisation, les variations des variables de résultat sont dues à l’assignation du traitement. Comme il n’y a pas de variation d’échantillonnage, les différences observées au niveau des variables de résultat sont exactes (en d’autres termes, ce sont des différences dans la population). L’inférence basée sur la randomisation teste alors l’hypothèse nulle stricte selon laquelle l’effet du traitement est nul pour tous les participants, c’est-à-dire l’hypothèse nulle selon laquelle le traitement n’est pas pertinent (et n’a eu aucun effet sur la moyenne, la variance, etc.) (Young 2019). 

Dans la pratique, les valeurs-p exactes sont calculées en maintenant fixes les covariables et les variables de résultat, mais en réassignant le traitement de manière aléatoire dans les données. La valeur-p exacte est alors la fraction des résultats de toutes les configurations potentielles d’assignation du traitement qui ont produit une estimation de l’effet du traitement au moins aussi importante que celle de l’assignation réelle. Elle se distingue des valeurs-p calculées selon l’approche classique, qui correspondent à la probabilité d’observer la différence entre les moyennes des variables de résultat s’il n’y avait en réalité aucune différence entre ces moyennes dans les bases d’échantillonnage à partir desquelles les groupes ont été constitués.

Au moment de la rédaction de ce guide, l'inférence basée sur la randomisation est de plus en plus fréquemment utilisée à la place de l’approche classique, décrite ci-dessous, pour estimer les erreurs-types et les valeurs-p. Cette situation s’explique par le fait que les tests de Student sont moins fiables lorsque la taille des groupes est inégale ou lorsque la distribution des résultats est asymétrique, comme c’est parfois le cas avec les données des évaluations aléatoires (Young 2019, Gerber & Green 2012, Green n.d.).

Voici quelques ressources utiles sur l’inférence basée sur la randomisation :

  • L’article de 2019 d’Alwyn Young offre une vue d’ensemble utile de l’inférence basée sur la randomisation et de ses motivations
  • L'article de blog publié par Uri Simonsohn en 2021 présente une nouvelle analyse de l’article de Young (2019) utilisant une méthode différente pour calculer des erreurs-types robustes 
  • Athey & Imbens (2017) abordent les problèmes que posent les approches basées sur la régression pour analyser les données des évaluations aléatoires
  • Le guide méthodologique d’EGAP, par Don Green, fournit plus d’informations sur les utilisations de cette méthode, ainsi qu’un exemple de code R
  • Gerber & Green (2012) adoptent une approche des valeurs-p reposant sur l’inférence basée sur la randomisation
  • Le wiki DIME de la Banque Mondiale fournit une présentation générale de l’inférence basée sur la randomisation

Sous Stata : Voir l’article de 2017 de McKenzie sur le blog Development Impact pour savoir comment appliquer les procédures d’inférence basée sur la randomisation sous Stata

Sous R : Voir l’exemple de code tiré du guide méthodologique d’EGAP rédigé par Don Gree

Divers

Utiliser des poids d’échantillonnage

La question de savoir quand et comment il convient d’utiliser des poids dans l’analyse fait l’objet d'un vaste débat. Sur cette question, l’analyse de Solon et al. (2013) est une référence utile, également résumée dans un article de blog de Jed Friedman.

Si l’échantillon de l’étude est un échantillon aléatoire tiré à partir d’une population plus large, il est possible d’utiliser des poids pour pouvoir généraliser les résultats (qu’il s’agisse de résultats analytiques ou de statistiques sommaires) à l’ensemble de la population. Ce point est particulièrement important lorsque l’échantillonnage est disproportionné, c’est-à-dire lorsque certains groupes ont été volontairement sur- ou sous-échantillonnés, de sorte que l’échantillon n’est pas représentatif de la population de référence dans son ensemble si l’on ne tient pas compte de la probabilité de chaque groupe d’être sélectionné au sein de l’échantillon. Concevoir un échantillon qui soit représentatif de la population dans son ensemble est coûteux à grande échelle, et les essais contrôlés randomisés à plus petite échelle ne sont pas forcément conçus de la sorte. L’enquête LSMS de la Banque mondiale et l’enquête CPS menée par le Bureau du recensement des États-Unis sont deux exemples d’ensembles de données conçus pour l’inférence à l’échelle de la population. Stata dispose d’une suite complète de commandes d’enquête pour analyser les données d’enquête, et ce guide de UCLA  contient de plus amples informations concernant la conduite d’une analyse appliquée des données d’enquête dans Stata.

Les poids peuvent également être utilisés pour corriger la non-réponse ou l’attrition. Si les décisions de participation (à l’enquête) sont connues et peuvent être expliquées par des variables observées, il est possible de remédier à ces différences en procédant à une repondération. Le plus souvent, cependant, la participation (à l’enquête) dépend de variables non observées. Le ministère américain de la santé et des services sociaux propose un guide sur la correction de la non-réponse, et Reig (2017) décrit les différentes étapes de la pondération d’un échantillon, y compris la construction des poids, et fournit un extrait de code sous R.

Sous Stata : Lorsque vous procédez à un échantillonnage stratifié disproportionné, vous pouvez utiliser pweight.

Sous R : Lorsque vous procédez à un échantillonnage stratifié disproportionné, vous pouvez utiliser le package survey.

**** Stata Code ****

reg y x1 x2 [pweight=n]

/* where n (the weight) is equal to the inverse of the probability 
of being included in the sample due to the sampling design. */

/* note: when using pweight, standard errors are robust */
 
#### R Code ####

# Uses package "survey"

# First step sets up the survey design; 
## id= is for the cluster variable: if there is none put either ~1 or ~0. 
## Weights is for the weighting variable. 
SurvDesign <- survey:: svydesign(id= ~1, weights = n, data = “”)

# Second step is running the regression w/the appropriate survey design
SurvEst <- survey:: svyglm(y ~ x1+x2, design = SurvDesign)
 

Lors de la phase d’analyse, les chercheurs sont amenés à prendre de nombreuses décisions, qui vont de la construction des variables au choix d’inclure des covariables, en passant par l’utilisation de poids d’échantillonnage. Ces décisions peuvent avoir des conséquences majeures sur l’ampleur et la signification (voire parfois le signe) des résultats. Si certaines de ces décisions peuvent être anticipées avant la collecte des données et spécifiées à l’avance, beaucoup seront tributaires de circonstances imprévisibles lors de la mise en œuvre de la recherche sur le terrain. 

On peut effectuer une analyse de sensibilité pour voir comment les résultats varient pour différents modèles ou sous différentes hypothèses. Une telle analyse permet d’évaluer la robustesse des résultats et de dissiper les inquiétudes concernant la spécification du modèle. Les formes les plus courantes d’analyse de sensibilité sont l’analyse de l’impact des valeurs aberrantes, de la non-conformité, de l’attrition, de la non-réponse, des changements dans la définition des variables de résultat, des différentes méthodes de prise en compte de l’existence de grappes au sein de l’échantillon, et de l’inclusion de covariables. 

Des normes commencent à s’imposer concernant la démonstration de la robustesse des résultats à différentes hypothèses. Elles consistent notamment à présenter la distribution des variables de résultat et d’autres variables clés à des fins de vérification. Il est également de plus en plus fréquent que les auteurs présentent plusieurs spécifications en parallèle dans le même tableau (il peut s’agir, par exemple, de spécifications incluant ou non des effets fixes ou des covariables, ou appliquant différentes bornes ou hypothèses concernant l’attrition), afin de montrer dans quelle mesure les estimations de l’effet du traitement varient sous différentes hypothèses

Exporter les résultats

Sous Stata 

Sous R

  •  

Dernière modification : juillet 2020.

Ces ressources sont le fruit d’un travail collaboratif. Si vous constatez un dysfonctionnement, ou si vous souhaitez suggérer l’ajout de nouveaux contenus, veuillez remplir ce formulaire.

Acknowledgments

Nous remercions Shawn Cole et Ben Morse pour leurs relectures et leurs commentaires précieux. Ce document a été traduit de l’anglais par Marion Beaujard. Toute erreur est de notre fait.

1.
Les effets de traitement hétérogènes seront abordés plus en détail ci-dessous et sont couverts dans le guide méthodologique correspondant d'EGAP.
2.
Un design d'encouragement est une approche où une intervention est disponible pour tout le monde, mais où les participants du groupe de traitement reçoivent une incitation ou un encouragement supplémentaire. Ce type de design peut entraîner un problème de non-conformité bilatérale (deux côtés). Par exemple, dans l’étude de Bettinger et al. (2012), l'un des groupes de traitement bénéficiait d’un accompagnement personnalisé par des professionnels d’H&R Block pour remplir les formulaires de demande d’aide fédérale pour étudiants (FAFSA).
3.
Voir également Freedman (2008) qui met en évidence un biais, ainsi que Green & Aronow (2011) qui montrent que ce biais tend à être négligeable dans des échantillons dépassant 20 unités. Pour approfondir, les articles de blog de Lin (1, 2) discutent des conclusions de Freedman.
4.
Il est important de noter que tester l'attrition sélective sur des variables observables ne permet pas nécessairement de détecter une attrition sélective sur des variables non observables. Une étude récente de Dutz et al. (2021), utilisant des données administratives et des enquêtes en Norvège, révèle un biais de non-réponse important, même après correction des différences observables entre les participants et les non-participants. De plus, ce biais augmente avec le taux de participation.

    In this resource