5.4 Utilisation de score de propension : en théorie

Le score de propension est défini comme la probabilité (dans la population et non dans l’échantillon) pour les individus appartenant à chaque strate définie par la valeur des variables de conditionnement, de faire partie du groupe qui fait l’objet de l’intervention. L’intérêt du score de propension est que lui-même définit des strates plus grandes – en fait, les plus grandes possibles – au sein desquelles la situation empirique est assimilable à une expérience aléatoire contrôlée, ou à une expérience naturelle. C’est ce que l’on appelle la propriété équilibrante du score de propension. Ainsi, la comparaison entre les individus qui ont fait l’objet de l’intervention d’une part, et de ceux qui n’en ont pas fait l’objet d’autre part, au sein des strates telles que tous ont la même valeur du score de propension permet d’identifier les effets causaux moyens de l’intervention.

Il existe schématiquement trois façons d’utiliser le score de propension pour identifier les effets causaux moyens au niveau de la population : par stratification, par appariement ou par repondération. Cette section vise à présenter sommairement chacune de ces approches, à partir de l’exemple de l’expérience aléatoire contrôlée défecteusue de Gerber et Green (2000) réanalysée par Imai (2005). Dans toute la section, on fait l’hypothèse que le seul défaut de cette expérimentation tient à ce que la probabilité de recevoir un appel téléphonique incitant à voter varie d’un quartier de New Haven à l’autre, ce qui justifie de considérer que lorsque l’on s’en tient à des comparaisons d’individus au sein du même quartier, la comparaison entre ceux qui ont reçu un appel et ceux qui ne l’ont pas reçu permet d’identifier les effets de l’appel sur la participation électorale.

On choisit par ailleurs d’assimiler momentanément le score de propension et la part d’individus ayant reçu l’appel téléphonique à l’intérieur de chaque quartier. Toute la section 5.5 est consacrée à l’estimation du score de propension à partir des données dont on dispose, et discute en particulier des conséquences de cette assimilation.

5.4.1 Stratification

L’approche par stratification est par certains côtés la plus intuitive lorsque l’on part de la propriété équilibrante du score de propension. Celle-ci affirme qu’à l’intérieur de grandes strates définies par les valeurs du score de propension, la situation empirique est encore assimilable à une expérience aléatoire contrôlée, ou à une expérience naturelle. Par conséquent, la comparaison des individus qui ont reçu un appel téléphonique et de ceux qui n’ont pas reçu un tel appel, à l’intérieur de ces grandes strates – et non seulement à l’intérieur de strates définies par la valeur de toutes les variables de conditionnement – permet d’identifier les effets causaux moyens de l’appel téléphonique.

Définition

L’approche par stratification sur le score de propension consiste à découper la population en grandes strates définies par les valeurs du score de propension, à estimer pour chacune de ces strates l’effet causal moyen de l’intervention par la comparaison des individus selon qu’ils ont fait l’objet ou non de l’intervention, et à faire la moyenne de ces effets causaux moyens au niveau de chaque grande strate, avec des poids proportionnels à la taille de chacune de ces grande strates pour identifier l’effet causal moyen au niveau de la population.

Le fragment de code suivant explicite cette définition à partir des données de Gerber et Green (2000) et Imai (2005).

library(data.table)
library(ggplot2)
library(Matching)

#On récupère les données et on convertit en data.table
data(GerberGreenImai)
GerberGreenImai<-data.table(GerberGreenImai)

#On estime la probabilité d'avoir reçu un appel téléphonique pour chaque
# quartier de New Haven : c'est le score de propension
proba_appel<-GerberGreenImai[,
                             list(score_propension=mean(PHN.C1),
                                  taille=.N),
                             by=c("WARD")]

#On remet ça dans les données
GerberGreenImai<-merge(GerberGreenImai,
                       proba_appel,
                       by=c("WARD"))

#Pour chaque valeur possible du score de propension, on calcule la différence
# entre le taux de participation de ceux qui ont reçu un appel et ceux qui 
# ne l'ont pas reçu
effet_par_score_propension<-GerberGreenImai[score_propension>0,
                                            list(taille=.N,
                                                 effet_causal=
                                                   sum(PHN.C1*VOTED98)/
                                                   sum(PHN.C1)-
                                                   sum((1-PHN.C1)*VOTED98)/
                                                   sum(1-PHN.C1)),
                                            by="score_propension"]


#On réagrège cette effets moyens par grande strate en faisant la moyenne
# avec des poids proportionnels à la taille de chaque grande strate
ATE_stratif<-effet_par_score_propension[,
                                        list(ATE=
                                               sum(taille*effet_causal)/
                                               sum(taille))]
ATE_stratif
##          ATE
## 1: 0.1892938

5.4.2 Appariement

La technique de l’appariement part de l’intuition suivante : en moyenne, il revient au même de calculer, au sein d’une grande strate définie par la valeur du score de propension la différence entre le taux de participation des individus ayant reçu l’appel téléphonique et celui des individus n’ayant pas reçu l’appel, ou bien de faire un grand nombre de tirage aléatoires de couples constitués d’un individu ayant reçu l’appel, et d’un individu n’ayant pas reçu l’appel, de calculer la différence entre leur participation électorale, et enfin de faire la moyenne de ces différences pour tous ces couples.

Définition

L’approche par appariement consiste à apparier à chaque individu ayant reçu l’appel téléphonique (respectivement : n’ayant pas reçu l’appel téléphonique) un individu observé (ou un groupe d’individus observés) qui a la même valeur du score de propension que lui pour créer un ou des couples. Pour chacun de ces couples, on peut calculer un pseudo-effet causal individuel qui est la différence entre la variable qui décrit le comportement de l’individu ayant fait l’objet de l’intervention, et celle qui décrit le comportement de l’individu n’ayant pas fait l’objet de l’intervention. Comme ces pseudo-effets causaux individuels sont calculés à valeur constante du score de propension, on peut en faire la moyenne, qui lorsque l’on utilise des poids inversement proportionnels à la taille du groupe d’individus apparié à l’individu de départ est égale à l’effet causal moyen au niveau de la population.

Le fragment de code suivant explicite cette définition sur les données de Gerber et Green (2000) et Imai (2005).

library(data.table)
library(ggplot2)
library(Matching)

#On récupère les données et on convertit en data.table
data(GerberGreenImai)
GerberGreenImai<-data.table(GerberGreenImai)

#On estime la probabilité d'avoir reçu un appel téléphonique pour chaque
# quartier de New Haven : c'est le score de propension
proba_appel<-GerberGreenImai[,
                             list(score_propension=mean(PHN.C1),
                                  taille=.N),
                             by=c("WARD")]

#On remet ça dans les données
GerberGreenImai<-merge(GerberGreenImai,
                       proba_appel,
                       by=c("WARD"))

#On associe à chaque individu des couples avec :
# tous les individus ayant le même score de propension que lui
# mais qui n'ont pas reçu l'appel téléphonique si l'individu de départ l'a
# reçu, et inversement s'il ne l'a pas reçu

#On met un identifiant individuel dans les données
GerberGreenImai[,
                indiv_id:=as.character(.I)]

#On veut apparier chaque individu à seulement à des individus dont le statut
# vis-à-vis de l'appel téléphonique est le contraire du sien, on crée une 
# variable pour cela
GerberGreenImai[,
                oppose_statut_appel:=1-PHN.C1]

#On peut créer des couples
creation_couple<-merge(GerberGreenImai[score_propension!=0,
                                       c("indiv_id",
                                         "score_propension",
                                         "PHN.C1",
                                         "VOTED98")],
                       GerberGreenImai[score_propension!=0,
                                       c("score_propension",
                                         "oppose_statut_appel",
                                         "VOTED98")],
                       by.x=c("score_propension",
                              "PHN.C1"),
                       by.y=c("score_propension",
                              "oppose_statut_appel"),
                       all.X=TRUE,
                       allow.cartesian=TRUE)

#On calcule le pseudo effet individuel à l'intérieur de chaque couple
creation_couple[,
                effet_indiv:=PHN.C1*(VOTED98.x-VOTED98.y)+
                  (1-PHN.C1)*(VOTED98.y-VOTED98.x)]

#On calcule l'effet causal moyen comme la moyenne de ces pseudo-effets 
# individuels
ATE_matching<-creation_couple[,
                              list(moyenne_indiv=mean(effet_indiv)),
                              by=c("indiv_id")][,
                                                list(ATE=mean(moyenne_indiv))]
ATE_matching
##          ATE
## 1: 0.1892938

5.4.3 Repondération

La technique de repondération est à première vue la moins intuitive des trois approches disponibles. Elle consiste à utiliser le score de propension pour construire un jeu de poids que l’on peut appliquer aux données de telle sorte que lorsque l’on utilise ce jeu de poids, la distribution des caractéristiques observables et des valeurs potentielles dans chacun des groupes définis par le fait d’avoir ou de n’avoir pas fait l’objet de l’intervention est la même que dans la population prise toute entière.

Définition

L’approche par repondération consiste à utiliser un jeu de poids calculés à partir du score de propension tels que lorsqu’on l’utilise pour pondérer les données, la différence entre le comportement moyen du groupe de ceux qui ont fait l’objet de l’intervention et ceux qui n’en on pas fait l’objet identifie l’effet causal moyen de l’intervention au niveau de la population. Ces poids sont inversement proportionnels au score de propension \(p(X_i)\) pour les individus ayant fait l’objet de l’intervention, et inversement proportionnels à son complément \(1-p(X_i)\) pour ceux qui n’en ont pas fait l’objet.

Le fragment de code suivant explicite cette définition à partir des données de Gerber et Green (2000) et Imai (2005). La lectrice ou le lecteur intéressé trouvera en Annexe A.15 une preuve du fait que lorsque l’on utilise ces poids, chacun des groupes défini par le fait d’avoir fait ou non l’objet de l’intervention a la même distribution des caractéristiques observables définies par les variables de conditionnement, et la même distribution des valeurs potentielles de la variable d’intérêt que la population prise dans son ensemble.

library(data.table)
library(ggplot2)
library(Matching)

#On récupère les données et on convertit en data.table
data(GerberGreenImai)
GerberGreenImai<-data.table(GerberGreenImai)

#On estime la probabilité d'avoir reçu un appel téléphonique pour chaque
# quartier de New Haven : c'est le score de propension
proba_appel<-GerberGreenImai[,
                             list(score_propension=mean(PHN.C1),
                                  taille=.N),
                             by=c("WARD")]

#On remet ça dans les données
GerberGreenImai<-merge(GerberGreenImai,
                       proba_appel,
                       by=c("WARD"))

#On va aussi avoir besoin de la part totale des individus
# qui ont reçu l'appel téléphonique
proba_appel_globale<-mean(GerberGreenImai[score_propension!=0]$PHN.C1)

#On calcule le jeu de poids dont on a besoin
GerberGreenImai[,
                poids:=fcase(
                  PHN.C1==1,
                  proba_appel_globale/score_propension,
                  PHN.C1==0,
                  (1-proba_appel_globale)/
                    (1-score_propension)
                )]

#On calcule la différence des taux de participation électorale
# entre ceux qui ont et qui n'ont pas reçu l'appel téléphonique
# avec ce nouveau jeu de poids
ATE_reweighting<-GerberGreenImai[score_propension!=0,
                                 list(ATE=sum(PHN.C1*poids*VOTED98)/
                                        sum(PHN.C1)-
                                        sum((1-PHN.C1)*poids*VOTED98)/
                                        sum(1-PHN.C1))]
ATE_reweighting
##          ATE
## 1: 0.1892938