Mari kita pertimbangkan dataset hipotetis ini:
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)
bisa kita gunakan lme
untuk memodelkan respons dengan model efek acak:
require(nlme)
model <- lme(response ~ dose + group + dose*group,
random = ~1|subject, df)
Saya ingin menggunakan predict
hasil model ini untuk mendapatkan, misalnya, respons subjek umum grup 1 terhadap dosis 10:
pred <- predict(model, newdata=list(dose=10, group=1))
Namun, dengan kode ini saya mendapatkan kesalahan berikut:
Error in predict.lme(model, newdata = list(dose = 10, group = 1)) :
cannot evaluate groups for desired levels on 'newdata'
Untuk menyingkirkannya, saya harus lakukan, misalnya
pred <- predict(model, newdata=list(dose=10, group=1, subject=5))
Ini, bagaimanapun, tidak benar-benar masuk akal bagi saya ... subjek adalah faktor gangguan dalam model saya, jadi apa artinya harus dimasukkan ke dalamnya predict
? Jika saya memasukkan nomor subjek yang tidak ada dalam dataset, predict
mengembalikan NA
.
Apakah ini perilaku yang diinginkan predict
dalam situasi ini? Apakah saya melewatkan sesuatu yang sangat jelas?
model
Jawaban:
Jika Anda melihat bantuan untuk
predict.lme
Anda akan melihat bahwa ia memilikilevel
argumen yang menentukan level mana untuk membuat prediksi. Defaultnya adalah yang tertinggi atau terdalam yang berarti bahwa jika Anda tidak menentukan levelnya maka ia mencoba untuk memprediksi pada level subjek. Jika Anda menentukanlevel=0
sebagai bagian daripredict
panggilan pertama Anda (tanpasubject
) maka itu akan memberikan prediksi pada tingkat populasi dan tidak perlu nomor subjek.sumber