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ć lme
do modelowania odpowiedzi za pomocą modelu efektu losowego:
require(nlme)
model <- lme(response ~ dose + group + dose*group,
random = ~1|subject, df)
Chciałbym wykorzystać predict
wynik 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, predict
zwraca NA
.
Czy jest to pożądane zachowanie predict
w tej sytuacji? Czy brakuje mi czegoś naprawdę oczywistego?
model