CommencezCommencez gratuitement

Ordonnées à l'origine à effet aléatoire

Les modèles linéaires dans R estiment des paramètres considérés comme des valeurs fixes (non aléatoires), appelés effets fixes. À l'inverse, les paramètres à effet aléatoire supposent que les données partagent une même distribution d'erreur et peuvent produire des estimations différentes lorsqu'il y a peu de données ou des valeurs aberrantes. Les modèles qui combinent effets fixes et effets aléatoires sont des modèles mixtes, ou des régressions linéaires à effets mixtes.

Le paquet lme4 ajuste des modèles à effets mixtes (modèles avec effets fixes et aléatoires) avec lmer(), qui utilise une formule semblable à lm(). Cependant, les ordonnées à l'origine à effet aléatoire 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 il retourne une erreur. Ici, vous allez ajuster un lm() et un lmer(), puis comparer graphiquement les modèles ajustés à l'aide d'un sous-ensemble des données. Nous fournissons ce code en raison de la préparation de données avancée nécessaire, puisque les effets aléatoires sont habituellement peu représentés dans les graphiques (et ggplot2 n'offre pas non plus de belles options de tracé pour les modèles à effets mixtes). Dans ce graphique, remarquez comment les lignes en pointillé provenant des pentes à effet aléatoire se comparent aux lignes pleines provenant des pentes à effet fixe.

Note : broom.mixed est requis parce que le paquet broom ne prend pas en charge lme4.

Cette activité fait partie du cours

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

Voir le cours

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# 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