Prediksi pada model efek campuran: apa yang harus dilakukan dengan efek acak?

13

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 lmeuntuk memodelkan respons dengan model efek acak:

require(nlme)
model <- lme(response ~ dose + group + dose*group, 
             random = ~1|subject, df)

Saya ingin menggunakan predicthasil 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, predictmengembalikan NA.

Apakah ini perilaku yang diinginkan predictdalam situasi ini? Apakah saya melewatkan sesuatu yang sangat jelas?

nico
sumber
modelXβ+ZγyN(Xβ+Zγ,σ2I)Z
usεr11852 mengatakan Reinstate Monic
@ user11852: hanya untuk memperjelas, saya berpikir tentang ini sebagai model yang akan digunakan, misalnya, dalam kasus tindakan berulang untuk subjek yang sama.
nico
Z
2
@ user11852: Saya tidak mencari perkiraan tentang subjek yang sama. Saya melakukan tindakan berulang pada berbagai mata pelajaran untuk mendapatkan perkiraan populasi. Saya tidak peduli dengan subjek yang sudah saya uji karena saya sudah memiliki jawaban eksperimental ... Saya ingin dapat memprediksi bagaimana subjek baru dari kelompok tertentu akan merespons stimulus. Greg menjawab memang memecahkan masalah.
nico

Jawaban:

17

Jika Anda melihat bantuan untuk predict.lmeAnda akan melihat bahwa ia memiliki levelargumen 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 menentukan level=0sebagai bagian dari predictpanggilan pertama Anda (tanpa subject) maka itu akan memberikan prediksi pada tingkat populasi dan tidak perlu nomor subjek.

Greg Snow
sumber