web-dev-qa-db-fra.com

Comment obtenir les coefficients et leurs intervalles de confiance dans les modèles à effets mixtes?

Dans les modèles lm et glm, j'utilise les fonctions coef et confint pour atteindre l'objectif:

m = lm(resp ~ 0 + var1 + var1:var2) # var1 categorical, var2 continuous
coef(m)
confint(m)

Maintenant, j'ai ajouté un effet aléatoire au modèle - utilisé des modèles à effets mixtes en utilisant la fonction lmer du paquetage lme4. Mais alors, les fonctions coef et confint ne fonctionnent plus pour moi!

> mix1 = lmer(resp ~ 0 + var1 + var1:var2 + (1|var3)) 
                                      # var1, var3 categorical, var2 continuous
> coef(mix1)
Error in coef(mix1) : unable to align random and fixed effects
> confint(mix1)
Error: $ operator not defined for this S4 class

J'ai essayé de google et d'utiliser la documentation mais sans résultat. S'il te plait, oriente moi dans la bonne direction.

EDIT: Je me demandais aussi si cette question s’inscrivait mieux dans https://stats.stackexchange.com/ mais j’estime qu’elle est plus technique que statistique, j’en ai donc conclu qu’elle convenait mieux ici (SO) ... que faire? tu penses?

26
TMS

Deux nouveaux packages, lmerTest et lsmeans , permettent de calculer des limites de confiance de 95% pour les sorties lmer et glmer. Peut-être que vous pouvez examiner ces? Et coefplot2 , je pense pouvoir le faire aussi (bien que, comme le souligne Ben, ci-dessous, de manière peu sophistiquée, à partir des erreurs standard sur les statistiques de Wald, par opposition aux approximations de Kenward-Roger et/ou Satterthwaite df dans lmerTest et lsmeans) ... Dommage qu'il n'y ait toujours pas de fonctions de traçage intégrées dans le package lsmeans (comme dans le package effects(), qui renvoie également des limites de confiance de 95% sur les objets lmer et glmer mais le fait en remettant en place un modèle sans aucun des facteurs aléatoires, ce qui est évidemment pas correct).

12
Tom Wenseleers

Je suggère que vous utilisiez le bon vieux temps (dans le paquet nlme). Il a une configuration, et si vous avez besoin d’une configuration des contrastes, il existe une série de choix (estimable dans les modèles généraux, contraste dans les contrastes, total dans Multcomp).

Pourquoi les valeurs p et la confint sont absentes dans lmer: voir http://finzi.psych.upenn.edu/R/Rhelp02a/archive/76742.html .

8
Dieter Menne

En supposant une approximation normale pour les effets fixes (ce que confint aurait également fait), nous pouvons obtenir des intervalles de confiance de 95% en 

estimation + 1,96 * erreur type. 

Ce qui suit ne s'applique pas aux composantes de la variance/effets aléatoires. 

library("lme4")
mylm <- lmer(Reaction ~ Days + (Days|Subject),  data =sleepstudy)

# standard error of coefficient

days_se <- sqrt(diag(vcov(mylm)))[2]

# estimated coefficient

days_coef <- fixef(mylm)[2]

upperCI <-  days_coef + 1.96*days_se
lowerCI <-  days_coef  - 1.96*days_se
7
julieth

Vous ne savez pas exactement quand il a été ajouté, mais maintenant, confint () est implémenté dans lme4 . Par exemple, l'exemple suivant fonctionne:

library(lme4)
m = lmer(Reaction ~ Days + (Days | Subject), sleepstudy)
confint(m)
5
jciloa

Pour trouver le coefficient, vous pouvez simplement utiliser la fonction de résumé de lme4

m = lm(resp ~ 0 + var1 + var1:var2) # var1 categorical, var2 continuous
m_summary <- summary(m)

avoir tous les coefficients: 

m_summary$coefficient

Si vous voulez l'intervalle de confiance, multipliez l'erreur standard par 1.96:

CI <- m_summary$coefficient[,"Std. Error"]*1.96
print(CI)
1
denis