Menerapkan aturan Rubin untuk menggabungkan kumpulan data berlipat ganda

8

Saya berharap untuk menyatukan hasil dari serangkaian analisis mendasar yang dilakukan pada data yang dilipatgandakan (misalnya regresi berganda, ANOVA). Beberapa imputasi dan analisis telah diselesaikan dalam SPSS tetapi SPSS tidak memberikan hasil gabungan untuk beberapa statistik termasuk nilai-F, matriks kovarian, R-Squared dll.

Saya telah melakukan beberapa upaya untuk mengatasi masalah ini dengan merambah ke R atau mencoba makro yang tersedia dan belum berhasil menyelesaikan masalah (misalnya dengan mengalami masalah dengan menggabungkan statistik untuk lebih dari 5 imputasi pada Tikus, misalnya).

Pada titik ini, saya ingin mencoba menghitung ini dengan tangan, menerapkan aturan Rubin, menggunakan output yang dihasilkan SPSS. Namun, saya tidak yakin bagaimana saya bisa mendapatkan varians dalam-imputasi ( ) berdasarkan output yang dihasilkan SPSS. U¯=1mj=1mUj

Saya akan sangat menghargai instruksi rinci tentang ini.

pengguna81715
sumber
Apakah Anda hanya ingin tahu apa arti simbol-simbol dalam formula itu? Apakah kamu tahuUsingkatan dalam output SPSS?
gung - Reinstate Monica
Untuk keluaran ANOVA khususnya (sebagai bagian dari regresi linier), F-statistik dilaporkan bersama dengan jumlah kuadrat, df, dan rata-rata kuadrat. Saya secara khusus mencoba mencari cara menghitung komponen varians imputasi dalam untuk F-statistik.
user81715

Jawaban:

8

Aturan Rubin hanya dapat diterapkan pada parameter setelah distribusi normal. Untuk parameter dengan distribusi F atau Chi Square diperlukan serangkaian formula yang berbeda:

  • Allison, PD (2002). Data tidak ada. Newbury Park, CA: Sage.

Untuk melakukan ANOVA pada beberapa dataset yang bermasalah, Anda dapat menggunakan paket miceadds ( pdf ; miceadds::mi.anova).

Perbarui 1

Ini adalah contoh lengkapnya:

  1. Ekspor data Anda dari SPSS ke R. Dalam Spss simpan dataset Anda sebagai .csv

  2. Baca dalam dataset Anda:

    library(miceadds)   
    dat <– read.csv(file='your-dataset.csv')

    Mari kita asumsikan, itu reSebuahdsayang adalah variabel dependen Anda dan Anda memiliki dua faktor

    • jenis kelamin , dengan laki-laki = 0 dan perempuan = 1
    • pengobatan , dengan kontrol = 0 dan 'pengobatan yang diterima' = 1

    Sekarang mari kita ubah mereka menjadi faktor:

    dat$gender    <- factor(dat$gender)
    dat$treatment <- factor(dat$treatment)
  3. Konversikan dataset Anda ke objek mid, kami menganggap, bahwa variabel pertama menyimpan nomor imputasi (Imputation_ dalam SPSS):

    dat.mids <- as.mids(dat)
  4. Sekarang Anda dapat melakukan ANOVA:

    fit <- mi.anova(mi.res=dat.mids, formula="reading~gender*treatment", type=3)
    summary(fit)

Perbarui 2 Ini adalah balasan untuk komentar kedua Anda:

Apa yang Anda jelaskan di sini adalah masalah terkait data impor / ekspor antara SPSS dan R. Anda bisa mencoba untuk mengimpor .savfile yang langsung ke R dan ada sekelompok paket khusus untuk itu: foreign, rio, gdata, Hmisc, dll saya lebih suka yang csv-cara , tapi itu masalah selera dan / atau tergantung pada sifat masalah Anda. Mungkin Anda juga harus memeriksa beberapa tutorial di youtube atau sumber lain di internet.

library(foreign)
dat <- read.spss(file='path-to-sav', use.value.labels=F, to.data.frame=T)

Perbarui 3 Ini adalah balasan untuk komentar pertama Anda:

Ya, Anda dapat melakukan analisis dalam SPSS dan menggabungkan nilai-nilai F di miceadds(harap perhatikan contoh ini diambil dari miceadds::micombine.Fhalaman bantuan):

library(miceadds)
Fvalues <- c(6.76 , 4.54 , 4.23 , 5.45 , 4.78, 6.76 , 4.54 , 4.23 , 5.45 , 4.78, 
             6.76 , 4.54 , 4.23 , 5.45 , 4.78, 6.76 , 4.54 , 4.23 , 5.45 , 4.78 )
micombine(Fvalues, df1=4)
Thomas
sumber
Terima kasih atas saranmu. Saya sebenarnya telah mencoba miceadds tetapi satu masalah yang saya temui adalah menggabungkan nilai F untuk semua 20 dataset yang diimputasi dan bukan hanya 5 yang diprogram untuk dibaca secara default (saya percaya). Saya telah mencoba memasukkan semua 20 nilai-f yang saya peroleh dari keluaran SPSS dan menggunakan tikus untuk mengumpulkan perkiraan ini. Apakah metode ini dapat diterima (mis. Lakukan imputasi dalam SPSS, gabungkan perkiraan ini pada tikus yang ditambahkan)? Jika ada cara saya bisa membaca 20 imputasi dalam MICE, saya akan menghargainya. Terima kasih lagi!
user81715
Saya telah memperbarui jawaban saya dengan contoh lengkap dari spss ke miceadds.
Thomas
Terima kasih lagi. Saya akan mencoba menjalankan ini dan berharap untuk menindaklanjuti dengan hasilnya!
user81715
Ngomong-ngomong: tikus tidak terbatas pada sejumlah imputasi. Saya sering menggunakan mouse dengan imputasi m> 20. Mendapatkan perkiraan dari SPSS dan menggabungkannya pada tikus sulit dan melelahkan, karena tikus menganggap secara default bahwa semua langkah dilakukan di dalam lingkup paket. Jika jawaban saya membantu Anda, harap tandai sebagai benar atau meningkat!
Thomas
> datsayaV1=fSebuahctHair(dSebuahtIV1) Kesalahan dalam $<-.data.frame( *tmp*, "IV1", nilai = integer (0)): penggantian memiliki 0 baris, data memiliki 10> dat.mids = as.mids (dat) Kesalahan pada tikus (data [data [, .imp] = = 0, -c (.imp, .id)], m = max (as.numeric (data [,: Data harus mengandung setidaknya dua kolom> fit = mi.anova (mi.res = dat.mids, formula = "DV ~ IV1 * IV2 * INT", ketik = 3) ringkasan (cocok) Kesalahan: simbol tak terduga di "fit = mi.anova (mi.res = dat.mids, rumus =" DV ~ IV1 * IV2 * INT ", type = 3) ringkasan ">
user81715
7

Anda dengan benar menuliskan estimator gabungan:

U¯=1msaya=1mUsaya

Dimana Usaya mewakili hasil analitik dari saya-Data yang ditetapkan. Biasanya, hasil analitik memiliki beberapa distribusi mendekati normal dari mana kita menarik kesimpulan atau membuat batas kepercayaan. Ini terutama dilakukan dengan menggunakan nilai rata-rata (Usaya) dan kesalahan standarnya. T-tes, regresi linier, regresi logistik, dan pada dasarnya sebagian besar analisis dapat diringkas secara memadai dalam hal nilai tersebutUsaya dan kesalahan standarnya se(Usaya).

Aturan Rubin menggunakan hukum varians total untuk menuliskan varians sebagai jumlah dari varians antara dan di dalam imputasi:

var(U¯)=E[var(U¯|Usaya)]+var(E[U¯|Usaya])

Istilah pertama adalah dalam varian sehingga E[var(U¯|Usaya)=1msaya=1mVsaya dimana Vsaya adalah varian dari hasil analisis dari saya- dataset lengkap atau imputasi. Istilah terakhir adalah varian antara-imputasi:var(E[U¯|Usaya])=M.+1M.-1saya=1m(Usaya-U¯)2. Saya tidak pernah benar-benar memahami koreksi DF di sini, tetapi ini pada dasarnya adalah pendekatan yang diterima.

Bagaimanapun, karena jumlah imputasi yang disarankan adalah kecil (Rubin menyarankan sedikitnya 5), ​​biasanya dimungkinkan untuk menghitung angka ini dengan memasangkan setiap analisis dengan tangan. Contoh dengan tangan terdaftar di bawah ini:

require(mice)
set.seed(123)
nhimp <- mice(nhanes)
sapply(1:5, function(i) {
  fit <- lm(chl ~ bmi, data=complete(nhimp, i))
  print(c('coef'=coef(fit)[2], 'var'=vcov(fit)[2, 2]))
})

Memberikan hasil sebagai berikut:

coef.bmi      var 
2.123417 4.542842 
3.295818 3.801829 
2.866338 3.034773 
1.994418 4.124130 
3.153911 3.531536

Jadi varians dalam adalah rata-rata varians estimasi titik imputasi spesifik: 3,8 (rata-rata kolom kedua). Varians antara varians adalah 0,35 varians dari kolom pertama). Menggunakan koreksi DF kita mendapatkan varian 4.23. Ini setuju dengan poolperintah yang diberikan dalam micepaket.

> fit <- with(data=nhimp,exp=lm(chl~bmi))
> summary(pool(fit))
                  est        se        t       df   Pr(>|t|)     lo 95      hi 95 nmis       fmi     lambda
(Intercept) 119.03466 54.716451 2.175482 19.12944 0.04233303  4.564233 233.505080   NA 0.1580941 0.07444487
bmi           2.68678  2.057294 1.305978 18.21792 0.20781073 -1.631731   7.005291    9 0.1853028 0.10051760

yang menunjukkan SE = 2.057 untuk koefisien model, (Variance = SE ** 2 = 4.23).

Saya gagal melihat bagaimana meningkatkan jumlah dataset yang bermasalah menciptakan masalah tertentu. Jika Anda tidak dapat memberikan contoh kesalahan, saya tidak tahu bagaimana menjadi lebih bermanfaat. Tetapi kombinasi dengan tangan dipastikan untuk mengakomodasi berbagai strategi pemodelan.

Makalah ini membahas cara-cara lain bahwa hukum varians total dapat menurunkan estimasi varians dari estimasi gabungan. Secara khusus, penulis menunjukkan (dengan benar) bahwa asumsi yang diperlukan untuk Peraturan Rubin bukanlah normal dari perkiraan titik tetapi sesuatu yang disebut pengertian. Normalitas WRT, sebagian besar estimasi titik yang berasal dari model regresi memiliki konvergensi cepat di bawah teorema batas pusat, dan bootstrap dapat menunjukkan hal ini kepada Anda.

AdamO
sumber
dapatkah Anda menjelaskan bagaimana Anda memperoleh 4,23 dari 3,8 (rata-rata estimasi varians untuk setiap dataset yang diimplikasikan) dan 0,35 (varians dari estimasi koefisien untuk masing-masing dari lima dataset)? Saya melewatkan satu langkah.
llewmills
1
@ llewmills hmm koreksi DF pasti (1+1/m) dan tidak (m-1)/(m+1).
AdamO
terima kasih @ adamo Saya menganggap Anda maksudm+1m, (daripada 1+1m) karena itu memberikan hasil yang tepat sebagai pool(fit).
llewmills
Saya kira Anda tidak tahu rumus untuk menggabungkan nilai- p @ AdamO?
llewmills
1
@ llewmills mengapa Anda menghitung 5 p-nilai? Anda memiliki mean rata-rata dan grand SE, sekarang gabungkan mereka dan hitung satu nilai-p untuk analisis berganda yang dilipatgandakan.
AdamO