Bagaimana saya bisa mendapatkan efek acak dikumpulkan untuk lmer setelah beberapa kali imputasi?
Saya menggunakan mouse untuk menghubungkan beberapa frame data. Dan lme4 untuk model campuran dengan intersep acak dan kemiringan acak. Pooling lmer baik-baik saja, kecuali bahwa itu tidak mengumpulkan efek acak. Saya telah mencari banyak solusi tanpa keberuntungan. Saya mencoba paket mi, namun saya hanya melihat output gabungan untuk perkiraan dan std.error. Saya sudah mencoba mengekspor objek tikus ke spss tanpa hasil. Saya melihat beberapa diskusi tentang Zelig. Saya pikir itu bisa menyelesaikan masalah saya. Namun saya tidak dapat menemukan cara menggunakan paket dengan data yang diperhitungkan untuk lmer.
Saya tahu paket mouse hanya mendukung penyatuan efek tetap. Apakah ada pekerjaan?
Beberapa imputasi:
library(mice)
Data <- subset(Data0, select=c(id, faculty, gender, age, age_sqr, occupation, degree, private_sector, overtime, wage))
ini <- mice(Data, maxit=0, pri=F) #get predictor matrix
pred <- ini$pred
pred[,"id"] <- 0 #don't use id as predictor
meth <- ini$meth
meth[c("id", "faculty", "gender", "age", "age_sqr", "occupation", "degree", "private_sector", "overtime", "wage")] <- "" #don't impute these variables, use only as predictors.
imp <- mice(Data, m=22, maxit=10, printFlag=TRUE, pred=pred, meth=meth) #impute Data with 22 imputations and 10 iterations.
Model bertingkat:
library(lme4)
fm1 <- with(imp, lmer(log(wage) ~ gender + age + age_sqr + occupation + degree + private_sector + overtime + (1+gender|faculty))) #my multilevel model
summary(est <- pool(fm1)) #pool my results
Perbarui Hasil dari pooled lmer:
> summary(est <- pool(fm1))
est se t df Pr(>|t|) lo 95 hi 95 nmis fmi lambda
(Intercept) 7,635148e+00 0,1749178710 43,649905006 212,5553 0,000000e+00 7,2903525425 7,9799443672 NA 0,2632782 0,2563786
Gender -1,094186e-01 0,0286629154 -3,817427078 117,1059 2,171066e-04 -0,1661834550 -0,0526537238 NA 0,3846276 0,3742069
Occupation1 1,125022e-01 0,0250082538 4,498601518 157,6557 1,320753e-05 0,0631077322 0,1618966049 NA 0,3207350 0,3121722
Occupation2 2,753089e-02 0,0176032487 1,563966385 215,6197 1,192919e-01 -0,0071655902 0,0622273689 NA 0,2606725 0,2538465
Occupation3 1,881908e-04 0,0221992053 0,008477365 235,3705 9,932433e-01 -0,0435463305 0,0439227120 NA 0,2449795 0,2385910
Age 1,131147e-02 0,0087366178 1,294719230 187,0021 1,970135e-01 -0,0059235288 0,0285464629 0 0,2871640 0,2795807
Age_sqr -7,790476e-05 0,0001033263 -0,753968159 185,4630 4,518245e-01 -0,0002817508 0,0001259413 0 0,2887420 0,2811131
Overtime -2,376501e-03 0,0004065466 -5,845581504 243,3563 1,614693e-08 -0,0031773002 -0,0015757019 9 0,2391179 0,2328903
Private_sector 8,322438e-02 0,0203047665 4,098760934 371,9971 5,102752e-05 0,0432978716 0,1231508962 NA 0,1688478 0,1643912
Informasi ini tidak ada, yang saya dapatkan ketika menjalankan lmer tanpa banyak imputasi:
Random effects:
Groups Name Variance Std.Dev. Corr
Faculty (Intercept) 0,008383 0,09156
Genderfemale0,002240 0,04732 1,00
Residual 0,041845 0,20456
Number of obs: 698, groups: Faculty, 17
sumber
Jawaban:
Anda dapat melakukan ini sedikit dengan tangan jika dengan memanfaatkan
lapply
fungsi dalam R dan struktur daftar yang dikembalikan olehAmelia
paket imputasi berganda. Berikut ini contoh skrip cepat.Amelia
mirip denganmice
sehingga Anda bisa mengganti variabel Anda darimice
panggilan di sini - contoh ini dari proyek yang saya kerjakan.a.out
adalah objek imputasi, sekarang kita perlu menjalankan model pada setiap dataset yang diimputasi. Untuk melakukan ini, kami menggunakanlapply
fungsi dalam R untuk mengulangi fungsi lebih dari elemen daftar. Fungsi ini menerapkan fungsi - yang merupakan spesifikasi model - untuk setiap dataset (d) dalam daftar dan mengembalikan hasilnya dalam daftar model.Sekarang kita membuat data.frame dari daftar itu, dengan mensimulasikan nilai efek tetap dan acak menggunakan fungsi FEsim dan REsim dari paket merTools
Data.frame di atas termasuk perkiraan terpisah untuk setiap dataset, sekarang kita perlu menggabungkan mereka menggunakan runtuh seperti keruntuhan argumen
Sekarang kita juga dapat mengekstraksi beberapa statistik pada varians / kovarians untuk efek acak di seluruh nilai imputasi. Di sini saya telah menulis dua fungsi ekstraktor sederhana untuk melakukan ini.
Dan sekarang kita dapat menerapkannya pada model dan menyimpannya sebagai vektor:
Memperbarui
Fungsi-fungsi di bawah ini akan membuat Anda lebih dekat dengan output yang disediakan
arm::display
oleh operasi pada daftarlmer
atauglmer
objek. Semoga ini akan dimasukkan ke dalammerTools
paket dalam waktu dekat:sumber
lmerModList
danprint
metode, yang menggabungkan hasil dari daftar model.Anda juga dapat menggunakan fungsi testEstimates setelah imputasi menggunakan mouse, testEstimates (as.mitml.result (fm1), var.comp = T) $ var.comp
sumber