CommencerCommencer gratuitement

Intercepts à effets aléatoires

Les modèles linéaires dans R estiment des paramètres considérés comme fixes ou non aléatoires, appelés effets fixes. À l’inverse, les paramètres à effets aléatoires supposent que les données partagent une même distribution d’erreur et peuvent produire des estimations différentes en présence de peu de données ou de valeurs aberrantes. Les modèles combinant effets fixes et effets aléatoires sont des modèles à effets mixtes, ou régressions linéaires à effets mixtes.

Le package lme4 ajuste des modèles à effets mixtes (qui incluent à la fois des effets fixes et aléatoires) avec lmer(), en utilisant une formule similaire à lm(). Cependant, les intercepts à effets aléatoires utilisent une syntaxe spéciale :

lmer(y ~ x + (1 | random-effect), data = my_data)

La fonction lmer() exige que le modèle inclue au moins un effet aléatoire, sinon elle renvoie une erreur. Ici, vous allez ajuster un lm() et un lmer(), puis comparer graphiquement les modèles ajustés en utilisant un sous-ensemble des données. Nous fournissons ce code en raison du traitement de données avancé nécessaire, car les effets aléatoires sont généralement peu tracés (et ggplot2 ne propose pas d’options de tracé très adaptées aux modèles à effets mixtes). Dans ce graphique, observez comment les lignes en pointillé provenant des pentes à effets aléatoires se comparent aux lignes pleines issues des pentes à effets fixes.

Remarque : broom.mixed est nécessaire, car le package broom ne prend pas en charge lme4.

Cet exercice fait partie du cours

Modèles hiérarchiques et à effets mixtes en R

Afficher le cours

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# Build a liner model including class as fixed-effect model
lm_out <- ___

# Build a mixed-effect model including class id as a random-effect
lmer_out <- lmer(___ ~ ___ + (1 | ___), data = ___)

# Extract out the slope estimate for mathkind
tidy(lm_out) %>%
    filter(term == "mathkind")
    
tidy(lmer_out) %>%
    filter(term == "mathkind")
Modifier et exécuter le code