Données groupées : effets aléatoires VS effets fixes

Ce type de modèle est utilisé en particulier pour rendre compte de composantes « inobservées » du modèle : par exemple, les qualités pédagogiques des enseignants sont rarement « mesurées » dans des données, mais il est possible qu’elles aient un effet sur la réussite des élèves de leurs classes. Formellement, on se trouve dans le cas où on veut expliquer les variations d’une variable Y. On dispose de variables « explicatives » X, mais on soupçonne qu’elles ne raconteront qu’une partie de l’histoire. D’autres caractéristiques, inobservées, sont également corrélées avec les variations de la variable d’intérêt Y (et éventuellement avec les variables explicatives). Ces composantes inobservées peuvent être communes à plusieurs observations.

Le cas le simple est celui d’une variable continue, pour laquelle on spécifie le modèle linéaire suivant, avec une variable explicative x :

y_{ij}=\alpha+\beta x_{ij}+u_{ij}

où l’indice i correspond à une observation, et l’indice j au « groupe » à laquelle elle appartient (remarque : avec des données de panel, ce groupe correspond à l’individu, qu’on indicera souvent par i et l’observation la date, qu’on indicera par t). Le principe des modèles à effets fixes ou aléatoires est de supposer que le terme d’erreur u comprend une composante spécifique au groupe auquel il appartient (par exemple, l’effet de partager le même enseignant pour tous les élèves d’une classe), et un terme aléatoire spécifique à l’observation considérée. On écrit donc u_{ij}=\alpha_j+\epsilon_{ij}.

Pourquoi c’est important ? La première réponse évidente pour un économètre est que si ces termes d’erreurs communs sont corrélés avec les variables explicatives (par exemple, si l’affectation des enseignants dans les classes dépend des caractéristiques des élèves), les paramètres seront biaisés. En fait, même dans le cas a priori favorable où il n’y aurait pas de corrélation entre \alpha_j et les caractéristiques (dans notre exemple, une affectation aléatoire des enseignants et des élèves), il est important de tenir compte dans l’estimation de la présence de ces composantes inobservées communes à plusieurs observations. Le calcul « standard » de la précision des estimateurs repose en effet sous l’hypothèse que les termes d’erreurs individuels sont indépendants entre eux. La présence de ces termes communs contredit cette hypothèse : en pratique, on peut montrer qu’on risque de sur-estimer la précision des coefficients estimés (ie., on risque de conclure qu’une caractéristique a un effet significatif sur notre variable d’intérêt alors que ce n’est pas le cas). Enfin, on peut tout simplement souhaiter mesurer ces effets groupés : par exemple pour mesurer un « effet maître », ou la valeur ajoutée d’un établissement. Dans ce cas, ce ne sont plus simplement des paramètres de « nuisance » dont on souhaite se débarrasser, mais l’objet d’intérêt en tant que tel.

Comment faire en pratique ? La solution la plus directe est d’estimer simplement l’ensemble des effets groupés \alpha_j, en ajoutant des indicatrices par exemple. Cette solution permet de ne pas faire d’hypothèse sur ces termes groupés : en particulier, on autorise le fait qu’ils puissent être corrélés avec les variables observables introduites dans le modèle. L’estimation de \alpha_j repose alors sur le fait que l’on a plusieurs observations pour le même groupe j. Si ce nombre est faible (par exemple, si on a seulement trois ou quatre observations temporelles pour une même unité dans des données de panel), cette estimation risque d’être assez imprécise. C’est pourquoi, si on ne s’intéresse pas aux \alpha_j en tant que tel, on préfère en général utiliser une estimation « en différences », en utilisant la spécification linéaire. Les estimations des coefficients des variables observables seront non biaisées, et leur identification repose sur les variations observées entre les observations d’une même groupe. Du coup, il n’est pas possible d’estimer les effets des variables qui ne sont observées qu’au niveau du groupe (hétérogénéité de la classe, caractéristiques observables de l’enseignant comme son ancienneté par exemple).

Du coup, à cette spécification que les économètres appellent « à effets fixes », qui ne fait aucune hypothèse sur la distribution de ces termes groupés, on préfère parfois une spécification « à effets aléatoires ». Cette spécification repose sous l’hypothèse que les effets groupe \alpha_j suivent une certaine distribution (en général normale) sur l’ensemble des groupes. On va donc simplement estimer la variance de ces groupes. En revanche, cette modélisation suppose que (pour plus de précision, voir par exemple ce document).

De manière caricaturale, en général les économètres préfèrent les effets fixes et les statisticiens (non économètres) préfèrent les effets aléatoires. On peut voir ce problème comme un arbitrage classique biais / variance. Les estimations à effets fixes sont asymptotiquement (i.e. si on a beaucoup d’observations) sans biais, mais aussi moins précises. Avec un nombre fini d’observations, le risque pourrait être d’obtenir un estimateur finalement « plus loin » de la vraie valeur. De manière intuitive, la portée de ces arguments va dépendre du nombre d’observations, mais aussi de sa répartition entre les groupes (nombre de groupes, nombre d’observations par groupe) et du degré de corrélation éventuelle entre ces effets de contexte et variables explicatives.

On peut essayer de vérifier ces intuitions sur des données simulées.

Par exemple, supposons qu’on dispose de nclass=200 classes de nstud=30 élèves :

nclass <- 200
nstud <- 30

On a un effet classe (les \alpha_j) :

class.effect0 <- rnorm(n=nclass, m=1, sd=0.5)  

que l’on réplique pour tous les élèves

class.effect <- rep(class.effect0, each=nstud)

On définit une variable observable student.effect (par exemple, le niveau initial de l’élève) qui est corrélée avec les effets classes class.effect, la corrélation étant définie par corr (on commence par la fixer à 0, mais on la fera varier après) :

corr<-0
student.effect <- corr*class.effect+rnorm(nstud*nclass,m=0,sd=0.3)

Au final, on génère la table data.set

data.set <- data.frame(class.id = rep(1:nclass, each=nstud),
class.effect <- class.effect, student.id = 1:(nstud*nclass),
student.effect <- student.effect, epsilon=rnorm(nstud*nclass,m=0,sd=0.5))

avec la variable d’intérêt outcomes (par exemple, le niveau scolaire à l’issue de l’année scolaire), qui dépend de l’effet classe et de la variable observable, ce dernier étant \beta (ici fixé à 2)

beta<-2 
data.set$outcomes <- data.set$class.effect+beta*data.set$student.effect+data.set$epsilon 

La structure des données peut être illustrée sur ce graphique (où on n’a conservé que 5 classes).

illustration_random
Supposons qu’on souhaite surtout estimer \beta, voyons ce que donnent les spécifications à effets aléatoires puis celles à effets fixes :

summary(lmer(outcomes~1+student.effect+(1|class.id),data=data.set)) 
## Linear mixed model fit by REML ['lmerMod']
## Formula: outcomes ~ 1 + student.effect + (1 | class.id)
##    Data: data.set
## 
## REML criterion at convergence: 9387.1
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -4.0096 -0.6660 -0.0131  0.6455  3.7916 
## 
## Random effects:
##  Groups   Name        Variance Std.Dev.
##  class.id (Intercept) 0.2346   0.4844  
##  Residual             0.2498   0.4998  
## Number of obs: 6000, groups:  class.id, 200
## 
## Fixed effects:
##                Estimate Std. Error t value
## (Intercept)     1.01475    0.03485   29.11
## student.effect  2.02378    0.02156   93.85
## 
## Correlation of Fixed Effects:
##             (Intr)
## studnt.ffct 0.004

Attention, dans l’estimation ci dessus les « fixed effects » correspondent aux coefficients des variables observées (ici constante et student.effect). La terminologie est différente de celle des économètres, qui appellent « effets fixes » les termes inobservés \alpha_j
, lorsqu’on ne fait d’hypothèse sur leur distribution statistique.

summary(plm(formula=outcomes~student.effect,data=data.set,model=c("within"),index=c("class.id")))
## Oneway (individual) effect Within Model
## 
## Call:
## plm(formula = outcomes ~ student.effect, data = data.set, model = c("within"), 
##     index = c("class.id"))
## 
## Balanced Panel: n=200, T=30, N=6000
## 
## Residuals :
##     Min.  1st Qu.   Median  3rd Qu.     Max. 
## -2.01000 -0.33500 -0.00616  0.32400  1.85000 
## 
## Coefficients :
##                Estimate Std. Error t-value  Pr(>|t|)    
## student.effect 2.024329   0.021574  93.832 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Total Sum of Squares:    3647.3
## Residual Sum of Squares: 1448.3
## R-Squared:      0.6029
## Adj. R-Squared: 0.58921
## F-statistic: 8804.4 on 1 and 5799 DF, p-value: < 2.22e-16

Les deux estimations sont (pratiquement) identiques. Même en terme de précision, le gain du modèle à effets aléatoires n’est pas ici flagrant. Un autre avantage des modèles à effets aléatoires qui est souvent mis en avant est de fournir des estimations plus fiables des effets groupes \alpha_j : elles prennent en particulier en compte les variances respectives du modèles et des effets groupes, et la taille des groupes. Il peut être intéressant d’avoir ce type d’estimation pour estimer par une exemple la “valeur ajoutée”, ou un “effet maître”. Dans l’exemple ci-dessous, ce n’est pas forcément un argument très fort, dans la mesure où les groupes sont assez nombreux. En revanche, si on a peu d’observations par groupe (voir une seule), l’estimation des effets fixes (mais également, sur un échantillon fini, des coefficients d’intérêt) peut être plus problématique. Regardons ce qui se passe par exemple si on a seulement quelques observations par groupes (de 1 à 3 ici).

class.effect <-rep(class.effect0,times=sample(1:3,nclass,replace=TRUE))

Les résultats avec les effets aléatoires :

## Linear mixed model fit by REML ['lmerMod']
## Formula: outcomes ~ 1 + student.effect + (1 | class.id)
##    Data: data.set
## 
## REML criterion at convergence: 789.5
## 
## Scaled residuals: 
##      Min       1Q   Median       3Q      Max 
## -3.00494 -0.55580  0.03809  0.55033  2.46647 
## 
## Random effects:
##  Groups   Name        Variance Std.Dev.
##  class.id (Intercept) 0.2398   0.4897  
##  Residual             0.2799   0.5290  
## Number of obs: 382, groups:  class.id, 200
## 
## Fixed effects:
##                Estimate Std. Error t value
## (Intercept)      1.0440     0.0450   23.20
## student.effect   1.9395     0.1118   17.35
## 
## Correlation of Fixed Effects:
##             (Intr)
## studnt.ffct -0.047

et ceux à effets fixes :

## Oneway (individual) effect Within Model
## 
## Call:
## plm(formula = outcomes ~ student.effect, data = data.set, model = c("within"), 
##     index = c("class.id"))
## 
## Unbalanced Panel: n=200, T=1-3, N=382
## 
## Residuals :
##    Min. 1st Qu.  Median 3rd Qu.    Max. 
##  -1.670  -0.196   0.000   0.199   1.290 
## 
## Coefficients :
##                Estimate Std. Error t-value  Pr(>|t|)    
## student.effect  1.87594    0.14125  13.281 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Total Sum of Squares:    99.75
## Residual Sum of Squares: 50.517
## R-Squared:      0.49356
## Adj. R-Squared: -0.066044
## F-statistic: 176.396 on 1 and 181 DF, p-value: < 2.22e-16

Sur cet exemple, l’estimateur à effets fixes est un peu plus éloigné de la vraie valeur du paramètre (même si il n’en est pas significativement différent) que l’estimateur (point estimate) du modèle à effet aléatoire. Il faudrait vérifier sur les estimateurs des effets groupes que le gain en précision est plus élevé. Cependant, on a supposé jusqu’à présent que la variable explicative n’était pas corrélée avec l’effet groupe. Que se passe-t-il si ce n’est pas le cas? Supposons maintenant que student.effect soit corrélée avec l’effet groupe (par exemple, parce qu’on a regroupé les élèves d’un certain niveau dans certaines classes). Cela pourrait être illustrée graphiquement, avec une corrélation élevée (corr=0.8) :


illustration_random_corr0_8

Examinons ce qui se passe avec une corrélation moins élevée entre variable explicative et effet groupe (corr=2), mais des groupes de tailles plus réduites:

corr<-0.2  
nstud=3   

Cette fois les résultats fournis par le modèle à effets aléatoires

## Linear mixed model fit by REML ['lmerMod']
## Formula: outcomes ~ 1 + student.effect + (1 | class.id)
##    Data: data.set
## 
## REML criterion at convergence: 1107.3
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -2.8116 -0.5749  0.0058  0.5720  2.6569 
## 
## Random effects:
##  Groups   Name        Variance Std.Dev.
##  class.id (Intercept) 0.2388   0.4887  
##  Residual             0.2287   0.4782  
## Number of obs: 600, groups:  class.id, 200
## 
## Fixed effects:
##                Estimate Std. Error t value
## (Intercept)     0.96265    0.04178   23.04
## student.effect  2.23025    0.07241   30.80
## 
## Correlation of Fixed Effects:
##             (Intr)
## studnt.ffct -0.312

partent beaucoup plus dans le décor que ceux fournis par le modèle à effets fixes :

## Oneway (individual) effect Within Model
## 
## Call:
## plm(formula = outcomes ~ student.effect, data = data.set, model = c("within"), 
##     index = c("class.id"))
## 
## Balanced Panel: n=200, T=3, N=600
## 
## Residuals :
##     Min.  1st Qu.   Median  3rd Qu.     Max. 
## -1.08000 -0.26200 -0.00734  0.26600  1.10000 
## 
## Coefficients :
##                Estimate Std. Error t-value  Pr(>|t|)    
## student.effect 2.090532   0.076912  27.181 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Total Sum of Squares:    258.16
## Residual Sum of Squares: 90.529
## R-Squared:      0.64932
## Adj. R-Squared: 0.47354
## F-statistic: 738.795 on 1 and 399 DF, p-value: < 2.22e-16

Rappelons que dans un cadre linéaire, lorsqu’il y présomption qu’une telle corrélation existe, on peut toujours utiliser une procédure de Mundlack, en ajoutant la moyenne par classe de la variable explicative endogène au modèle :

moy<-ave(data.set$student.effect,data.set$class.id)
summary(lmer(outcomes ~ 1 +student.effect+
             moy+(1|class.id), data=data.set))
## Linear mixed model fit by REML ['lmerMod']
## Formula: outcomes ~ 1 + student.effect + moy + (1 | class.id)
##    Data: data.set
## 
## REML criterion at convergence: 1079.9
## 
## Scaled residuals: 
##      Min       1Q   Median       3Q      Max 
## -2.82580 -0.58324  0.00199  0.55388  2.60005 
## 
## Random effects:
##  Groups   Name        Variance Std.Dev.
##  class.id (Intercept) 0.2029   0.4504  
##  Residual             0.2269   0.4763  
## Number of obs: 600, groups:  class.id, 200
## 
## Fixed effects:
##                Estimate Std. Error t value
## (Intercept)     0.77935    0.05137  15.172
## student.effect  2.09053    0.07691  27.181
## moy             1.15697    0.21046   5.497
## 
## Correlation of Fixed Effects:
##             (Intr) stdnt.
## studnt.ffct  0.000       
## moy         -0.640 -0.365

Dans ce cadre linéaire, l’estimateur est strictement identique à celui des effets fixes.

Bref, que retenir ? Qu’il n’y a pas de recette miracle ! Les modèles à effets aléatoires sont parfois préférés car ils permettent d’introduire des variables à plusieurs niveaux (par exemple, des variables permettant de décrire la classe commune à l’ensemble des élèves, et des variables individuelles), et d’estimer les effets groupes de manière plus précise (cet argument est surtout pertinent quand la taille des groupes est faible). En revanche, ils peuvent être sévèrement biaisés lorsqu’il y a une corrélation entre les variables explicatives et les effets groupes (ce qui est très souvent le cas). Il faut toujours réfléchir à la spécification qu’on retient…

Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s