Skip to content

Régression multiniveau (variations inter-/intra-groupe)

Bases théoriques

Dans la régression multiniveau effectuée précédemment, nous avions deux types d'effets: les effets fixes (communs à tout le monde) ainsi que les effets aléatoires (différents pour chaque groupe).

Effets fixes

Effets aléatoires

Cependant, dans un modèle multiniveau, il est nécessaire de séparer les effets de classe (ou effets de groupe) des effets indidivuels. Pour ce faire, nous devons d'abord calculer la moyenne des valeurs du prédicteur pour chaque groupe:

Effets de groupe

Puis soustaire cette moyenne à chacun des membre du groupe, et cela pour chaque groupe. Cela permet de calculer les effets individuels, puisqu'en effectuant la soustraction, cela débarasse les données de l'effet de groupe:

Effets individuals

Note

Même si ce dernier graphique ressemble au graphique des effets aléatoires réalisé dans la régression multiniveau sans la séparation entre individu et classe, nous pouvons néanmoins remarquer que, dans ce graphique-ci, le prédicteur est centré, ce qui permet de visualiser uniquement les effets individuels, sans influence des effets de groupe.

Cependant, il existe également une pente commune à tous les individus. Il s'agit d'une pente fixe, dans laquelle on ne tient pas compte des différents groupes:

Effets individuals

En séparant individu et contexte, nous obtenons donc 3 types d'effets:

  • Les différences entre les classes (effet fixe car commun à toutes les classes).
  • Les effets aléatoires.
  • Les différences entre les individus (effet fixe car commun à tous les individus).

L'équation de cette nouvelle régression multiniveau est donc la suivante:

Régression multiniveau

Avec:

  • y la variable dépendante
  • γ00 l'intercept fixe
  • γ10 la pente fixe (moyenne de la classe)
  • γ20 la pente fixe (écart individuel à la moyenne de la classe)
  • r0j les intercepts aléatoires
  • r1j les pentes aléatoires
  • εji l'erreur

Application

Syntaxe R
# Soit y la variable dépendante, 
# X.bar la pente fixe (moyenne du groupe), 
# X.dif l'autre pente fixe (écart individuel à le moyenne de la classe) 
# et g le groupe
library(lmerTest)
m <- lmer(y ~ 1 + X.bar + X.dif + (1 + X.dif | g), data=data)
summary(m)

Conditions d'application

Conditions d'application

Comme vu précédemment, pour pouvoir être utilisée, la régression multiniveau requiert (dans le cadre de ce cours):

  • Au moins 20 unités au niveau 2 (au moins 20 groupes dans lesquelles sont imbriquées les données).
  • La distribution normale des résidus (distribution normale des erreurs).

Pour tester la distribution normale des erreurs, nous pouvons réaliser un graphique Q-Q:

Syntaxe R
# Soit m le modèle de régression
qqnorm(resid(m))
qqline(resid(m))

Nous pouvons également visualiser la distribution des erreurs dans un histogramme:

Syntaxe R
# Soit m le modèle de régression
hist(resid(m))

Exemple

Voici nos données et notre fichier d'analyse:

Fichiers
multilevel-regression-inter-intra-group.csv
multilevel-regression-inter-intra-group.R

Commençons par activer les librairies nécessaires dans R:

Activation des librairies
library(lmerTest)
library(ggplot2)
library(dplyr)

Puis, importons nos données:

Importation des données
df <- read.csv("multilevel-regression-inter-intra-group.csv")
df$groupe <- as.factor(df$groupe)

Nous devons ensuite trier séparer les effets de groupes des effets individuels:

Préparation des données
df1 <- df %>%
  group_by(groupe) %>%
  mutate(predicteur.bar=mean(predicteur, na.rm=TRUE)) %>%
  mutate(predicteur.dif= predicteur - predicteur.bar) %>%
  as.data.frame()

Réalisons maintenant notre modèle:

Régression multiniveau
m <- lmer(score ~ predicteur.bar + predicteur.dif 
          + (predicteur.dif | groupe), data=df1)

Vérifions ensuite les conditions d'application de la régression:

Vérification de la normalité des résidus
qqnorm(resid(m))
qqline(resid(m))

Graphique Q-Q

Vérification de la normalité des résidus
hist(resid(m))

Histogramme des résidus

Les conditions semblent remplies, nous pouvons donc passer à l'interprétation des résultats:

Interprétation des résultats
summary(m)

Random effects:

Groups Name Variance Std.Dev Corr
groupe (Intercept) 51.212 7.156
predicteur.dif 8.213 2.866 0.86
Residual 3.828 1.957

Fixed effects:

Estimate Std. Error df t value p
(Intercept) 6.2146 2.5033 28.3305 2.483 0.019228 *
predicteur.bar 3.2170 0.8061 17.9980 3.991 0.000857 ***
predicteur.dif 3.5006 0.6413 18.9983 5.458 2.89e-05 ***

Correlation of Fixed Effects:

(Intr) prdctr.b
predictr.br -0.769
predictr.df 0.549 0.000

Grâce à ces résultats, nous pouvons remarquer que les groupes dans lesquels le prédicteur est plus élevé ont tendance à avoir des scores plus élevés (B = 3.22, p<.001). En outre, au niveau individuel, — après avoir supprimé les influences groupales — les individus pour lesquels le prédicteur est élevé ont tendance à avoir également un score plus élevé (B = 3.50, p<.001). Les effets aléatoires sont ici traités comme des termes d'erreurs — mais ce n'est pas toujours le cas.