2017-05-30 2 views
0

Je travaille sur un modèle mixte utilisant la fonction lmer. Je veux obtenir des p-values ​​pour tous les effets fixes et aléatoires. Je suis capable d'obtenir des p-values ​​pour des effets fixes en utilisant différentes méthodes mais je n'ai rien trouvé pour les effets aléatoires. Quelle que soit la méthode que j'ai trouvée sur Internet, c'est de faire un modèle nul pour la même chose et ensuite obtenir les p-valeurs par comparaison. Puis-je avoir une méthode par laquelle je n'ai pas besoin de faire un autre modèle? Mon modèle ressemble à: mod1 = lmer (Out ~ Var1 + (1 + Var2 | Var3), données = ensemble de données)p valeurs pour les effets aléatoires dans lmer

Répondre

0

Vous devez faire cela par comparaison de modèles, autant que je sache. Le package lmerTest dispose d'une fonction appelée step, qui réduit votre modèle aux seuls paramètres significatifs (fixes et aléatoires) en fonction d'un certain nombre de tests différents. La documentation n'est pas entièrement claire sur la façon dont tout est fait, donc je préfère de beaucoup utiliser la comparaison de modèles pour obtenir des tests spécifiques.

Pour votre modèle, vous pouvez tester la pente aléatoire en spécifiant:

mod0 <- lmer(Out ~ Var1 + (1 + Var2 | Var3), data = dataset, REML=TRUE) 
mod1 <- lmer(Out ~ Var1 + (1 | Var3), data = dataset, REML=TRUE) 
anova(mod0, mod1, refit=FALSE) 

Cela vous montrera le test logarithmique de vraisemblance et statistique de test (distribué chi carré). Mais vous testez ici deux paramètres: la pente aléatoire de Var2 et la covariance entre les pentes aléatoires et les intersections aléatoires. Vous avez donc besoin d'un ajustement p-valeur:

1-(.5*pchisq(anova(mod0,mod1, refit=FALSE)$Chisq[[2]],df=2)+ 
    .5*pchisq(anova(mod0,mod1, refit=FALSE)$Chisq[[2]],df=1)) 

En savoir plus sur ces tests here ou here.

+0

Merci pour votre réponse. Mais, je cherche une réponse où je n'ai pas besoin d'une comparaison. Dans la recherche de la même chose, j'ai une nouvelle approche. Veuillez commenter si je fais bien ou pas. Voici la méthode: Je calcule des coeffs d'effets aléatoires en utilisant la fonction ranef() et les erreurs standard pour la même chose en utilisant la fonction se.ranef() sous le paquet de bras. Maintenant, les coefficients/erreurs standards me donneront les valeurs t. En utilisant 2 * pt (-abs (tval.ranefs), df = dof), je calcule les p-values. Le seul doute que j'ai est à propos de dof. Pouvez-vous me suggérer, que devrais-je prendre comme dof pour les effets aléatoires? –