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 lme
per modellare la risposta con un modello di effetto casuale:
require(nlme)
model <- lme(response ~ dose + group + dose*group,
random = ~1|subject, df)
Vorrei utilizzare predict
il 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, predict
restituisce NA
.
È questo il comportamento desiderato predict
in questa situazione? Mi sto perdendo qualcosa di veramente ovvio?
model