Rappresentazione grafica dei risultati di regressione da lme4 in R utilizzando Lattice (o qualcos'altro)

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

  •  18-09-2019
  •  | 
  •  

Domanda

Ho adattare una regressione usando lme4 grazie ad una risposta precedente . Ora che ho una forma di regressione per ogni stato in cui mi piacerebbe usare lattice per tracciare trame QQ per ogni stato. Vorrei anche per tracciare trame di errore per ogni stato in un formato reticolo. Come faccio a fare una trama reticolare utilizzando i risultati di una regressione lme4?

Di seguito è riportato un esempio semplice (sì, mi piace un buon allitterazione) utilizzando due stati. Vorrei fare un reticolo di due pannelli realizzati con le crisi degli oggetti.

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)
È stato utile?

Soluzione

Invece di usare lmList, io consiglierei il pacchetto più generale 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 è un frame di dati R regolare e quindi è facile trama.

Altri suggerimenti

Non sono sicuro che si può ottenere questo in lattice facilmente. Cosa avete in fits è un oggetto che contiene uno slot S4 .Data con un elenco di standard oggetti 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))

Questa ultima trama semplicemente si traccia la trama 2x2 standard per gli oggetti lm due volte, una per ogni elemento della lista degli oggetti a muro. Utilizzare l'argomento which per plot per selezionare sottoinsiemi di questi o per altri sistemi diagnostici di regressione.

Se si vuole realmente trame lattice del predetto vs attuale, potrebbe essere necessario programmare questo.

Ho avuto qualche problema con lme4 :: lmList. Ad esempio, sintesi non sembra funzionare. Quindi, si potrebbe incorrere in alcuni problemi a causa di questo.

Quindi, anche se io uso lmer, invece di LME, Ho chiamato esplicitamente NLME :: lmList invece. Poi sintesi ecc funzionerà.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top