Pendekatan statistik untuk menentukan apakah data hilang secara acak

21

Saya memiliki satu set besar fitur vektor yang akan saya gunakan untuk menyerang masalah klasifikasi biner (menggunakan scikit belajar dengan Python). Sebelum saya mulai berpikir tentang imputasi, saya tertarik untuk mencoba menentukan dari bagian data yang tersisa apakah data yang hilang 'hilang secara acak' atau hilang bukan secara acak.

Apa cara yang masuk akal untuk mendekati pertanyaan ini?


Ternyata pertanyaan yang lebih baik adalah menanyakan apakah data 'hilang sepenuhnya secara acak' atau tidak. Apa cara yang masuk akal untuk melakukan itu?

Lembik
sumber
Jika tidak ada hubungan antara indikator yang hilang dan variabel yang diamati, maka mekanisme data yang hilang adalah MCAR.
Randel
@Randel Apa tes yang baik untuk diterapkan dalam praktek untuk menguji ini?
Lembik
Tidak ada yang istimewa dari tes korelasi atau regresi.
Randel
3
Itu bukan sesuatu yang Anda uji, itu sesuatu yang Anda asumsikan .
Tim
3
Hanya untuk menjadi jelas: hilang sepenuhnya secara acak berarti bahwa probabilitas hilangnya adalah konstan, itu tidak bergantung pada apa pun. Menghilang secara acak berarti bahwa hilangnya tergantung pada beberapa faktor yang diukur, seperti usia atau jenis kelamin, sehingga Anda dapat menggunakan beberapa model untuk mengisi pola yang hilang. Hilang tidak secara acak berarti hilangnya tergantung pada hal-hal yang tidak Anda ukur. Dalam pertanyaan, OP mengatakan NMAR vs MAR tetapi OP berarti MAR vs MCAR.
AdamO

Jawaban:

8

Saya menemukan informasi yang saya bicarakan dalam komentar saya.

Dari buku van Buurens , halaman 31, ia menulis

"Beberapa tes telah diusulkan untuk menguji MCAR versus MAR. Tes ini tidak banyak digunakan, dan nilai praktisnya tidak jelas. Lihat Enders (2010, hlm. 17-21) untuk evaluasi dua prosedur. Tidak mungkin untuk menguji MAR versus MNAR karena informasi yang diperlukan untuk tes seperti itu tidak ada. "

RayVelcoro
sumber
Pertanyaannya bertanya tentang MAR vs MNAR, tetapi jawaban Anda adalah tentang MCAR vs MAR. MCAR benar-benar berbeda dengan MNAR.
Tim
Jika Anda dapat menentukan data adalah MAR maka itu sudah cukup. Seperti yang dikatakan Bjorn, tidak mungkin untuk mengetahui apakah itu MAR / MNAR, tetapi jawaban ini adalah proxy yang bagus untuk pertanyaannya, saya yakin. Jika Anda melakukan tes Enders dan menemukan bahwa itu adalah MCAR, maka Anda tidak perlu melakukan imputasi. Jika Anda menemukan bahwa ini adalah MAR, maka Anda dapat menyalahkan, atau melihat data Anda dengan saksama untuk melihat apakah ada alasan untuk meyakini bahwa itu mungkin MNAR.
RayVelcoro
@ RayVelcoro Ini adalah masalah pengidentifikasian: data NMAR mungkin muncul MCAR. Tim benar bahwa NMAR (atau sebaliknya) bukanlah sesuatu yang kita uji, itu sesuatu yang kita asumsikan. Untuk poin Anda tentang MCAR vs MAR, yang lebih penting adalah: jika data MCAR dan Anda menggunakan metode MAR, apakah benar-benar ada efek bersih pada data? Saya kira tidak. Mengingat penetrasi, ketersediaan, dan kemudahan penggunaan untuk metode MAR, mungkin lebih baik menggunakan prosedur pembobotan atau imputasi non-parametrik daripada melakukan tes dan tes angsa retoris.
AdamO
17

Ini tidak mungkin, kecuali jika Anda berhasil mengambil data yang hilang. Anda tidak dapat menentukan dari data yang diamati apakah data yang hilang hilang secara acak (MAR) atau tidak secara acak (MNAR). Anda hanya dapat mengetahui apakah data jelas tidak hilang sepenuhnya secara acak (MCAR). Di luar itu hanya menarik masuk akal MCAR atau MAR sebagai lawan dari MNAR berdasarkan apa yang Anda ketahui (misalnya alasan yang dilaporkan mengapa data hilang). Atau, Anda mungkin dapat berdebat bahwa itu tidak terlalu penting, karena proporsi data yang hilang kecil dan di bawah MNAR skenario yang sangat ekstrim harus terjadi agar hasil Anda dibatalkan (lihat "analisis titik kritis").

Björn
sumber
1
Terima kasih banyak. Apa cara yang baik untuk mengetahui apakah datanya MCAR?
Lembik
@ Bjorn, di atas mungkin perlu ditulis ulang untuk mencerminkan asimetri penting dalam apa yang dapat kita pelajari dari data. Meskipun dimungkinkan untuk memalsukan hipotesis bahwa data adalah MCAR (yaitu, dengan membangun model yang mengeksploitasi kovariat yang diamati untuk memperhitungkan beberapa bagian dari hilangnya), tidak mungkin untuk mengkonfirmasi MCAR atau hipotesis lain semacam itu.
David C. Norris
Poin bagus. Saya membuatnya lebih jelas.
Björn
4

Ini terdengar sangat bisa dilakukan dari sudut pandang klasifikasi.

Anda ingin mengklasifikasikan data yang hilang dan tidak hilang menggunakan semua fitur lainnya. Jika Anda mendapatkan secara signifikan lebih baik daripada hasil acak, maka data Anda tidak hilang secara acak.

Pembakar
sumber
2

Anda ingin tahu apakah ada beberapa korelasi dari nilai yang terlewat dalam fitur dan nilai dari fitur lainnya.

Untuk setiap fitur, buat fitur baru yang menunjukkan apakah nilainya hilang atau tidak (sebut saja fitur "is_missing"). Hitung ukuran korelasi favorit Anda (saya sarankan menggunakan informasi timbal balik di sini) dari fitur is_missing dan fitur lainnya.

Perhatikan bahwa jika Anda tidak menemukan korelasi antara dua fitur, masih mungkin untuk memiliki korelasi karena kelompok fitur (nilai hilang sebagai fungsi XOR dari sepuluh fitur lainnya).

Jika Anda memiliki seperangkat fitur besar dan sejumlah besar nilai, Anda akan mendapatkan korelasi palsu karena keacakan. Selain cara-cara biasa untuk mengatasi hal itu (set validasi, ambang batas yang cukup tinggi) Anda dapat memeriksa apakah korelasinya simetris dan transitif. Jika ya, kemungkinan benar dan Anda harus memeriksanya lebih lanjut.

Dl
sumber
1

Metode yang saya gunakan adalah matriks bayangan, di mana dataset terdiri dari variabel indikator di mana 1 diberikan jika nilai hadir, dan 0 jika tidak. Mengkorelasikan ini satu sama lain dan data asli dapat membantu menentukan apakah variabel cenderung hilang bersama (MAR) atau tidak (MCAR). Menggunakan Rcontoh (meminjam dari buku "R in action" oleh Robert Kabacoff):

#Load dataset
data(sleep, package = "VIM")

x <- as.data.frame(abs(is.na(sleep)))

#Elements of x are 1 if a value in the sleep data is missing and 0 if non-missing.
head(sleep)
head(x)

#Extracting variables that have some missing values.
y <- x[which(sapply(x, sd) > 0)]
cor(y)

#We see that variables Dream and NonD tend to be missing together. To a lesser extent, this is also true with Sleep and NonD, as well as Sleep and Dream.

#Now, looking at the relationship between the presence of missing values in each variable and the observed values in other variables:
cor(sleep, y, use="pairwise.complete.obs")

#NonD is more likely to be missing as Exp, BodyWgt, and Gest increases, suggesting that the missingness for NonD is likely MAR rather than MCAR.
Phil
sumber
1
Di VIM , Anda juga dapat memeriksa spinoplots. Mereka memberikan histogram dua variabel dengan ketiadaan masing-masing. Kita dapat memplot dua variabel, dan melihat bagaimana hilangnya satu variabel berbeda satu sama lain. Misalnya, jika kita merencanakan waktu bertahan hidup dan penugasan pengobatan, jika kita melihat distribusi ketidakhadiran yang miring, kita dapat mengandaikan bahwa waktu kelangsungan hidup yang lebih rendah dikaitkan dengan lebih banyak yang hilang ... yaitu bahwa kelalaian dalam pengobatan adalah MAR karena tergantung pada mengamati waktu kelangsungan hidup variabel.
RayVelcoro
1
Pertanyaannya bertanya tentang MAR vs MNAR, tetapi jawaban Anda adalah tentang MCAR vs MAR. MCAR benar-benar berbeda dengan MNAR.
Tim
@ Tim Seperti yang dinyatakan AdamO dalam komentar di bawah pertanyaan, OP berarti MAR vs MCAR.
Phil