Pertimbangkan kode R berikut:
> data <- data.frame(
a=c(NA,2,3,4,5,6),b=c(2.2,NA,6.1,8.3,10.2,12.13),c=c(4.2,7.9,NA,16.1,19.9,23))
> data
a b c
1 NA 2.20 4.2
2 2 NA 7.9
3 3 6.10 NA
4 4 8.30 16.1
5 5 10.20 19.9
6 6 12.13 23.0
Seperti yang Anda lihat, saya telah merekayasa data sehingga secara kasar c = 2*b = 4*a
. Karena itu, saya berharap nilai-nilai yang hilang ada di sekitar a=1, b=2, c=12
. Jadi saya melakukan analisis:
> imp <- mi(data)
Beginning Multiple Imputation ( Sat Oct 18 03:02:41 2014 ):
Iteration 1
Chain 1 : a* b* c*
Chain 2 : a* b* c*
Chain 3 : a* b* c*
Iteration 2
Chain 1 : a* b c
Chain 2 : a* b* c*
Chain 3 : a b* c
Iteration 3
Chain 1 : a b c
Chain 2 : a b c
Chain 3 : a* b* c*
Iteration 4
Chain 1 : a b c
Chain 2 : a b* c
Chain 3 : a* b c
Iteration 5
Chain 1 : a b c*
Chain 2 : a b* c
Chain 3 : a b* c
Iteration 6
Chain 1 : a* b c*
Chain 2 : a b c
Chain 3 : a b c
Iteration 7
Chain 1 : a b c
Chain 2 : a b* c
Chain 3 : a b c*
Iteration 8
Chain 1 : a b c
Chain 2 : a b c
Chain 3 : a b* c*
Iteration 9
Chain 1 : a b c
Chain 2 : a b c*
Chain 3 : a b c
Iteration 10
Chain 1 : a b* c
Chain 2 : a b c
Chain 3 : a b c
Iteration 11
Chain 1 : a b c
Chain 2 : a b c
Chain 3 : a b c
Iteration 12
Chain 1 : a b c
Chain 2 : a* b c
Chain 3 : a b c
Iteration 13
Chain 1 : a b c
Chain 2 : a b c*
Chain 3 : a b c*
Iteration 14
Chain 1 : a b c
Chain 2 : a b c
Chain 3 : a b c
Iteration 15
Chain 1 : a b c
Chain 2 : a b c
Chain 3 : a b c*
Iteration 16
Chain 1 : a b c
Chain 2 : a b c
Chain 3 : a b* c
Iteration 17
Chain 1 : a b c
Chain 2 : a b c
Chain 3 : a b c
Iteration 18
Chain 1 : a b c*
Chain 2 : a b c
Chain 3 : a b c
Iteration 19
Chain 1 : a b c
Chain 2 : a b c
Chain 3 : a b c*
Iteration 20
Chain 1 : a b c*
Chain 2 : a b c
Chain 3 : a b c
Iteration 21
Chain 1 : a b c
Chain 2 : a b c
Chain 3 : a b c
Iteration 22
Chain 1 : a b c*
Chain 2 : a b c
Chain 3 : a b c
Iteration 23
Chain 1 : a b c
Chain 2 : a b c
Chain 3 : a b c
Iteration 24
Chain 1 : a b c*
Chain 2 : a b c
Chain 3 : a b c
Iteration 25
Chain 1 : a b c
Chain 2 : a b c
Chain 3 : a b c
Iteration 26
Chain 1 : a b c
Chain 2 : a b c
Chain 3 : a b c
Iteration 27
Chain 1 : a b c
Chain 2 : a b c
Chain 3 : a b c
Iteration 28
Chain 1 : a b c
Chain 2 : a b c
Chain 3 : a b c
Iteration 29
Chain 1 : a b c
Chain 2 : a b c
Chain 3 : a b c
mi converged ( Sat Oct 18 03:02:45 2014 )
Run 20 more iterations to mitigate the influence of the noise...
Beginning Multiple Imputation ( Sat Oct 18 03:02:45 2014 ):
Iteration 1
Chain 1 : a b c
Chain 2 : a b c
Chain 3 : a b c
Iteration 2
Chain 1 : a b c
Chain 2 : a b c
Chain 3 : a b c
Iteration 3
Chain 1 : a b c
Chain 2 : a b c
Chain 3 : a b c
Iteration 4
Chain 1 : a b c
Chain 2 : a b c
Chain 3 : a b c
Iteration 5
Chain 1 : a b c
Chain 2 : a b c
Chain 3 : a b c
Iteration 6
Chain 1 : a b c
Chain 2 : a b c
Chain 3 : a b c
Iteration 7
Chain 1 : a b c
Chain 2 : a b c
Chain 3 : a b c
Iteration 8
Chain 1 : a b c
Chain 2 : a b c
Chain 3 : a b c
Iteration 9
Chain 1 : a b c
Chain 2 : a b c
Chain 3 : a b c
Iteration 10
Chain 1 : a b c
Chain 2 : a b c
Chain 3 : a b c
Iteration 11
Chain 1 : a b c
Chain 2 : a b c
Chain 3 : a b c
Iteration 12
Chain 1 : a b c
Chain 2 : a b c
Chain 3 : a b c
Iteration 13
Chain 1 : a b c
Chain 2 : a b c
Chain 3 : a b c
Iteration 14
Chain 1 : a b c
Chain 2 : a b c
Chain 3 : a b c
Iteration 15
Chain 1 : a b c
Chain 2 : a b c
Chain 3 : a b c
Iteration 16
Chain 1 : a b c
Chain 2 : a b c
Chain 3 : a b c
Iteration 17
Chain 1 : a b c
Chain 2 : a b c
Chain 3 : a b c
Iteration 18
Chain 1 : a b c
Chain 2 : a b c
Chain 3 : a b c
Iteration 19
Chain 1 : a b c
Chain 2 : a b c
Chain 3 : a b c
Iteration 20
Chain 1 : a b c
Chain 2 : a b c
Chain 3 : a b c
Reached the maximum iteration, mi did not converge ( Sat Oct 18 03:02:48 2014 )
Dan akhirnya mengamati kumpulan data yang lengkap:
> mi.completed(imp)
[[1]]
a b c
1 2 2.20 4.2
2 2 2.20 7.9
3 3 6.10 16.1
4 4 8.30 16.1
5 5 10.20 19.9
6 6 12.13 23.0
[[2]]
a b c
1 2 2.20 4.2
2 2 6.10 7.9
3 3 6.10 7.9
4 4 8.30 16.1
5 5 10.20 19.9
6 6 12.13 23.0
[[3]]
a b c
1 2 2.20 4.2
2 2 2.20 7.9
3 3 6.10 7.9
4 4 8.30 16.1
5 5 10.20 19.9
6 6 12.13 23.0
Seperti yang Anda lihat, nilai yang diperhitungkan bukan yang saya harapkan. Sebenarnya, mereka terlihat seperti hasil dari imputasi tunggal karena nilai yang hilang tampaknya diambil dari catatan yang berdekatan.
Apa yang saya lewatkan?
Saya harus mencatat bahwa "pengetahuan" saya dalam statistik sebagian besar terbatas pada apa yang saya ingat samar-samar dari kursus pengantar yang saya ambil ~ 14 tahun yang lalu. Saya hanya mencari cara sederhana untuk menentukan nilai yang hilang, tidak harus menjadi yang paling optimal tetapi perlu masuk akal (yang tidak bisa saya dapatkan dari hasil ini). Mungkin ini adalah kasus yang mi
bukan pendekatan yang benar untuk mencapai apa yang saya inginkan (mungkin memprediksi harus digunakan sebagai gantinya), jadi saya terbuka untuk saran.
Saya juga mencoba pendekatan yang serupa mice
, yang menghasilkan hasil yang serupa.
PEMBARUAN Amelia bekerja sangat baik di luar kotak. Akan tetap menarik untuk mengetahui apa yang saya lewatkan dengan mi / tikus.
> mi.completed(imp) [[1]] a b c 1 0.289 2.20 4.2 2 2.000 2.57 7.9 3 3.000 6.10 12.7 4 4.000 8.30 16.1 5 5.000 10.20 19.9 6 6.000 12.13 23.0 [[2]] a b c 1 0.603 2.20 4.2 2 2.000 5.82 7.9 3 3.000 6.10 13.4 4 4.000 8.30 16.1 5 5.000 10.20 19.9 6 6.000 12.13 23.0 [[3]] a b c 1 1.05 2.20 4.2 2 2.00 4.18 7.9 3 3.00 6.10 12.0 4 4.00 8.30 16.1 5 5.00 10.20 19.9 6 6.00 12.13 23.0
Maaf tentang pemformatan, tapi saya rasa itu yang terbaik yang bisa saya lakukan dalam komentar.x
/2x
/4x
Jawaban:
Mengingat Anda menggunakan enam case [catatan] dan tiga variabel, kualitas imputasi Anda akan sangat rendah.
Untuk melihat mengapa hal ini terjadi, ingatlah bahwa beberapa imputasi bekerja dengan mengisi nilai yang hilang dengan nilai imputasi yang masuk akal. Nilai-nilai imputasi ini dihitung dalam dataset terpisah (saya akan kembali ke bagaimana nilai-nilai imputasi ini diturunkan kemudian dalam jawaban ini). Nilai yang dimasukkan akan sedikit bervariasi dari dataset ke dataset.m
Dengan demikian, mengingat kuantitas statistik yang menarik (misalnya, rata-rata, koefisien regresi, dll), orang dapat menggunakan dataset untuk memperkirakan kesalahan standar rata-rata untuk dalam dataset (jumlah yang saya akan memanggil varians imputasi, atau ) dan sejauh mana bervariasi di seluruh dataset (jumlah yang saya sebut varians antara-imputasi, atau ).q m q m U¯ q m B
Hubungan antara kualitas imputasi, , danB U¯
Seseorang dapat menggunakan varians dalam-imputasi dan varians antara-imputasi untuk memperoleh estimasi tingkat di mana estimasi yang diperhitungkan dari kuantitas statistik telah dipengaruhi oleh informasi yang hilang. Tentu saja, semakin banyak informasi yang hilang, semakin buruk kualitas imputasi. Perkiraan informasi yang hilang karena hilang diberi label , dan diberikan oleh rumus berikut:U¯ B γ
Dengan demikian, nilai tinggi menghasilkan nilai , yang pada gilirannya akan menghasilkan nilai . Nilai , pada gilirannya, menunjukkan lebih banyak informasi yang hilang karena data yang hilang dan imputasi kualitas yang lebih buruk.B r γ γ
Dengan demikian, selain meningkatkan rasio antara-imputasi dengan varians dalam-imputasi, meningkatkan juga mengurangi . Ini akan menghasilkan nilai lebih , menunjukkan lebih banyak informasi yang hilang karena hilang dan imputasi kualitas yang buruk.d f γB df γ
Singkatnya, nilai yang lebih tinggi dari varians antara-imputasi mempengaruhi kualitas imputasi dalam dua cara:B
Hubungan antara jumlah kasus danB
Diberikan dua dataset yang serupa, sebuah dataset dengan jumlah kasus yang lebih kecil akan memiliki varian antar-imputasi .B
Ini akan terjadi karena, seperti yang saya jelaskan di atas, varians antara imputasi dihitung dengan menghitung kuantitas statistik yang menarik dalam setiap set data diimputasi dan menghitung sejauh mana bervariasi di setiap set data . Jika dataset yang diberikan memiliki kuantitas lebih tinggi dari kasus tetapi kuantitas yang sama hilang nilai-nilai sebagai lain, proporsi yang lebih kecil dari nilai-nilai akan bebas untuk berbeda-beda di masing-masing dari diperhitungkan dataset, yang berarti bahwa akan ada lebih rendah variasi keseluruhan di seluruh dataset yang diperhitungkan.m q m m qq m q m m q
Dengan demikian, secara umum, meningkatkan jumlah kasus (atau, lebih tepatnya, mengurangi proporsi nilai yang hilang) akan meningkatkan kualitas imputasi.
Hubungan antara jumlah variabel danB
Diberikan dua set data yang serupa, sebuah dataset dengan jumlah variabel yang lebih besar akan memiliki varian antar-imputasi , selama variabel-variabel tambahan tersebut informatif tentang nilai-nilai yang hilang.B
Ini akan terjadi karena, secara umum, nilai-nilai yang hilang untuk variabel yang diberikan "diisi" dengan menggunakan informasi dari variabel lain untuk menghasilkan perkiraan masuk akal dari nilai-nilai yang hilang (perincian spesifik bagaimana perkiraan ini dihasilkan akan bervariasi tergantung pada implementasi MI Anda menggunakan). Lebih banyak informasi dalam bentuk variabel tambahan akan menghasilkan nilai imputasi yang lebih stabil, menghasilkan lebih sedikit variasi dalam jumlah statistik yang diminati di setiap set data terikat .mq m
Dengan demikian, secara umum, meningkatkan jumlah variabel yang tersedia dalam dataset akan meningkatkan kualitas imputasi, selama variabel tambahan tersebut informatif tentang nilai yang hilang.
Referensi
Rubin, DB (1996). Beberapa imputasi setelah 18+ tahun. Jurnal Asosiasi Statistik Amerika , 91, 473-489.
Schafer, JL (1999). Beberapa imputasi: primer. Metode Statistik dalam Penelitian Medis , 8, 3-15.
sumber