A regressão da plotagem resulta de LME4 em r usando treliça (ou outra coisa)
-
18-09-2019 - |
Pergunta
Eu me encaixei em uma regressão usando Lme4 graças a um resposta anterior. Agora que tenho um ajuste de regressão para cada estado, gostaria de usar treliça para plotar gráficos QQ para cada estado. Eu também gostaria de plotar gráficos de erros para cada estado em um formato de treliça. Como faço um gráfico de treliça usando os resultados de uma regressão LME4?
Abaixo está uma amostra simples (sim, eu gosto de uma boa aliteração) usando dois estados. Eu gostaria de fazer uma treliça de dois painéis feita com o objeto se encaixa.
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)
Solução
Ao invés de usar lmList
, Eu recomendaria o pacote mais geral Plyr.
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
é um quadro de dados R regular e, portanto, é fácil plotar.
Outras dicas
Não tenho certeza de que você possa colocar isso em treliça facilmente. O que você tem em fits
é um objeto S4 contendo um slot .data com uma lista de padrão lm
objetos:
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))
Este último enredo simplesmente plota o gráfico padrão de 2x2 para lm
Objetos duas vezes, uma vez para cada elemento da lista de objetos ajustados. Use o which
argumento para plot
selecionar subconjuntos destes ou para outros diagnósticos de regressão.
Se você realmente quiser lattice
Gráficos de previsto vs real, você pode ter que programar isso.
Eu tive alguns problemas com o Lme4 :: lmlist. Por exemplo, o resumo não parece funcionar. Então você pode ter alguns problemas por causa disso.
Portanto, mesmo que eu use o LMER, em vez do LME, tenho chamado explicitamente o NLME :: lmlist. Então resumo etc. funcionará.