Retour à la leçon·Leçon 4 sur 8·Quand personne n'a randomisé
Un meilleur équilibre, six écoles en moins
Le même diaporama que les téléchargements, rendu sous forme de page. Lancez le diaporama pour le présenter en plein écran — les flèches ou un clic avancent d'une diapositive, Échap quitte.
Ce que couvre cette leçon
- L'appariement, en un paragraphe
- Appariez les écoles
- Quelles six écoles sont parties, et pourquoi cela compte
- Ce que « lui ressemble » devrait signifier
- Vérifiez le recouvrement avant d'apparier, pas après
- Quatre choses à rapporter, toujours
- Ce que l'appariement ne peut pas faire
- Rapportez-le en entier
- La suite
Notes du présentateur
L'appariement ramène le déséquilibre initial de 3,35 points à 1,41 et donne une estimation de −0,71 au lieu de −0,96. Il y parvient en écartant six des quinze écoles du programme — les six aux scores initiaux les plus élevés — si bien que la réponse porte désormais sur d'autres écoles que la question.L'appariement, en un paragraphe
- Trouvez, pour chaque unité traitée, une unité non traitée qui lui ressemble ; ne comparez que les paires — Tout le…
Notes du présentateur
Trouvez, pour chaque unité traitée, une unité non traitée qui lui ressemble ; ne comparez que les paires. Tout le reste de la méthode est un choix sur « qui lui ressemble » et sur ce qu'il faut faire quand aucune telle unité n'existe. L'attrait est de rendre la comparaison explicite. Le coût est que la seconde moitié de cette phrase — que les paires — change la population dont parle la réponse, et elle le fait discrètement.Appariez les écoles — En Python (suite)
import pandas as pd import numpy as np treated = schools[schools["feeding_programme"]].sort_values("baseline") control = schools[~schools["feeding_programme"]].sort_values("baseline") used, pairs = set(), [] for _, c in control.iterrows(): available = treated[~treated["school_id"].isin(used)] nearest = (available["baseline"] - c["baseline"]).abs().idxmin() used.add(treated.loc[nearest, "school_id"]) pairs.append({"control": c["school_id"], "treated": treated.loc[nearest, "school_id"], "base_c": c["baseline"], "base_t": treated.loc[nearest, "baseline"], "gain_c": c["gain"], "gain_t": treated.loc[nearest, "gain"]})Appariez les écoles — En Python (suite)
matched = pd.DataFrame(pairs) print(f"{len(matched)} pairs from {len(treated)} treated and {len(control)} control")Appariez les écoles — En R
library(MatchIt) m <- matchit(feeding_programme ~ baseline, data = schools, method = "nearest", ratio = 1) summary(m)Appariez les écoles
- Neuf paires à partir de quinze écoles traitées et neuf témoins — L'appariement un pour un sans remise ne peut produire…
Notes du présentateur
Neuf paires à partir de quinze écoles traitées et neuf témoins. L'appariement un pour un sans remise ne peut produire au plus qu'autant de paires que le plus petit groupe a d'unités, si bien que six écoles traitées n'ont pas de partenaire et quittent l'analyse.Appariez les écoles
Avant appariement Après Écoles traitées 15 9 Écoles témoins 9 9 Écart initial +3,35 pts +1,41 pt Estimation −0,96 pt −0,71 pt Erreur-type 1,29 1,22 Appariez les écoles
- L'équilibre s'est amélioré et l'estimation a à peine bougé — ce qui est le résultat qu'on espère : cela dit que les…
Notes du présentateur
L'équilibre s'est amélioré et l'estimation a à peine bougé, ce qui est le résultat qu'on espère : cela dit que les différences de différences n'étaient pas portées par l'écart initial.Quelles six écoles sont parties, et pourquoi cela compte — En Python
dropped = treated[~treated["school_id"].isin(used)] print(dropped[["school_id", "baseline", "gain"]].round(4)) print(f"dropped mean baseline: {dropped['baseline'].mean():.4f}") print(f"kept mean baseline: {matched['base_t'].mean():.4f}")Quelles six écoles sont parties, et pourquoi cela compte — En R
# Which units matching threw away is the first table to print, not the last.Quelles six écoles sont parties, et pourquoi cela compte
- Les six écoles écartées sont les six aux plus hauts scores initiaux de littératie — de 53,9 % à 65,5 %, contre une…
- Ce n'est pas un défaut de l'appariement ; c'est l'appariement qui vous dit quelque chose de vrai — Les neuf écoles…
- Mais cela change l'affirmation — L'estimation appariée répond à « parmi les écoles dont la littératie initiale est…
Notes du présentateur
Les six écoles écartées sont les six aux plus hauts scores initiaux de littératie — de 53,9 % à 65,5 %, contre une moyenne de 55,8 % pour les écoles traitées appariées. Elles ont été écartées parce que le groupe témoin ne contient aucune école ayant obtenu un score aussi élevé : il n'y a rien à quoi les comparer. Ce n'est pas un défaut de l'appariement ; c'est l'appariement qui vous dit quelque chose de vrai. Les neuf écoles témoins ne peuvent pas parler pour les écoles du programme les plus performantes, parce qu'aucune école témoin de ce niveau n'existe. Mais cela change l'affirmation. L'estimation appariée répond à « parmi les écoles dont la littératie initiale est inférieure à environ 60 %, qu'a fait le programme ? » — et c'est une question plus étroite que celle que le rapport se proposait de traiter.Ce que « lui ressemble » devrait signifier
Approche Apparier sur À employer quand Exacte Des valeurs identiques de quelques variables catégorielles Peu de covariables, grands échantillons Plus proche voisin sur un score de propension La probabilité prédite d'être traité Beaucoup de covariables Exacte grossière Des valeurs regroupées en classes Vous voulez un niveau d'équilibre garanti Notes du présentateur
Apparier sur une seule variable est une simplification pédagogique. En pratique le choix se fait entre trois approches.Ce que « lui ressemble » devrait signifier — En Python
import statsmodels.formula.api as smf ps = smf.logit("feeding_programme ~ baseline + size + district", data=schools).fit(disp=0) schools["pscore"] = ps.predict(schools) print(schools.groupby("feeding_programme")["pscore"].describe()[ ["min", "mean", "max"]].round(3))Ce que « lui ressemble » devrait signifier — En R
glm(feeding_programme ~ baseline + size + district, data = schools, family = binomial())Ce que « lui ressemble » devrait signifier
- Un score de propension est un nombre unique résumant de nombreuses covariables — et apparier dessus équivaut à apparier…
- Ce n'est pas un moyen d'obtenir plus de données — Le score réduit la dimensionnalité ; il ne crée pas de comparateurs…
Notes du présentateur
Un score de propension est un nombre unique résumant de nombreuses covariables, et apparier dessus équivaut à apparier sur toutes à la fois — ce qui le rend utile quand il y a plus de covariables qu'un petit échantillon ne peut en apparier exactement. Ce n'est pas un moyen d'obtenir plus de données. Le score réduit la dimensionnalité ; il ne crée pas de comparateurs là où il n'y en a pas.Vérifiez le recouvrement avant d'apparier, pas après — En Python
t = schools[schools["feeding_programme"]]["pscore"] c = schools[~schools["feeding_programme"]]["pscore"] print(f"treated range {t.min():.3f}–{t.max():.3f}") print(f"control range {c.min():.3f}–{c.max():.3f}") print(f"treated units above the control maximum: {(t > c.max()).sum()}")Notes du présentateur
C'est la vérification que l'exercice du cours de régression a découverte à ses dépens sur les deux programmes PCIMA, et elle s'applique ici sans changement.Vérifiez le recouvrement avant d'apparier, pas après — En R
# Plot the two propensity score distributions. The tails are the whole story.Vérifiez le recouvrement avant d'apparier, pas après
- Les unités hors de la plage de l'autre groupe n'ont pas de contrefactuel dans les données — L'appariement les écarte,…
Notes du présentateur
Les unités hors de la plage de l'autre groupe n'ont pas de contrefactuel dans les données. L'appariement les écarte, ce qui est honnête ; l'ajustement par régression les garde et extrapole, ce qui ne l'est pas. C'est la vraie différence entre les deux méthodes, et c'est une meilleure raison de préférer l'appariement que n'importe quelle affirmation sur le biais.Quatre choses à rapporter, toujours
- Combien d'unités ont été écartées, et lesquelles — Le premier tableau, non une note de bas de page
- L'équilibre avant et après — Les différences standardisées sur chaque covariable, les deux colonnes, pour qu'un lecteur…
- Quelle population l'estimation décrit désormais — Une phrase, dans les mots qu'emploie un responsable de programme — «…
- L'estimation non appariée également — Si l'appariement a sensiblement changé la réponse, c'est en soi un constat sur le…
Notes du présentateur
Combien d'unités ont été écartées, et lesquelles. Le premier tableau, non une note de bas de page. L'équilibre avant et après. Les différences standardisées sur chaque covariable, les deux colonnes, pour qu'un lecteur voie ce que l'appariement a acheté. Quelle population l'estimation décrit désormais. Une phrase, dans les mots qu'emploie un responsable de programme — « les écoles dont la littératie initiale est sous 60 % », non « la région de support commun ». L'estimation non appariée également. Si l'appariement a sensiblement changé la réponse, c'est en soi un constat sur le degré auquel la comparaison dépendait des unités qu'il a écartées.Ce que l'appariement ne peut pas faire
- Il ne peut pas corriger un facteur de confusion non mesuré — Deux écoles aux scores initiaux identiques peuvent encore…
- Il ne peut pas créer un groupe témoin — Si les unités non traitées sont systématiquement différentes, l'appariement…
- Il ne supprime pas le besoin d'un protocole — Appariement plus point de départ font des différences de différences sur…
Notes du présentateur
Il ne peut pas corriger un facteur de confusion non mesuré. Deux écoles aux scores initiaux identiques peuvent encore différer par la raison pour laquelle l'une a été sélectionnée. L'appariement équilibre ce sur quoi vous avez apparié et rien d'autre — ce qui est exactement la limite de l'ajustement par régression, atteinte par un autre chemin. Il ne peut pas créer un groupe témoin. Si les unités non traitées sont systématiquement différentes, l'appariement rapportera un excellent équilibre sur une poignée de paires et gardera le silence sur tous les autres. Il ne supprime pas le besoin d'un protocole. Appariement plus point de départ font des différences de différences sur un sous-ensemble ; l'appariement seul est une coupe transversale mieux élevée. L'estimation ci-dessus est le premier cas, et combiner les deux est généralement plus solide que l'un ou l'autre.Rapportez-le en entier — Exemple (suite)
School feeding and literacy, matched difference-in-differences Nearest-neighbour matching on baseline literacy, 1:1 without replacement. 9 matched pairs from 15 treated and 9 control schools. 6 of 15 programme schools were discarded: SCH05, SCH12, SCH14, SCH15, SCH19, SCH21. Their mean baseline literacy is 60.7% against 55.8% for the matched treated schools; no control school scored high enough to match them. Baseline imbalance +3.35 points before matching, +1.41 after. Estimate -0.71 points, SE 1.22, on 9 pairs. Unmatched estimate -0.96 points, 95% CI -3.48 to +1.56. The matched estimate describes schools with baseline literacy below about 60%. It does not describe the six highest-performing programme schools,Rapportez-le en entier — Exemple (suite)
which have no comparator in this data. Matching balances the covariates it was given. It does not address why these schools were selected for the programme.Rapportez-le en entier
- La liste nommée des écoles écartées est ce qui rend ceci rapportable — Un lecteur peut vérifier si les six parties sont…
Notes du présentateur
La liste nommée des écoles écartées est ce qui rend ceci rapportable. Un lecteur peut vérifier si les six parties sont les six qui intéressent le plus le programme, et aucune statistique de résumé ne le lui dira.La suite
- L'appariement et les différences de différences bâtissent tous deux un groupe de comparaison à partir d'unités qui n'ont pas été affectées par une règle.
Notes du présentateur
L'appariement et les différences de différences bâtissent tous deux un groupe de comparaison à partir d'unités qui n'ont pas été affectées par une règle. La leçon suivante prend le cas inverse — un programme où une règle a tout décidé, nettement, à un nombre — et constate que deux des trois choses qu'exige un tel protocole sont déjà dans les données.