Verilerin rastgele eksik olup olmadığını belirlemek için istatistiksel bir yaklaşım


21

Ben (Python scikit öğrenmek kullanarak) bir ikili sınıflandırma sorununa saldırmak için kullanacağım özellik vektörleri büyük bir set var. Öngörü hakkında düşünmeye başlamadan önce, eksik verilerin 'rastgele eksik' mi yoksa rastgele olmayan eksik mi olduğunu verinin kalan kısımlarından belirlemeye çalışmakla ilgileniyorum.

Bu soruya yaklaşmanın mantıklı bir yolu nedir?


Daha iyi bir soru, verilerin 'rastgele tamamen eksik olup olmadığını' sormaktır. Bunu yapmanın mantıklı bir yolu nedir?


Eksik gösterge ile gözlemlenen herhangi bir değişken arasında bir ilişki yoksa, eksik veri mekanizması MCAR olur.
Randel

@Randel Bunu test etmek için pratikte uygulamak için iyi bir test nedir?
Lembik

Bir korelasyon testi veya regresyondan başka bir şey yoktur.
Randel

3
Test ettiğiniz bir şey değil, varsaydığınız bir şey .
Tim

3
Açık olmak gerekirse : tamamen rastgele eksiklik , eksiklik olasılığının sabit olduğu, hiçbir şeye bağlı olmadığı anlamına gelir. Rastgele kayıp , eksikliğin yaş veya cinsiyet gibi ölçülen bazı faktörlere bağlı olduğu anlamına gelir, böylece eksik modelleri doldurmak için bazı modeller kullanabilirsiniz. Eksik rastgele değil vasıta missingness şeylere bağlıdır vermedi ölçün. OP soru NMAR vs MAR diyor, ancak OP MAR vs MCAR demektir .
AdamO

Yanıtlar:


8

Bahsettiğim bilgileri yorumumda buldum.

Gönderen van Buurens kitabı , sayfa 31 diye yazıyor

"MCAR'ı MAR'ya karşı test etmek için birkaç test önerilmiştir. Bu testler yaygın olarak kullanılmamaktadır ve pratik değerleri belirsizdir. İki prosedürün değerlendirilmesi için bakınız Enders (2010, s. 17-21). Test etmek mümkün değildir. MAR ile MNAR'a karşı böyle bir test için gereken bilgiler eksik. "


Soru, MAR vs MNAR hakkında soruyor, ancak cevabınız MCAR vs MAR hakkında. MCAR, MNAR'dan tamamen farklıdır.
Tim

Verilerin MAR olduğunu belirleyebiliyorsanız, bu yeterli olacaktır. Bjorn'un dediği gibi, MAR / MNAR olup olmadığını söylemek mümkün değil, ancak bu cevap inandığım sorusu için iyi bir vekil. Enders testi yapacak olsaydınız ve MCAR olduğunu fark ederseniz, o zaman itibara ihtiyacınız olmazdı. Eğer MAR olduğunu fark ederseniz, o zaman MNAR olabileceğine inanmak için bir neden olup olmadığını görmek için verilerinizi zorlayabilir veya sert bir şekilde inceleyebilirsiniz.
RayVelcoro

@RayVelcoro Bir tanımlanabilirlik sorunudur: NMAR verilerinin MCAR görünmesi mümkündür. Tim, NMAR'ın (veya bunun tersi) test ettiğimiz bir şey olmadığı, varsaydığımız bir şey olduğu konusunda haklıdır. MCAR vs MAR ile ilgili görüşünüze göre, daha önemli (en çok?) Önemli olan şey: eğer veriler MCAR ise ve MAR yöntemlerini kullanıyorsanız, veriler üzerinde gerçekten herhangi bir net etki var mı? Ben öyle düşünmüyorum. MAR yöntemleri için penetrasyon, kullanılabilirlik ve kullanım kolaylığı göz önüne alındığında, belki de parametrik olmayan ağırlıklandırma veya impütasyon prosedürünü kullanmak, testlerin ve testlerin retorik kaz kovalamacasına katılmaktan daha iyidir.
AdamO

17

Eksik verileri almayı başaramadıkça bu mümkün değildir. Gözlenen verilerden eksik verinin rastgele (MAR) eksik mi yoksa rastgele (MNAR) mı eksik olduğunu belirleyemezsiniz. Sadece verilerin rastgele tamamen açık olup olmadığını anlayabilirsiniz (MCAR). Bunun ötesinde, yalnızca bildiklerinize dayanarak MNAR'ın aksine MCAR veya MAR'nın inandırıcılığına itiraz edilir (örneğin verilerin neden eksik olduğuna dair bildirilen nedenler). Alternatif olarak, bunun çok fazla önemli olmadığını iddia edebilirsiniz, çünkü eksik verilerin oranı küçüktür ve MNAR altında sonuçlarınızın devrilmesi için çok aşırı senaryolar olması gerekir (bkz. "Devrilme noktası analizi").


1
Çok teşekkür ederim. Verilerin MCAR olup olmadığını anlamanın iyi bir yolu nedir?
Lembik

@ Björn, yukarıdaki verilerden öğrenebileceğimiz temel asimetrileri yansıtacak şekilde yeniden düzenlenmesi gerekebilir. Sahte olmak mümkün olmasına rağmenVerilerin MCAR (yani, eksikliğin bir kısmını hesaba katan gözlenen ortak değişkenlerden yararlanan bir model oluşturarak) olduğu hipotezini MCAR veya bu tür başka bir hipotezi doğrulamak mümkün değildir .
David C. Norris

İyi bir nokta. Bunu daha net hale getirdim.
Björn

4

Bu bir sınıflandırma açısından oldukça yapılabilir.

Diğer tüm özellikleri kullanarak eksik ve eksik olmayan verileri sınıflandırmak istersiniz. Rastgele sonuçlardan önemli ölçüde daha iyi olursanız, verileriniz rastgele eksik olmaz.


2

Özellikte kaçırılan bir değer ile diğer özelliklerin herhangi bir değeri arasında bir korelasyon olup olmadığını bilmek istersiniz.

Özelliklerin her biri için, değerin eksik olup olmadığını belirten yeni bir özellik oluşturun (diyelim ki "is_missing" özelliği diyelim). İs_missing özelliklerinin ve diğer özelliklerinin en sevdiğiniz korelasyon ölçüsünü (burada karşılıklı bilgileri kullanmanızı öneririm) hesaplayın.

İki özellik arasında herhangi bir korelasyon bulamazsanız, özellik grubu nedeniyle bir korelasyona sahip olmanın hala mümkün olduğuna dikkat edin (başka bir on özelliğin XOR işlevi olarak bir değer eksik).

Çok sayıda özellik ve çok sayıda değeriniz var, rasgelelik nedeniyle yanlış korelasyonlar alacaksınız. Bununla başa çıkmanın normal yolları dışında (doğrulama seti, yeterince yüksek eşik) Korelasyonların simetrik ve geçişli olup olmadığını kontrol edebilirsiniz. Eğer öyleyse, muhtemelen doğrudur ve onları daha fazla kontrol etmelisiniz.


1

Kullandığım bir yöntem, veri kümesinin bir değer varsa 1 verildiğinde ve yoksa 0 olduğu gösterge değişkenlerinden oluşan bir gölge matrisidir. Bunların birbiriyle ve orijinal verilerle ilişkilendirilmesi, değişkenlerin birlikte eksik (MAR) olup olmadığının (MCAR) belirlenmesine yardımcı olabilir. RBir örnek kullanmak (Robert Kabacoff'un "R in action" kitabından ödünç almak):

#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.

1
In VIM , ayrıca spinoplots kontrol edebilirsiniz. Her birinde eksik olan iki değişkenli bir histogram verir. İki değişken çizebilir ve birindeki eksikliğin diğerine göre nasıl değiştiğini görebiliriz. Örneğin, hayatta kalma süresi ve tedavi ataması çizersek, eksikliğin doğru çarpık dağılımını görürsek, daha düşük hayatta kalma sürelerinin daha fazla eksiklikle ilişkili olduğunu söyleyebiliriz ... yani tedavideki eksiklik MAR'dır, çünkü gözlemlenen değişken sağkalım süresi.
RayVelcoro

1
Soru, MAR vs MNAR hakkında soruyor, ancak cevabınız MCAR vs MAR hakkında. MCAR, MNAR'dan tamamen farklıdır.
Tim

@Tim AdamO'nun sorunun altındaki bir yorumda belirttiği gibi OP, MAR vs MCAR anlamına geliyordu.
Phil
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.