Przewidywanie modeli mieszanych: co zrobić z efektami losowymi?

13

Rozważmy ten hipotetyczny zestaw danych:

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)

możemy użyć lmedo modelowania odpowiedzi za pomocą modelu efektu losowego:

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

Chciałbym wykorzystać predictwynik tego modelu, aby uzyskać na przykład odpowiedź ogólnego podmiotu z grupy 1 na dawkę 10:

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

Jednak z tym kodem pojawia się następujący błąd:

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

Aby się go pozbyć, muszę na przykład zrobić

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

Nie ma to jednak dla mnie większego sensu ... temat jest czynnikiem uciążliwym w moim modelu, więc w jakim sensie musi to uwzględniać predict? Jeśli wstawię numer podmiotu nieobecny w zbiorze danych, predictzwraca NA.

Czy jest to pożądane zachowanie predictw tej sytuacji? Czy brakuje mi czegoś naprawdę oczywistego?

Nico
źródło
modelXβ+ZγyN(Xβ+Zγ,σ2I)Z
usεr11852
@ user11852: aby wyjaśnić, myślę o tym jako o modelu, który można zastosować na przykład w przypadku powtarzających się pomiarów tego samego przedmiotu.
nico
Z
2
@ user11852: Nie szukam szacunków na ten sam temat. Powtarzam pomiary na różne tematy, aby uzyskać szacunki populacji. Nie dbam o tematy, które już testowałem, ponieważ mam już eksperymentalną odpowiedź ... Chcę być w stanie przewidzieć, jak nowy podmiot z określonej grupy zareaguje na bodziec. Odpowiedź Grega rzeczywiście rozwiązuje problem.
nico

Odpowiedzi:

17

Jeśli spojrzysz na pomoc predict.lme, zobaczysz, że ma ona levelargument, który określa, na którym poziomie dokonać prognoz. Wartością domyślną jest najwyższa lub najbardziej wewnętrzna, co oznacza, że ​​jeśli nie określisz poziomu, próbuje on przewidzieć na poziomie przedmiotu. Jeśli określisz level=0jako część pierwszego predictpołączenia (bez subject), poda ono prognozę na poziomie populacji i nie będzie potrzebować numeru przedmiotu.

Greg Snow
źródło