Deux packages
R fonctionne par packages. Un package est un ensemble d'algorithme, de commandes et autres permettant des opérations plus ou moins complexes. En gros, R peut faire des trucs tout seul mais pour faire des MLM, il vaut mieux passer par des packages.
Mais les packages sont développés par qui veut. Ce qui signifie qu'il y des bons packages et des mauvais packages. Les bons packages sont des packages qui... enfin bon, vous voyez la suite.
Classiquement, pour réaliser un MLM sous R, on utilise soit lme4
, soit nlme
. Voyons leurs spécificités (pas de panique, un tableau comparatif est proposé à la fin, vous pouvez y bondir de suite).
lme4
Ce package a été développé par Bates et al. (2015 ; nombreuses mises à jour) pour l'analyse de modèles linéaires mixtes et de modèles linéaires mixtes généralisés.
Syntaxe
Comme R fonctionne par lignes de commandes, les auteurs du lme4 ont essayé de simplifier les choses en proposant la syntaxe suivante :
model <- lmer(y ~ facteur.fixe.1 + facteur.fixe.2 + facteur.fixe.1:facteur.fixe.2 + (1|subjets), data=bdd, REML=F)
Détaillons cette commande :
model<-
un grand classique de R qui signifie : "ce qui arrive après la "<-
" sera enregistré dans un objet appelé "model
".
lmer()
est la fonction issue du package lme4 pour construire le modèle.
y
est notre VD. La lettre doit être remplacée par le nom de la variable tel qu'il apparaît dans la base de donnée bdd
.
~
signifie "voilà par quoi j'aimerais prédire ma VD".
facteur.fixe.1
et facteur.fixe.2
sont évidemment nos facteurs fixes. Comme pour la VD, nous devons utiliser leurs noms tels qu'ils apparaissent dans la base de données bdd
.
+
signifie : "ajoute l'argument (le facteur fixe) suivant"
:
signifie : "interaction". + facteur.fixe.1:facteur.fixe.2
signifie donc : "ajoute l'interaction entre le facteur fixe 1 et le facteur fixe 2.
(1|sujets)
stipule les effets aléatoires. Ici, nous avons "j'autorise chaque sujet à avoir son propre intercept"
data=bdd
Nous permet de dire à partir de quelle base de données nous voulons construire le modèle
REML=F
Veut dire "n'utilise pas la méthode REML, utilise plutôt la méthode ML"
Syntaxe, les effets aléatoires
Avec la fonction lmer()
, nous pouvons spécifier des relations entre les facteurs aléatoires. C'est l'exemple du sujet qui appartient à une classe qui appartient à une école, etc.
Test et interprétation du modèle
lme4
ne vous donnera pas de valeurs p. Quoi quoi quoi ??? Mais mais mais ??? La raison est statistique mais relève aussi d'un choix des auteurs. Pour faire simple : calculer les ddl (qui conditionnent les valeurs p) pour les différents coefficients (facteurs) est aussi simple dans les MLM que de compter le nombre de pièces de Lego dans une construction. Les relations entre les facteurs sont complexes, les observations souvent corrélées, etc. Or, pour se baser sur une statistique appelant une valeur p, il faut bien des ddl.
Heureusement, il existe des alternatives :
Utiliser le package
lmerTest
qui fournit des valeurs p approximatives basées sur des ddl à la Satterthwaite ou Kenward-RogerUtiliser les indices de vraisemblance
nlme
Ce package a été développé par Pinheiro & Bates (2000 ; nombreuses mises à jour) pour l'analyse de modèles linéaires et non linéaires mixtes.
Syntaxe
Là aussi, les auteurs ont été sympas avec les utilisateurs et ils ont proposé une syntaxe pour construire et analyser nos modèles. Et en plus, elle ressemble fortement à celle de lme4 :
model <- lme(y ~ facteur.fixe.1 + facteur.fixe.2, random = ~ 1 | sujet, data = bdd)
La syntaxe étant similaire, son interprétation équivaut à celle de lmer
model<-
un grand classique de R qui signifie : "ce qui arrive après la "<-
" sera enregistré dans un objet appelé "model
".
lmer()
est la fonction issue du package lme4 pour construire le modèle.
y
est notre VD. La lettre doit être remplacée par le nom de la variable tel qu'il apparaît dans la base de donnée bdd
.
~
signifie "voilà par quoi j'aimerais prédire ma VD".
facteur.fixe.1
et facteur.fixe.2
sont évidemment nos facteurs fixes. Comme pour la VD, nous devons utiliser leurs noms tels qu'ils apparaissent dans la base de données bdd
.
+
signifie : "ajoute l'argument (le facteur fixe) suivant"
:
signifie : "interaction". + facteur.fixe.1:facteur.fixe.2
signifie donc : "ajoute l'interaction entre le facteur fixe 1 et le facteur fixe 2.
Petite différence toutefois pour les effets aléatoires :
random = ~ 1 | sujet
est différent de lmer mais veut dire la même chose.
Syntaxe, les effets aléatoires
Tout comme la fonction lmer()
, la fonction lme()
permet de stipuler l'emboîtement de facteurs aléatoire. Mais en plus, elle permet de modéliser les corrélation entre ces facteurs.
Test et interprétation du modèle
Avec le package nlme
, nous pouvons avoir nos fameuses valeur p. Pourquoi ? Parce que c'est plus simple pour l'utilisateur. L'argument paraît simpliste mais pas tant que ça en réalité. nlme utilise également une approximation mais au niveau des tests inférentiels appliqués aux effets (les tests de Wald). Le hic, c'est que ces tests offrent une approximation plutôt fiable surtout dans les cas de modèles plutôt simples et d'échantillons plutôt élevés. Notez que je dis "plutôt", simplement parce que je n'ai pas trouvé de valeurs seuils fiables et consensuels sur la complexité du modèle ou le nombre d'observations nécessaires. Cela étant dit, je n'ai pas souvent noté de grandes différences entre les deux packages sur mes propres modèles.
Comparaison des deux packages[EN CONSTRUCTION]
Usage
Se veux super rigoureux et précis
Se veut pratique
Modèles
Modèles linéaires et non linéaires mixtes
Modèles linéaires mixtes & modèles linéaires généralisés mixtes
Méthode d'estimation
ML & REML
ML & REML
Effets aléatoires
Peut modéliser les structures les plus complexes
Peut modéliser les structures les plus courantes
Tests d'effets fixes
Fournit des valeurs p sur la base de tests de Wald
N'en fournit pas
Utiliser lmerTest
Dernière mise à jour