Betrachten wir diesen hypothetischen Datensatz:
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)
Wir können lme
die Antwort mit einem Zufallseffektmodell modellieren:
require(nlme)
model <- lme(response ~ dose + group + dose*group,
random = ~1|subject, df)
Ich würde gerne nutzen predict
das Ergebnis dieses Modells verwenden, um beispielsweise die Reaktion eines generischen Probanden der Gruppe 1 auf eine Dosis von 10 zu erhalten:
pred <- predict(model, newdata=list(dose=10, group=1))
Mit diesem Code erhalte ich jedoch den folgenden Fehler:
Error in predict.lme(model, newdata = list(dose = 10, group = 1)) :
cannot evaluate groups for desired levels on 'newdata'
Um es loszuwerden, muss ich zum Beispiel tun
pred <- predict(model, newdata=list(dose=10, group=1, subject=5))
Das macht für mich jedoch nicht wirklich viel Sinn ... Das Thema ist ein störender Faktor in meinem Modell, also welchen Sinn muss es haben, um es einzubeziehen predict
? Wenn ich eine im Datensatz nicht vorhandene Betreffnummer eingebe, wird predict
zurückgegeben NA
.
Ist das das gewünschte Verhalten predict
in dieser Situation? Vermisse ich etwas wirklich Offensichtliches?
model
Antworten:
Wenn Sie sich die Hilfe
predict.lme
ansehen, werden Sielevel
feststellen, dass es ein Argument gibt, das bestimmt, auf welcher Ebene die Vorhersagen getroffen werden sollen. Die Standardeinstellung ist die höchste oder innerste Stufe. Wenn Sie also die Stufe nicht angeben, wird versucht, sie auf der Betreffebene vorherzusagen. Wenn Sielevel=0
im Rahmen Ihres erstenpredict
Anrufs (ohnesubject
) angeben , wird die Vorhersage auf Bevölkerungsebene angezeigt und es wird keine Betreffnummer benötigt.quelle