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?

modelRespuestas:
Si observa la ayuda
predict.lme, verá que tiene unlevelargumento que determina en qué nivel realizar las predicciones. El valor predeterminado es el más alto o más interno, lo que significa que si no especifica el nivel, está tratando de predecir el nivel del sujeto. Si especificaslevel=0como parte de su primerapredictllamada (sinsubject), dará la predicción a nivel de población y no necesitará un número de asunto.fuente