Saya ingin membuat prediksi untuk model campuran (logistik melalui glmer) pada kumpulan data baru hanya menggunakan efek tetap, menahan efek acak ke 0. Tapi saya mengalami kesulitan menyiapkan model matriks untuk dapat menghitungnya.
Karena kelas mer tidak memiliki metode prediksi, dan karena saya ingin menghilangkan efek acak untuk prediksi pada set data baru, saya pikir saya perlu membuat matriks model untuk efek tetap dari struktur yang sama yang digunakan dalam aslinya model, tetapi menggunakan data baru. Kemudian kalikan dengan koefisien efek tetap dalam model.
Bagian efek tetap dari rumus model saya berisi faktor dan istilah interaksi antara efek tetap numerik, jadi ini sedikit lebih rumit daripada hanya mengekstraksi variabel tetap dari matriks. mis. Saya perlu memastikan ekspansi kontras faktor sama dengan aslinya, istilah interaksi dicantumkan dengan benar, dll.
Jadi pertanyaan saya adalah: apa pendekatan umum yang lebih mudah untuk membangun matriks model baru yang meniru struktur matriks model asli yang digunakan dalam membuat model?
Saya sudah mencoba model.matrix (my.model, data = newdata) tetapi itu tampaknya mengembalikan matriks model asli, bukan yang didasarkan pada data baru.
Kode sampel:
library(lme4)
cake2 <- head(cake) # cake2 is "new" data frame for future predictions
# recipe is a fixed effect factor, temp is fixed effect numeric, replicate is random effect
m <- lmer(angle ~ temp + recipe + (1 | replicate), data=cake)
summary(m)
nrow(cake2) # but new data frame has 6 rows
nrow(cake) # original data frame has 270 rows
# attempt to make new model matrix using different data frame
mod.mat.cake2 <- model.matrix(m, data=cake2)
nrow(mod.mat.cake2) # 270 rows, same as orig data frame
Saya mencoba metode lain seperti mengekstraksi istilah dari rumus dan membangun formula baru dari itu, tetapi tampaknya terlalu berbelit-belit, dan rapuh dalam menangani faktor dan istilah interaksi.
Bagaimana saya bisa mendapatkan mod.mat.cake2 menjadi matriks model efek tetap berdasarkan rumus dalam m, tetapi menggunakan nilai dari cake2? Atau adakah cara yang lebih mudah untuk mendapatkan prediksi fixed-effect only dari model lmer?
Semua bantuan dihargai. Terima kasih.
sumber
lm()
dan mengekstrak matriks model dari fit, dan menerapkannya pada koefisien model dari fit sebelumnya.Jawaban:
Mungkin ini curang, tapi
catatan:
lme4.0
di sini, yang merupakan versi r-peleburan "tua" (CRAN)lme4
: Anda dapat menggantikanlme4
untuklme4.0
dalam kode di atasversi baru (r-forge / development) dari
lme4
memilikipredict
metode: dalam kasus ituberfungsi dengan baik (
re.form=NA
setel semua efek acak menjadi nol, setara denganlevel=0
yang lamapredict.lme
)sumber