Trazado de resultados de la regresión de lme4 en I utilizando Entramado (o algo más)

StackOverflow https://stackoverflow.com/questions/1297698

  •  18-09-2019
  •  | 
  •  

Pregunta

Tengo ajustar una regresión usando lme4 gracias a un respuesta anterior . Ahora que tengo un ajuste de regresión para cada estado que me gustaría utilizar celosía para trazar gráficos QQ para cada estado. También me gustaría trazar parcelas de error para cada estado en un formato de celosía. ¿Cómo hago una parcela de celosía utilizando los resultados de una regresión lme4?

A continuación se muestra un ejemplo sencillo (sí, me gusta una buena aliteración) utilizando dos estados. Me gustaría hacer un enrejado de dos paneles hechos de los ataques de los objetos.

library(lme4)
d <- data.frame(state=rep(c('NY', 'CA'), c(10, 10)), year=rep(1:10, 2), response=c(rnorm(10), rnorm(10)))
fits <- lmList(response ~ year | state, data=d)
¿Fue útil?

Solución

En lugar de utilizar lmList, me gustaría recomendar el paquete plyr más general.

library(plyr)

d <- data.frame(
 state = rep(c('NY', 'CA'), c(10, 10)), 
 year = rep(1:10, 2), 
 response = c(rnorm(10), rnorm(10))
)

# Create a list of models
# dlply = data frame -> list
models <- dlply(d, ~ state, function(df) { 
  lm(response ~ year, data = df)
})

# Extract the coefficients in a useful form
# ldply = list -> data frame
ldply(models, coef)

# We can get the predictions in a similar way, but we need
# to cast to a data frame so the numbers come out as rows,
# not columns.
predictions <- ldply(models, as.data.frame(predict))

predictions es una trama de datos R regular y así es fácil de trama.

Otros consejos

No estoy seguro de que usted puede conseguir esto en celosía con facilidad. Lo que tiene en fits es un objeto que contiene una ranura S4 .Data con una lista de objetos lm estándar:

R> class(fits)
[1] "lmList"
attr(,"package")
[1] "lme4"
R> class(fits@.Data)
[1] "list"
R> class(fits@.Data[[1]])
[1] "lm"
R> op <- par(mfrow=c(2,4))
R> invisible(lapply(fits@.Data, plot))

Esta última trama, simplemente se traza la trama 2x2 estándar para objetos lm dos veces, una para cada elemento de la lista de objetos empotrados. Utilice el argumento which a plot para seleccionar subconjuntos de estos o de otros diagnósticos de regresión.

Si usted quiere realmente parcelas de lattice predicho vs real, puede que tenga que programar esto.

He tenido algunos problemas con lme4 :: lmList. Por ejemplo, no parece Resumen de trabajar. Así que usted podría encontrarse con algunos problemas a causa de eso.

Así que, aunque yo uso LMER, en lugar de LME, he estado llamando explícitamente nlme :: lmList lugar. Entonces Resumen etc. funcionará.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top