modelos mixtos lineales generalizados r

mixtos - Cómo trazar los resultados de un modelo mixto.



modelos lineales mixtos en r (3)

Aqui hay algunas sugerencias.

library(ggplot2) library(lme4) library(multcomp) # Creating datasets to get same results as question dataset <- expand.grid(experiment = factor(seq_len(10)), status = factor(c("N", "D", "R"), levels = c("N", "D", "R")), reps = seq_len(10)) dataset$value <- rnorm(nrow(dataset), sd = 0.23) + with(dataset, rnorm(length(levels(experiment)), sd = 0.256)[experiment] + ifelse(status == "D", 0.205, ifelse(status == "R", 0.887, 0))) + 2.78 # Fitting model model <- lmer(value~status+(1|experiment), data = dataset) # First possibility tmp <- as.data.frame(confint(glht(model, mcp(status = "Tukey")))$confint) tmp$Comparison <- rownames(tmp) ggplot(tmp, aes(x = Comparison, y = Estimate, ymin = lwr, ymax = upr)) + geom_errorbar() + geom_point() # Second possibility tmp <- as.data.frame(confint(glht(model))$confint) tmp$Comparison <- rownames(tmp) ggplot(tmp, aes(x = Comparison, y = Estimate, ymin = lwr, ymax = upr)) + geom_errorbar() + geom_point() # Third possibility model <- lmer(value ~ 0 + status + (1|experiment), data = dataset) tmp <- as.data.frame(confint(glht(model))$confint) tmp$Comparison <- rownames(tmp) ggplot(tmp, aes(x = Comparison, y = Estimate, ymin = lwr, ymax = upr)) + geom_errorbar() + geom_point()

Uso lme4 en R para ajustar el modelo mixto

lmer(value~status+(1|experiment)))

donde el valor es continuo, el estado (N / D / R) y el experimento son factores, y obtengo

Linear mixed model fit by REML Formula: value ~ status + (1 | experiment) AIC BIC logLik deviance REMLdev 29.1 46.98 -9.548 5.911 19.1 Random effects: Groups Name Variance Std.Dev. experiment (Intercept) 0.065526 0.25598 Residual 0.053029 0.23028 Number of obs: 264, groups: experiment, 10 Fixed effects: Estimate Std. Error t value (Intercept) 2.78004 0.08448 32.91 statusD 0.20493 0.03389 6.05 statusR 0.88690 0.03583 24.76 Correlation of Fixed Effects: (Intr) statsD statusD -0.204 statusR -0.193 0.476

Me gustaría representar gráficamente la evaluación de efectos fijos. Sin embargo, parece que no hay función de trazado para estos objetos. ¿Hay alguna manera en que pueda representar gráficamente los efectos fijos?


Me gustan los gráficos de intervalo de confianza de coeficientes, pero puede ser útil considerar algunos gráficos adicionales para comprender los efectos fijos.

Robando el código de simulación de @Thierry:

library(ggplot2) library(lme4) library(multcomp) dataset <- expand.grid(experiment = factor(seq_len(10)), status = factor(c("N", "D", "R"), levels = c("N", "D", "R")), reps = seq_len(10)) dataset$value <- rnorm(nrow(dataset), sd = 0.23) + with(dataset, rnorm(length(levels(experiment)), sd = 0.256)[experiment] + ifelse(status == "D", 0.205, ifelse(status == "R", 0.887, 0))) + 2.78 model <- lmer(value~status+(1|experiment), data = dataset)

Eche un vistazo a la estructura de los datos ... se ve equilibrado ..

library(plotrix); sizetree(dataset[,c(1,2)])

Puede ser interesante hacer un seguimiento de la correlación entre los efectos fijos, especialmente si ajusta diferentes estructuras de correlación. Hay un buen código proporcionado en el siguiente enlace ...

http://hlplab.wordpress.com/2012/03/20/correlation-plot-matrices-using-the-ellipse-library/

my.plotcorr( matrix(c(1, .891, .891, .891, 1, .891, .891, .891, 1), nrow=3) )

Finalmente, parece relevante observar la variabilidad en los 10 experimentos, así como la variabilidad en el "estado" dentro de los experimentos. Todavía estoy trabajando en el código para esto mientras lo rompo en datos no balanceados, pero la idea es ...

My2Boxes(m=4,f1=dataset$experiment,f2=dataset$status,x=dataset$value,color=c("red","yellow","green"))

Finalmente, el ya mencionado libro de Piniero y Bates (2000) favoreció fuertemente el enrejado de lo poco que he hojeado. Tal vez algo como trazar los datos en bruto ...

lattice::xyplot(value~status | experiment, groups=experiment, data=dataset, type=c(''p'',''r''), auto.key=F)

Y luego trazando los valores ajustados ...

lattice::xyplot(fitted(model)~status | experiment, groups=experiment, data=dataset, type=c(''p'',''r''), auto.key=F)


Usando coefplot2 (en r-forge):

Robando el código de simulación de @Thierry:

set.seed(101) dataset <- expand.grid(experiment = factor(seq_len(10)), status = factor(c("N", "D", "R"), levels = c("N", "D", "R")), reps = seq_len(10)) X <- model.matrix(~status,dataset) dataset <- transform(dataset, value=rnorm(nrow(dataset), sd = 0.23) + ## residual rnorm(length(levels(experiment)), sd = 0.256)[experiment] + ## block effects X %*% c(2.78,0.205,0.887)) ## fixed effects

Modelo de ajuste:

library(lme4) model <- lmer(value~status+(1|experiment), data = dataset)

Trama:

install.packages("coefplot2",repos="http://r-forge.r-project.org") library(coefplot2) coefplot2(model)

editar :

Con frecuencia he tenido problemas con la versión R-Forge. Este respaldo debería funcionar si la compilación de R-Forge no funciona:

install.packages("coefplot2", repos="http://www.math.mcmaster.ca/bolker/R", type="source")

Tenga en cuenta que la dependencia de coda ya debe estar instalada.