7 votes

Comment extraire la formule originale (effets fixes et effets aléatoires) d'un objet lmerMod ?

Supposons que nous ayons postulé le modèle linéaire mixte (LMM) suivant, que nous appelons génériquement fit .

library(lme4)

fit <- lmer(Reaction ~ Days + (1 | Subject), data = sleepstudy)

Supposons que nous soyons également intéressés par l'extraction de la formule originale (c'est-à-dire la partie des effets fixes et des effets aléatoires) à partir de fit que nous souhaitons transmettre à un second LMM appelé fit2 . Il est évident que le fait de passer terms(fit) à la formula argument de lmer() ne fonctionne pas.

> fit2 <- lmer(terms(fit), data = sleepstudy)
Error: No random effects terms specified in formula

Question

Existe-t-il un moyen d'extraire la partie des effets fixes et des effets aléatoires de l'étude fit qui peut alors être transmis à lmer() ?

6voto

Mikael Jagan Points 500

Il s'agit d'une norme pour les paquets tels que lme4 pour mettre en œuvre formula dont le seul but est d'extraire la formule(e) des objets du modèle, de sorte que vous n'ayez pas à vous préoccuper des aspects internes de l'objet.

En lme4 il existe un formula pour la classe "merMod" , à savoir lme4:::formula.merMod . Il n'existe pas de méthode pour la classe "lmerMod" mais comme "lmerMod" est une sous-classe directe de "merMod" -Vous pouvez vérifier auprès de showClass("lmerMod") -la méthode pour "merMod" est appelé chaque fois que vous faites formula(<lmerMod>) .

D'où :

formula(fit)
## Reaction ~ Days + (1 | Subject)
formula(fit, fixed.only = TRUE)
## Reaction ~ Days
formula(fit, random.only = TRUE)
## Reaction ~ (1 | Subject)
## <environment: 0x11b3944e0>

(Le dernier appel renvoie une formule dont l'environnement n'est pas ce qu'il devrait être. J'ai créé un question sur GitHub).

lme4 met en œuvre un certain nombre de méthodes d'extraction pour la classe "merMod" . Par exemple, il existe également un model.matrix que vous pouvez utiliser pour extraire les matrices des modèles à effets fixes et aléatoires. La plupart de ces méthodes sont documentées dans ?lme4::`merMod-class` afin que vous puissiez vous y référer à l'avenir.

Pour obtenir une liste complète des méthodes disponibles, il suffit de consulter le site

methods(class = "merMod")
methods(class = "lmerMod")

après le chargement lme4 .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X