Comment choisir la bibliothèque nlme ou lme4 R pour les modèles à effets mixtes?


85

Je s'adapter quelques modèles à effets mixtes ( en particulier les modèles longitudinaux) en utilisant lme4dans Rmais je voudrais vraiment maîtriser les modèles et le code qui va avec eux.

Cependant, avant de plonger avec les deux pieds (et d'acheter des livres), je veux être sûr d'apprendre la bonne bibliothèque. J'en ai utilisé lme4jusqu'à présent parce que je trouvais cela plus facile que nlme, mais si nlmec'est mieux pour mes besoins, alors je pense que je devrais l'utiliser.

Je suis sûr que ni est "mieux" d'une manière simpliste, mais j'apprécierais certaines opinions ou pensées. Mes principaux critères sont:

  1. facile à utiliser (je suis psychologue de formation et peu versé dans les statistiques ou la programmation, mais j'apprends)
  2. bonnes caractéristiques pour l'ajustement des données longitudinales (s'il y a une différence ici - mais c'est pour cela que je les utilise principalement)
  3. résumés graphiques bons (faciles à interpréter), encore une fois pas sûr s'il y a une différence ici mais je produis souvent des graphiques pour des personnes même moins techniques que moi, donc de jolis graphes nets sont toujours bons (j'aime beaucoup la fonction xyplot dans le treillis () Pour cette raison).

Comme d'habitude, espérons que cette question ne sera pas trop vague et merci d'avance pour toute sagesse!

Réponses:


68

Les deux paquets utiliser Latticecomme back - end, mais nlmea quelques fonctionnalités intéressantes comme groupedData()et lmList()qui font défaut dans lme4(OMI). D'un point de vue pratique, les deux critères les plus importants semblent toutefois que

  1. lme4étend nlmeavec d'autres fonctions de lien: dans nlme, vous ne pouvez pas ajuster les résultats dont la distribution n'est pas gaussienne, vous lme4pouvez utiliser pour ajuster la régression logistique à effets mixtes, par exemple.
  2. en nlme, il est possible de spécifier la matrice de variance-covariance pour les effets aléatoires (par exemple un AR (1)); ce n'est pas possible dans lme4.

Maintenant, lme4on peut facilement gérer un très grand nombre d'effets aléatoires (d'où le nombre d'individus dans une étude donnée) grâce à sa partie C et à l'utilisation de matrices creuses. Le nlmepaquet a été quelque peu remplacé, lme4alors je ne m'attends pas à ce que les gens passent beaucoup de temps à développer des add-ons nlme. Personnellement, quand j'ai une réponse continue dans mon modèle, j'ai tendance à utiliser les deux packages, mais je suis maintenant familiarisé avec la lme4méthode d'adaptation du GLMM.

Plutôt que d' acheter un livre, jetez un oeil d' abord au projet de livre de Bates Doug sur R-forge: lme4: effets mixtes Modélisation avec R .


5
@ 2) plus précisément, lme4vous pouvez spécifier une structure de covariance diagonale (c'est-à-dire des effets aléatoires indépendants) ou des matrices de covariance non structurées (toutes les corrélations doivent être estimées) ou des matrices de covariance partiellement diagonales et partiellement non structurées pour les effets aléatoires. J'ajouterais également une troisième différence de capacités qui pourrait être plus pertinente pour de nombreuses situations de données longitudinales: nlmevous pouvez spécifier des structures de variance-covariance pour les résidus (à savoir une autocorrélation spatiale ou temporelle ou une hétéroskédasticité), lme4non.
Fabians

@fabians (+1) Ah, merci! N'a pas réalisé lme4permet de choisir différentes structures de VC. Il serait préférable que vous l'ajoutiez dans votre propre réponse, avec d'autres idées que vous pourriez avoir. Je vais upvote. BTW, j'ai aussi réalisé que lmList()c'est disponible dans lme4trop. Il me semble me souvenir d’une discussion à ce sujet sur R-sig-ME.
chl

Une alternative plus rapide? Je dois adapter les modèles à de grands ensembles de données et prendre environ une heure et demie sur mon ordinateur. Il existe de nombreux packages de régression rapide, mais aucun ne semble être capable de traiter des effets aléatoires.
Skan

52

Comme le souligne chl, la principale différence réside dans le type de structure de variance-covariance que vous pouvez spécifier pour les effets aléatoires. Dans lme4vous pouvez spécifier soit:

  • structures de covariance diagonale (c'est-à-dire, appliquer des effets aléatoires mutuellement non corrélés via une syntaxe similaire ~ (1 | group)+ (0 + x1 | group) + (0 + x2 | group))
  • ou des matrices de covariance non structurées (toutes les corrélations sont estimées, ~ (1 + x1 + x2 | group))
  • ou covariance partiellement diagonale, partiellement non structurée ( y ~ (1 + x1 | group) + (0 + x2 | group)où vous estimeriez une corrélation entre l’interception aléatoire et la pente aléatoire x1, mais aucune corrélation entre la pente aléatoire pour x2et l’interception aléatoire et entre la pente aléatoire x2et la pente aléatoire x1).

nlmeoffre une classe beaucoup plus large de structures de covariance pour les effets aléatoires. Mon expérience est que la flexibilité de lme4est suffisante pour la plupart des applications, cependant.

J'ajouterais également une troisième différence de capacités qui pourrait être plus pertinente pour de nombreuses situations de données longitudinales: nlme spécifiez des structures de variance-covariance pour les résidus (c'est-à-dire une autocorrélation spatiale ou temporelle ou une hétéroskédasticité ou une variabilité dépendante de la covariable) dans l' weightsargument (cf ?varFunc), alors qu’il lme4n’autorise que des poids fixes antérieurs pour les observations.

Une quatrième différence est qu’il peut être difficile d’ nlmeadapter des effets aléatoires croisés (partiellement), alors que cela n’est pas un problème lme4.

Vous irez probablement bien si vous vous en tenez à lme4.


1
À l’exception possible (comme vous l’avez signalé) de pouvoir incorporer une autocorrélation temporelle dans nlme mais pas dans lme4. Si le jeu de données est suffisamment volumineux, et si les données ont ce type de structure, cela pourrait être un gros avantage de nlme.
Ben Bolker

22

D'autres ont très bien résumé les différences. Mon impression est que cela lme4convient mieux aux ensembles de données en cluster, en particulier lorsque vous devez utiliser des effets aléatoires croisés. Pour les mesures répétées, les conceptions (y compris de nombreuses conceptions longitudinales) sont toutefois nlmel'outil, car elles ne nlmeprennent en charge que la spécification d'une structure de corrélation pour les résidus. Vous le faites en utilisant l' argument correlationsou coravec un corStructobjet. Il vous permet également de modéliser l'hétéroscédasticité à l'aide d'un varFuncobjet.


13

Il existe en fait un certain nombre de packages dans R pour l’ajustement de modèles à effets mixtes au lme4- delà de et nlme. Il existe un joli wiki géré par le groupe d'intérêt spécial R pour modèles mixtes, qui contient une très bonne FAQ et une page comparant les différents packages .

En ce qui concerne mes opinions sur l’utilisation effective de lme4et nlme: j’ai lme4été généralement plus facile à utiliser en raison de son extension plutôt directe de la syntaxe de base de la formule R. (Si vous devez travailler avec des modèles additifs généralisés, le gamm4package étend cette syntaxe une étape supplémentaire pour vous donner une courbe d'apprentissage fluide.) Comme d'autres l'ont déjà mentionné, vous lme4pouvez gérer des modèles généralisés (autres fonctions de lien et distributions d'erreurs), nlmeLa focalisation sur la fonction de liaison gaussienne lui permet de faire certaines choses très difficiles dans le cas général (spécifier la structure de covariance et certaines choses dépendant du calcul des degrés de liberté, comme les valeurs p, que je vous encourage à déplacer. loin de!).

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.