Quand utiliser un GLMM plutôt qu’une régression linéaire ?
Vous avez collecté des données sur plusieurs sites, plusieurs années, ou avec des mesures répétées sur les mêmes individus ? Félicitations, vos observations ne sont pas indépendantes. Et c’est exactement à ce moment-là qu’une simple régression linéaire devient un mauvais choix.
L’hypothèse d’indépendance, ce talon d’Achille
La régression linéaire classique repose sur quatre hypothèses : linéarité, normalité des résidus, homoscédasticité et… indépendance des observations. C’est la dernière qu’on viole le plus souvent sans s’en rendre compte.
Voici quelques exemples typiques où vos données ne sont pas indépendantes :
- Mesures répétées : vous suivez les mêmes patients sur plusieurs années.
- Effet site : vous échantillonnez plusieurs stations dans des régions différentes.
- Effet année : vous comparez des taux de capture sur plusieurs années consécutives.
- Effet observateur : plusieurs personnes ont collecté les données avec leur propre biais.
- Effet famille : vos sujets viennent de plusieurs familles ou groupes naturels.
Si vous ignorez cette structure, vos erreurs standard seront sous-estimées, vos p-values sembleront plus significatives qu’elles ne le sont, et vos conclusions seront trop optimistes.
La solution : les effets aléatoires
Un modèle mixte (LMM ou GLMM) introduit la notion d’effet aléatoire. Au lieu d’estimer un coefficient pour chaque groupe (ce qui consommerait des degrés de liberté), on estime une variance qui décrit comment les groupes diffèrent entre eux.
La différence avec un effet fixe :
- Effet fixe : « quel est l’effet de CE site spécifique ? » (les niveaux sont eux-mêmes l’intérêt).
- Effet aléatoire : « comment varie l’effet entre les sites ? » (les niveaux sont un échantillon d’une population plus large).
Un exemple concret avec R
Imaginons qu’on étudie la biomasse d’une espèce poisson dans 20 stations, sur 5 ans, avec une covariable de température.
library(lme4)
library(glmmTMB)
# Simulation rapide
set.seed(123)
n_stations <- 20
n_annees <- 5
df <- expand.grid(station = factor(1:n_stations), annee = 2019:2023)
df$temperature <- rnorm(nrow(df), mean = 12, sd = 2)
# Effet station aléatoire
station_eff <- rnorm(n_stations, 0, 1.5)
df$biomasse <- 10 + 0.5 * df$temperature +
station_eff[as.numeric(df$station)] +
rnorm(nrow(df), 0, 1)
# Modèle linéaire simple (FAUX : ignore l'effet station)
lm_naif <- lm(biomasse ~ temperature, data = df)
summary(lm_naif)
# Modèle mixte (CORRECT : station comme effet aléatoire)
lmm <- lmer(biomasse ~ temperature + (1 | station), data = df)
summary(lmm)
Vous remarquerez que les erreurs standard du modèle mixte sont plus larges que celles du LM naif. C’est normal : le modèle mixte tient compte de la corrélation intra-station.
Quand passer au GLMM ?
Le modèle ci-dessus est un LMM (Linear Mixed Model) : la réponse est continue et supposée gaussienne. Mais si votre variable est :
- Binaire (présence/absence) : GLMM logistique avec
family = binomial. - Comptage (nombre d’individus) : GLMM Poisson ou binomiale négative.
- Proportion (taux) : GLMM binomiale avec
cbind(succès, échec). - Zéro-inflatée (beaucoup de zéros) :
glmmTMBavecziformula.
# GLMM Poisson pour des comptages
glmm_pois <- glmmTMB(
comptage ~ temperature + (1 | station),
family = poisson,
data = df
)
summary(glmm_pois)
Les pièges à éviter
- Trop peu de niveaux : si vous avez moins de 5 niveaux dans un facteur, n’en faites pas un effet aléatoire (mettez-le en fixe).
- Singular fit : si la variance aléatoire estimée est très proche de 0, le modèle est sur-paramétrisé. Simplifiez la structure.
- Convergence : les GLMM convergent mal avec peu de données.
glmmTMBest souvent plus robuste quelme4.
À retenir
Dès que vos données ont une structure hiérarchique ou répétée, le LM classique est inapproprié. Les modèles mixtes (LMM/GLMM) sont la solution élégante : ils capturent la variabilité entre groupes sans gaspiller de degrés de liberté. Investir une journée pour les maîtriser, c’est gagner toute une carrière d’analyses plus rigoureuses.

Réponses