Traçage Résultats de la régression de lme4 en R à l'aide de treillis (ou autre chose)

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

  •  18-09-2019
  •  | 
  •  

Question

Je s'adapter une régression en utilisant lme4 grâce à une réponse précédente . Maintenant que j'ai un ajustement de régression pour chaque état dans lequel je voudrais utiliser réseau pour tracer des parcelles QQ pour chaque état. Je voudrais également tracer des parcelles d'erreur pour chaque état dans un format de réseau. Comment puis-je faire un tracé en treillis en utilisant les résultats d'une régression lme4?

Voici un exemple simple (oui, j'aime un bon allitération) en utilisant deux états. Je voudrais faire un deux treillis de panneaux fabriqués à partir des ajustements d'objet.

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)
Était-ce utile?

La solution

Au lieu d'utiliser lmList, je vous recommande le paquet plyr plus général.

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 est un cadre régulier de données R et est donc facile à tracer.

Autres conseils

Je ne suis pas sûr que vous pouvez obtenir cela en treillis facilement. Ce que vous avez fits est un objet S4 contenant une fente .Data avec une liste de standard objets lm:

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))

Cette dernière parcelle vous trace simplement le tracé standard 2x2 pour les objets lm deux fois, une fois pour chaque élément de la liste des objets équipés. Utilisez l'argument which à plot pour sélectionner des sous-ensembles de ceux-ci ou pour d'autres diagnostics de régression.

Si vous voulez réellement parcelles lattice de la valeur prédite vs réelle, vous pourriez avoir à programmer.

J'ai eu des problèmes avec lme4 :: lmList. Par exemple, le résumé ne semble pas fonctionner. Donc, vous pourriez rencontrer des problèmes à cause de cela.

Alors, même si je l'utilise lmer, au lieu de lme, j'ai appelé explicitement nlme :: lmList à la place. Ensuite, etc. sommaire fonctionnera.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top