varianza modelos modelo general fijos factores experimentos entre efectos efecto diseƱo diferencia definicion con componentes anidado analisis aleatorios r random effects lme4

modelos - Extrae variaciones de efectos aleatorios del objeto modelo lme4 mer



efecto anidado (4)

Algunas de las otras respuestas son viables, pero afirmo que la mejor respuesta es usar el método de acceso diseñado para esto: VarCorr (este es el mismo que en el predecesor de nlme , el paquete nlme ).

ACTUALIZACIÓN en versiones recientes de lme4 (versión 1.1-7, pero todo lo que sigue puede aplicarse a las versiones> = 1.0), VarCorr es más flexible que antes y debe hacer todo lo que quiera sin recurrir a la pesca dentro del objeto modelo ajustado.

library(lme4) study <- lmer(Reaction ~ Days + (1|Subject), data = sleepstudy) VarCorr(study) ## Groups Name Std.Dev. ## Subject (Intercept) 37.124 ## Residual 30.991

De forma predeterminada, VarCorr() imprime las desviaciones estándar, pero puede obtener varianzas en su lugar si lo prefiere:

print(VarCorr(study),comp="Variance") ## Groups Name Variance ## Subject (Intercept) 1378.18 ## Residual 960.46

( comp=c("Variance","Std.Dev.") imprimirá ambos).

Para mayor flexibilidad, puede usar el método as.data.frame para convertir el objeto VarCorr , que proporciona la variable de agrupación, las variables de efecto, y la varianza / covarianza o desviación estándar / correlaciones:

as.data.frame(VarCorr(study)) ## grp var1 var2 vcov sdcor ## 1 Subject (Intercept) <NA> 1378.1785 37.12383 ## 2 Residual <NA> <NA> 960.4566 30.99123

Finalmente, la forma cruda del objeto VarCorr (que probablemente no debería meterse con usted si no es necesario) es una lista de matrices de varianza-covarianza con información adicional (redundante) que codifica las desviaciones y correlaciones estándar, así como también como atributos ( "sc" ) dando la desviación estándar residual y especificando si el modelo tiene un parámetro de escala estimado ( "useSc" ).

unclass(VarCorr(fm1)) ## $Subject ## (Intercept) Days ## (Intercept) 612.089748 9.604335 ## Days 9.604335 35.071662 ## attr(,"stddev") ## (Intercept) Days ## 24.740448 5.922133 ## attr(,"correlation") ## (Intercept) Days ## (Intercept) 1.00000000 0.06555134 ## Days 0.06555134 1.00000000 ## ## attr(,"sc") ## [1] 25.59182 ## attr(,"useSc") ## [1] TRUE ##

Tengo un objeto mer que tiene efectos fijos y aleatorios. ¿Cómo extraigo las estimaciones de varianza para los efectos aleatorios? Aquí hay una versión simplificada de mi pregunta.

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

Esto proporciona una salida larga, no demasiado larga en este caso. De todos modos, ¿cómo selecciono explícitamente el

Random effects: Groups Name Variance Std.Dev. Subject (Intercept) 1378.18 37.124 Residual 960.46 30.991

parte de la salida? Quiero los valores en sí mismos.

He echado un largo vistazo a

str(study)

¡y no hay nada allí! También verifiqué todas las funciones de extractor en el paquete lme4 en vano. ¡Por favor ayuda!


Tratar

attributes(study)

Como ejemplo:

> women height weight 1 58 115 2 59 117 3 60 120 4 61 123 5 62 126 6 63 129 7 64 132 8 65 135 9 66 139 10 67 142 11 68 146 12 69 150 13 70 154 14 71 159 15 72 164 > lm1 <- lm(height ~ weight, data=women) > attributes(lm1) $names [1] "coefficients" "residuals" "effects" "rank" [5] "fitted.values" "assign" "qr" "df.residual" [9] "xlevels" "call" "terms" "model" $class [1] "lm" > lm1$coefficients (Intercept) weight 25.7234557 0.2872492 > lm1$coefficients[[1]] [1] 25.72346 > lm1$coefficients[[2]] [1] 0.2872492

El fin.


lmer devuelve un objeto S4, por lo que debería funcionar:

remat <- summary(study)@REmat print(remat, quote=FALSE)

Que impresiones:

Groups Name Variance Std.Dev. Subject (Intercept) 1378.18 37.124 Residual 960.46 30.991

... En general, puede ver la fuente de los métodos de print y summary para los objetos "mer":

class(study) # mer selectMethod("print", "mer") selectMethod("summary", "mer")


> attributes(summary(study))$REmat Groups Name Variance Std.Dev. "Subject" "(Intercept)" "1378.18" "37.124" "Residual" "" " 960.46" "30.991"