2.5 Pousser plus loin la dissection en itérant les régressions

Lorsque l’on s’intéresse à la population des salariés étatsuniens, est-il possible en utilisant la méthode des moindres carrés ordinaires de passer de la régression linéaire du salaire sur l’éducation à la régression linéaire du salaire sur l’éducation et une seconde variable, par exemple l’âge ? La réponse est positive. En effet, il revient au même, pour le calcul du coefficient sur la variable d’âge, de (i) régresser le salaire simultanément sur l’éducation et l’âge, ou de (ii) régresser dans un premier temps le salaire et l’âge sur l’éducation, puis les résidus de la régression du salaire sur l’éducation sur les résidus de la régression de l’âge sur l’éducation.

Le fragment de code suivant illustre ce résultat sur les données du Current Population Survey.

library(AER,
        quietly=TRUE)
library(data.table,
        quietly=TRUE)

#On charge dans un premier temps les données du CPS 1985
data("CPS1985")
CPS<-data.table(CPS1985)

#On régresse le salaire sur les variable d'âge et d'éducation (année d'études à 
# partir de 6 ans)
reg_fullmodel<-lm(wage~education + age,
                  data=CPS)
reg_fullmodel
## 
## Call:
## lm(formula = wage ~ education + age, data = CPS)
## 
## Coefficients:
## (Intercept)    education          age  
##     -5.5342       0.8211       0.1050
#On régresse d'abord le salaire uniquement sur l'éducation
reg_wageeduc<-lm(wage~education,
                data=CPS)

#On régresse également l'éducation sur l'âge
reg_ageeduc<-lm(age~education,
                data=CPS)

#On récupère les résidus de chacune de ces régressions
CPS$reg_wageeduc_resid<-reg_wageeduc$residuals
CPS$reg_ageeduc_resid<-reg_ageeduc$residuals

#On régresse enfin les résidus de la deuxième régression sur ceux de la troisième
reg_FWL<-lm(reg_wageeduc_resid~reg_ageeduc_resid,
            data=CPS)
reg_FWL
## 
## Call:
## lm(formula = reg_wageeduc_resid ~ reg_ageeduc_resid, data = CPS)
## 
## Coefficients:
##       (Intercept)  reg_ageeduc_resid  
##        -8.804e-17          1.050e-01
#On compare enfin les coefficients de la première et de la dernière régression
all.equal(as.numeric(reg_fullmodel$coefficients["age"]),
          as.numeric(reg_FWL$coefficients["reg_ageeduc_resid"]))
## [1] TRUE

Ce résultat a bien entendu une valeur plus générale que ce seul exemple.

À retenir

Si \(Y\), \(X_1\) et \(X_2\) sont trois variables aléatoires, alors pour ce qui est du coefficient sur \(X_1\), il revient au même de régresser \(Y\) sur \(X_1\) et \(X_2\) simultanément, ou bien de régresser d’abord \(Y\) sur \(X_2\), puis \(X_1\) sur \(X_2\), et enfin le résidu de la première régression sur le résidu de la seconde.

En d’autres termes, en imposant les contraintes usuelles sur les résidus, si : \[\left\{\begin{array}{c} Y=\alpha_1 + \beta_{11} X_1 + \beta_{12} X_2 + \epsilon_1 \\ Y=\alpha_{2} + \beta_{22} X_2 + \epsilon_2 \\ X_1 = \alpha_3 + \beta_{32} X_2 +\epsilon_3 \\ \epsilon_2 = \alpha_4 + \beta_{43} \epsilon_3 + \epsilon_4 \end{array}\right.\] alors \(\beta_{11} = \beta_{43}\). Ce résultat, qui peut se généraliser au cas multidimensionnel, est connu sous le nom de théorème de Frisch-Waugh-Lovell. La preuve en est détaillée en Annexe A.6.