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")
<-data.table(CPS1985)
CPS
#On régresse le salaire sur les variable d'âge et d'éducation (année d'études à
# partir de 6 ans)
<-lm(wage~education + age,
reg_fullmodeldata=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
<-lm(wage~education,
reg_wageeducdata=CPS)
#On régresse également l'éducation sur l'âge
<-lm(age~education,
reg_ageeducdata=CPS)
#On récupère les résidus de chacune de ces régressions
$reg_wageeduc_resid<-reg_wageeduc$residuals
CPS$reg_ageeduc_resid<-reg_ageeduc$residuals
CPS
#On régresse enfin les résidus de la deuxième régression sur ceux de la troisième
<-lm(reg_wageeduc_resid~reg_ageeduc_resid,
reg_FWLdata=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.