バイナリ分類問題を攻撃するために使用する機能ベクトルの大きなセットがあります(Pythonでscikitを使用して)。代入について考える前に、データの残りの部分から、欠落しているデータが「ランダムに欠落している」か、ランダムに欠落していないかを判断することに興味があります。
この質問にアプローチする賢明な方法は何ですか?
より良い質問は、データが「ランダムに完全に欠落している」かどうかを尋ねることです。それを行う賢明な方法は何ですか?
バイナリ分類問題を攻撃するために使用する機能ベクトルの大きなセットがあります(Pythonでscikitを使用して)。代入について考える前に、データの残りの部分から、欠落しているデータが「ランダムに欠落している」か、ランダムに欠落していないかを判断することに興味があります。
この質問にアプローチする賢明な方法は何ですか?
より良い質問は、データが「ランダムに完全に欠落している」かどうかを尋ねることです。それを行う賢明な方法は何ですか?
回答:
コメントで話していた情報を見つけました。
バンBuurensブック、31ページ、彼は書いています
「MCAR対MARをテストするためのいくつかのテストが提案されています。これらのテストは広く使用されておらず、その実用的価値は不明です。2つの手順の評価についてはEnders(2010、pp。そのようなテストに必要な情報が欠落しているため、MAR対MNAR。」
欠損データを取得できなかった場合、これは不可能です。観測されたデータから、欠落データがランダムに欠落しているか(MAR)、ランダムに欠落していないか(MNAR)を判断することはできません。データが明らかに完全にランダムに欠落していないかどうか(MCAR)しかわかりません。それ以上は、MNARとは対照的に、MCARまたはMARの妥当性のみに訴えます(たとえば、データが欠落している理由の報告された理由など)。あるいは、欠落データの割合は小さく、MNARでは結果が覆されるために非常に極端なシナリオが発生するため、あまり重要ではないと主張できるかもしれません(「転換点分析」を参照)。
機能で見落とされている値と他の機能の値の間に何らかの相関関係があるかどうかを知りたい。
機能ごとに、値が欠落しているかどうかを示す新しい機能を作成します(「is_missing」機能と呼びましょう)。is_missing機能とその他の機能のお気に入りの相関測定を計算します(ここでは相互情報を使用することをお勧めします)。
2つのフィーチャ間に相関関係が見つからない場合でも、フィーチャグループによる相関関係が存在する可能性があることに注意してください(他の10個のフィーチャのXORの関数として値が欠落しています)。
多数の機能セットと多数の値がある場合、ランダム性により誤った相関が得られます。それに対処する通常の方法(検証セット、十分に高いしきい値)以外に、相関が対称的で推移的であるかどうかを確認できます。もしそうなら、それは本当である可能性が高いので、さらにチェックする必要があります。
私が使用する方法はシャドウマトリックスです。データセットはインジケーター変数で構成され、値が存在する場合は1が与えられ、存在しない場合は0が与えられます。これらを相互に関連付け、元のデータを使用すると、変数が一緒に欠落する傾向があるか(MAR)、そうでないか(MCAR)を判別できます。R
例として使用する(ロバート・カバコフによる本「R in action」からの借用):
#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.