Prenons cet ensemble de données hypothétique:
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)
nous pouvons utiliser lme
pour modéliser la réponse avec un modèle à effet aléatoire:
require(nlme)
model <- lme(response ~ dose + group + dose*group,
random = ~1|subject, df)
Je voudrais utiliser predict
sur le résultat de ce modèle pour obtenir, par exemple, la réponse d'un sujet générique du groupe 1 à une dose de 10:
pred <- predict(model, newdata=list(dose=10, group=1))
Cependant, avec ce code, j'obtiens l'erreur suivante:
Error in predict.lme(model, newdata = list(dose = 10, group = 1)) :
cannot evaluate groups for desired levels on 'newdata'
Pour m'en débarrasser, je dois faire, par exemple
pred <- predict(model, newdata=list(dose=10, group=1, subject=5))
Cependant, cela n'a pas vraiment de sens pour moi ... le sujet est un facteur de nuisance dans mon modèle, alors dans quel sens faut-il l'inclure predict
? Si je mets un numéro de sujet non présent dans l'ensemble de données, predict
retourne NA
.
Est-ce le comportement recherché predict
dans cette situation? Suis-je en train de manquer quelque chose de vraiment évident?
model
Réponses:
Si vous regardez l'aide,
predict.lme
vous verrez qu'elle a unlevel
argument qui détermine à quel niveau faire les prédictions. La valeur par défaut est la plus élevée ou la plus intérieure, ce qui signifie que si vous ne spécifiez pas le niveau, elle essaie de prédire au niveau du sujet. Si vous spécifiezlevel=0
dans le cadre de votre premierpredict
appel (sanssubject
), il donnera la prédiction au niveau de la population et n'aura pas besoin d'un numéro de sujet.la source