Predizione su modelli di effetti misti: cosa fare con gli effetti casuali?


13

Consideriamo questo ipotetico set di dati:

set.seed(12345)

num.subjects <- 10

dose <- rep(c(1,10,50,100), num.subjects)
subject <- rep(1:num.subjects, each=4)
group <- rep(1:2, each=num.subjects/2*4)

response <- dose*dose/10 * group + rnorm(length(dose), 50, 30)

df <- data.frame(dose=dose, response=response, 
                 subject=subject, group=group)

possiamo usare lmeper modellare la risposta con un modello di effetto casuale:

require(nlme)
model <- lme(response ~ dose + group + dose*group, 
             random = ~1|subject, df)

Vorrei utilizzare predictil risultato di questo modello per ottenere, ad esempio, la risposta di un soggetto generico del gruppo 1 a una dose di 10:

pred <- predict(model, newdata=list(dose=10, group=1))

Tuttavia, con questo codice ottengo il seguente errore:

Error in predict.lme(model, newdata = list(dose = 10, group = 1)) : 
cannot evaluate groups for desired levels on 'newdata'

Per liberarmene devo farlo, per esempio

pred <- predict(model, newdata=list(dose=10, group=1, subject=5))

Questo, tuttavia, non ha molto senso per me ... il soggetto è un fattore di disturbo nel mio modello, quindi che senso ha includerlo predict? Se inserisco un numero soggetto non presente nel set di dati, predictrestituisce NA.

È questo il comportamento desiderato predictin questa situazione? Mi sto perdendo qualcosa di veramente ovvio?


modelXβ+Zγy~N(Xβ+Zγ,σ2io)quindi si aspetterà anche alcuni valori per il parametro di disturbo . Ci sono situazioni che potrebbe non avere nemmeno senso presumere che il tuo punto di valutazione sia privo di gerarchie (quindi noZ). Questo è il motivo per cui fitting () ti dà risultati "con fastidio" in primo luogo. (E in realtà non penso che sia fastidioso, ma piuttosto
un'informazione

@utente11852: solo per chiarire, sto pensando a questo come modello da utilizzare, ad esempio, nel caso di misure ripetute per lo stesso argomento.
nico,

Dato che stai cercando stime per lo stesso argomento, perché escluderlo allora? Se si desidera una stima a livello di popolazione (nZinformazioni) quindi è una domanda diversa. Come dice Greg nella sua risposta, puoi ottenere stime per la popolazione, se lo desideri, ma non sarà specifico per il soggetto.
usεr11852 dice Reinstate Monic

2
@ user11852: non sto cercando un preventivo sullo stesso argomento. Faccio ripetute misure su vari argomenti per ottenere stime sulla popolazione. Non mi importa dei soggetti che ho già testato poiché ho già la risposta sperimentale ... Voglio essere in grado di prevedere come un nuovo soggetto di un gruppo specifico risponderà allo stimolo. Greg risponde risolve davvero il problema.
nico,

Risposte:


17

Se cerchi l'aiuto per predict.lmevedrai che ha un levelargomento che determina a quale livello effettuare le previsioni. Il valore predefinito è il più alto o il più interno, il che significa che se non si specifica il livello, si tenta di prevedere a livello di soggetto. Se si specifica level=0come parte della prima predictchiamata (senza subject), verrà fornita la previsione a livello di popolazione e non sarà necessario un numero soggetto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.