Consideremos este conjunto de datos hipotético:
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)
podemos usar lmepara modelar la respuesta con un modelo de efectos aleatorios:
require(nlme)
model <- lme(response ~ dose + group + dose*group,
random = ~1|subject, df)
Me gustaría utilizar predictel resultado de este modelo para obtener, por ejemplo, la respuesta de un sujeto genérico del grupo 1 a una dosis de 10:
pred <- predict(model, newdata=list(dose=10, group=1))
Sin embargo, con este código me sale el siguiente error:
Error in predict.lme(model, newdata = list(dose = 10, group = 1)) :
cannot evaluate groups for desired levels on 'newdata'
Para deshacerme de él, debo hacer, por ejemplo
pred <- predict(model, newdata=list(dose=10, group=1, subject=5))
Sin embargo, esto realmente no tiene mucho sentido para mí ... el tema es un factor molesto en mi modelo, entonces, ¿qué sentido tiene incluirlo predict? Si pongo un número de sujeto que no está presente en el conjunto de datos, predictregresa NA.
¿Es este el comportamiento deseado predicten esta situación? ¿Me estoy perdiendo algo realmente obvio?
model