Suite à une discussion au téléphone l'autre jour avec Elsa, j'ai voulu rajouter un petit billet - un peu technique - sur la multicolinéarité. Ou comment interpréter le signe (et la valeur) d'un coefficient dans une régression multiple.
- Interpréter une régression avec des variables explicatives corrélées
> library(mnormt)
> set.seed(1)
> Z=rmnorm(200,c(0,0),matrix(c(1,-.8,-.8,1),2,2))
> Y=1+2*Z[,1]+.5*Z[,2]+rnorm(200)
Si l'on se contente d'analyses univariées, on notera que
semble décroitre avec
.> summary(lm(Y~Z[,2]))
Call:
lm(formula = Y ~ Z[, 2])
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.0229 0.1132 9.038 <2e-16 ***
Z[, 2] -1.0717 0.1171 -9.155 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.6 on 198 degrees of freedom
Multiple R-squared: 0.2974, Adjusted R-squared: 0.2938
F-statistic: 83.81 on 1 and 198 DF, p-value: < 2.2e-16

,
on s'aperçoit que l'impact de
sur
va plutôt dans
l'autre sens, avec un signe positif, et significativement positif,> summary(lm(Y~Z[,1]+Z[,2]))
Call:
lm(formula = Y ~ Z[, 1] + Z[, 2])
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.95647 0.07597 12.591 < 2e-16 ***
Z[, 1] 2.04287 0.13082 15.615 < 2e-16 ***
Z[, 2] 0.45621 0.12541 3.638 0.000351 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.073 on 197 degrees of freedom
Multiple R-squared: 0.686, Adjusted R-squared: 0.6828
F-statistic: 215.2 on 2 and 197 DF, p-value: < 2.2e-16
Graphiquement, on a le modele suivant

croit fortement avec
, mais a
fixé, on note que
est croissante avec
. L'intuition derrière est qu'il faut regarder l'impact de
sur
pour des individus qui se ressemblent - ou identique -
c'est à dire
avec des valeurs de
proches. Si l'on considère le
sous-échantillon des petites
valeurs de
, on obtient> I=Z[,1]<(-1)
> plot(Z[,2],Y,xlab="",ylab="")
> abline(lm(Y[I]~Z[I,2]),col="red",lwd=2)

,
- Interprétation sur le problème des tailles des classes






