Utiliser lmer pour la prédiction

18

Bonjour, j'ai deux problèmes qui sonnent comme des candidats naturels pour les modèles multiniveaux / mixtes, que je n'ai jamais utilisés. La plus simple et que j'espère essayer en introduction est la suivante: les données ressemblent à de nombreuses lignes du formulaire

x y innergroup outergroup

où x est une covariable numérique sur laquelle je veux régresser y (une autre variable numérique), chaque y appartient à un groupe interne et chaque groupe interne est imbriqué dans un groupe externe (c'est-à-dire que tous les y dans un groupe interne donné appartiennent au même groupe externe) . Malheureusement, le groupe interne a beaucoup de niveaux (plusieurs milliers), et chaque niveau a relativement peu d'observations de y, donc j'ai pensé que ce type de modèle pourrait être approprié. Mes questions sont

  1. Comment puis-je écrire ce type de formule à plusieurs niveaux?

  2. Une fois lmer adapté au modèle, comment s'y prendre pour en prévoir? J'ai ajusté quelques exemples de jouets plus simples, mais je n'ai pas trouvé de fonction Predict (). La plupart des gens semblent plus intéressés par l'inférence que par la prédiction avec ce type de technique. J'ai plusieurs millions de lignes, donc les calculs peuvent être un problème, mais je peux toujours les réduire selon les besoins.

Je n'aurai pas besoin de faire la seconde pendant un certain temps, mais je pourrais aussi bien commencer à y penser et à jouer avec. J'ai des données similaires à celles d'avant, mais sans x, et y est maintenant une variable binomiale de la forme . y présente également beaucoup de surdispersion, même au sein des groupes internes. La plupart des ne dépassent pas 2 ou 3 (ou moins), donc pour obtenir des estimations des taux de réussite de chaque y_i, j'ai utilisé l'estimateur de rétrécissement bêta-binomial (\ alpha + k_i) / (\ alpha + \ beta + n_i) , où \ alpha et \ betan y i ( α + k i ) / ( α + β + n i ) α β(n,n-k)nyje(α+kje)/(α+β+nje)αβsont estimés par MLE pour chaque groupe interne séparément. Cela a été quelque peu adéquat, mais la rareté des données me tourmente, donc je voudrais utiliser toutes les données disponibles. D'un point de vue, ce problème est plus facile car il n'y a pas de covariable, mais de l'autre la nature binomiale le rend plus difficile. Quelqu'un a-t-il des conseils de haut niveau (ou bas!)?

grg s
la source
Veuillez vérifier que les parenthèses que j'ai insérées dans la formule de retrait sont là où vous les vouliez.
whuber
1
La 2e partie de votre question (avec une variable binaire) ne devrait-elle pas être une question distincte?
chl

Réponses:

17

L'expression des relations entre les facteurs à l'aide des formules R découle de la notation de Wilkinson, où `` * '' désigne le croisement et l'imbrication `` / '', mais il existe certaines particularités dans la façon dont la formule pour les modèles à effets mixtes, ou plus généralement les effets aléatoires, est gérée. Par exemple, deux effets aléatoires croisés peuvent être représentés par (1|x1)+(1|x2). J'ai interprété votre description comme un cas d'imbrication, tout comme les classes sont imbriquées dans des écoles (imbriquées dans des États, etc.), donc une formule de base avec lmerressemblerait (sauf indication contraire, une gaussianfamille est utilisée par défaut):

y ~ x + (1|A:B) + (1|A)

où A et B correspondent respectivement à vos facteurs internes et externes. B est imbriqué dans A, et les deux sont traités comme des facteurs aléatoires. Dans l'ancien paquet nlme , cela correspondrait à quelque chose comme lme(y ~ x, random=~ 1 | A/B). Si A devait être considéré comme un facteur fixe, la formule devrait se lire y ~ x + A + (1|A:B).

Mais cela vaut la peine de vérifier plus précisément les spécifications de D. Bates pour le paquet lme4 , par exemple dans son prochain manuel, lme4: Modélisation des effets mixtes avec R , ou les nombreux documents disponibles sur la même page Web. En particulier, il est un exemple pour les relations d' emboîtement dans Montage Modèles mixtes linéaires-effets, le paquet lme4 dans R . Le tutoriel de John Maindonald fournit également une belle vue d' ensemble: L'anatomie d'un modèle d' analyse mixte, avec lme4 Forfait R . Enfin, la section 3 de la vignette R sur l' implémentation lme4 comprend un exemple d'analyse d'une structure imbriquée.

Il n'y a pas de predict()fonction dans lme4(cette fonction existe maintenant, voir le commentaire ci-dessous), et vous devez calculer vous-même les valeurs individuelles prédites en utilisant les effets fixes (voir ?fixef) et aléatoires (voir ?ranef) estimés , mais voir également ce fil sur le manque de fonction de prédiction dans lme4 . Vous pouvez également générer un échantillon à partir de la distribution postérieure à l'aide de la mcmcsamp()fonction. Parfois, cependant, cela peut se heurter. Voir la liste de diffusion sig-me pour plus d'informations mises à jour.

chl
la source
3
Pour mettre à jour: lme4inclut désormais une fonction de prédiction inside-r.org/packages/cran/lme4/docs/predict.mermod
Bar
La documentation de predite.merMod est maintenant disponible ici: rdocumentation.org/packages/lme4/versions/1.1-12/topics/…
DirtStats
10

Le package ez contient la fonction ezPredict (), qui obtient des prédictions à partir de modèles lmer où la prédiction est basée uniquement sur les effets fixes. C'est vraiment juste un wrapper autour de l'approche détaillée dans le wiki glmm .

Mike Lawrence
la source
5

J'utiliserais la fonction "logit.mixed" dans Zelig , qui est un wrapper pour lime4 et le rend très pratique pour faire des prédictions et des simulations.

Shige
la source
Il ne semble pas y avoir de méthode predcit () pour logit.mixed dans zelig ..
nassimhddd
3

La version de développement de lme4 a une fonction de prédiction intégrée (predite.merMod). Il peut être trouvé sur https://github.com/lme4/lme4/ .

Le code pour installer les "binaires de développement presque à jour du référentiel lme4 r-forge" se trouve sur la page ci-dessus et est:

install.packages("lme4", repos=c("http://lme4.r-forge.r-project.org/repos", getOption("repos")["CRAN"]))
Martin P
la source
1
notez que ce n'est plus la version de développement, predictest disponible depuis quelques années maintenant.
Ben Bolker
1

Stephen Raudenbush a un chapitre de livre dans le Handbook of Multilevel Analysis sur " Many Small Groups ". Si vous êtes uniquement intéressé par les effets de x sur y et n'avez aucun intérêt pour les effets de niveau supérieur, sa suggestion est simplement d'estimer un modèle d'effets fixes (c'est-à-dire une variable fictive pour tous les regroupements possibles de niveau supérieur).

Je ne sais pas dans quelle mesure cela s'applique à la prédiction, mais j'imagine qu'une partie de ce qu'il écrit est applicable à ce que vous essayez d'accomplir.

Andy W
la source