データがランダムに欠落しているかどうかを判断する統計的アプローチ


21

バイナリ分類問題を攻撃するために使用する機能ベクトルの大きなセットがあります(Pythonでscikitを使用して)。代入について考える前に、データの残りの部分から、欠落しているデータが「ランダムに欠落している」か、ランダムに欠落していないかを判断することに興味があります。

この質問にアプローチする賢明な方法は何ですか?


より良い質問は、データが「ランダムに完全に欠落している」かどうかを尋ねることです。それを行う賢明な方法は何ですか?


欠落しているインジケーターと観測された変数の間に関連性がない場合、欠落しているデータのメカニズムはMCARです。
ランデル

@Randelこれをテストするために実際に適用する良いテストは何ですか?
レンビック

相関テストまたは回帰以外に特別なことはありません。
ランデル

3
テストするものではなく、想定するものです。
ティム

3
明確にするために、完全にランダムに欠落するということは、欠落確率が一定であり、何にも依存しないことを意味します。ランダムに欠落するということは、欠落が年齢や性別などの測定された要因に依存することを意味するため、一部のモデルを使用して欠落パターンを埋めることができます。ミッシングランダムにではない手段missingnessことはあなたが物事に依存しませんでした計測します。質問では、OP NMAR対MARを示していますが、OP MAR対MCARを意味します。
AdamO

回答:


8

コメントで話していた情報を見つけました。

バンBuurensブック、31ページ、彼は書いています

「MCAR対MARをテストするためのいくつかのテストが提案されています。これらのテストは広く使用されておらず、その実用的価値は不明です。2つの手順の評価についてはEnders(2010、pp。そのようなテストに必要な情報が欠落しているため、MAR対MNAR。」


質問はMAR対MNARについて尋ねていますが、あなたの答えはMCAR対MARについてです。MCARはMNARとはまったく異なります。
ティム

データがMARであると判断できれば、それで十分です。Bjornが言うように、それがMAR / MNARであるかどうかを見分けることはできませんが、この答えは私が信じる彼の質問の良い代用です。Endersテストを実行してMCARであることがわかった場合、代入は必要ありません。MARであることがわかった場合は、データを推測するか、データを綿密に調べて、MNARであると信じる理由があるかどうかを確認できます。
RayVelcoro

@RayVelcoroこれは識別可能性の問題です。NMARデータがMCARとして表示される可能性があります。Timは、NMAR(またはその逆)が私たちがテストするものではなく、私たちが想定しているものであることは正しいです。MCAR対MARについてのあなたのポイントにとって、より(最も?)重要なことは次のとおりです。データがMCARであり、MARメソッドを使用する場合、実際にデータに正味の影響はありますか?そうは思いません。MARメソッドの普及率、可用性、および使いやすさを考えると、テストおよびテストの修辞的な追跡を行うよりも、ノンパラメトリックの重み付けまたは代入の手順を使用する方が良いかもしれません。
AdamO

17

欠損データを取得できなかった場合、これは不可能です。観測されたデータから、欠落データがランダムに欠落しているか(MAR)、ランダムに欠落していないか(MNAR)を判断することはできません。データが明らかに完全にランダムに欠落していないかどうか(MCAR)しかわかりません。それ以上は、MNARとは対照的に、MCARまたはMARの妥当性のみに訴えます(たとえば、データが欠落している理由の報告された理由など)。あるいは、欠落データの割合は小さく、MNARでは結果が覆されるために非常に極端なシナリオが発生するため、あまり重要ではないと主張できるかもしれません(「転換点分析」を参照)。


1
どうもありがとうございました。データがMCARであるかどうかを判断する良い方法は何ですか?
レンビック

上記の@Björnは、データから学ぶことができるものに本質的な非対称性を反映するように言い換える必要があるかもしれません。データがMCARであるという仮説を偽造することは可能ですが(つまり、観測された共変量を利用して欠落の一部を説明するモデルを構築することにより)、MCARまたはその他のそのような仮説を確認することはできません。
デビッドC.ノリス

いい視点ね。私はそれをより明確にしました。
ビヨン

4

これは、分類の観点から非常に実行可能に聞こえます。

他のすべての機能を使用して、欠損データと非欠損データを分類します。ランダムな結果よりも大幅に優れている場合、データはランダムに欠落していません。


2

機能で見落とされている値と他の機能の値の間に何らかの相関関係があるかどうかを知りたい。

機能ごとに、値が欠落しているかどうかを示す新しい機能を作成します(「is_missing」機能と呼びましょう)。is_missing機能とその他の機能のお気に入りの相関測定を計算します(ここでは相互情報を使用することをお勧めします)。

2つのフィーチャ間に相関関係が見つからない場合でも、フィーチャグループによる相関関係が存在する可能性があることに注意してください(他の10個のフィーチャのXORの関数として値が欠落しています)。

多数の機能セットと多数の値がある場合、ランダム性により誤った相関が得られます。それに対処する通常の方法(検証セット、十分に高いしきい値)以外に、相関が対称的で推移的であるかどうかを確認できます。もしそうなら、それは本当である可能性が高いので、さらにチェックする必要があります。


1

私が使用する方法はシャドウマトリックスです。データセットはインジケーター変数で構成され、値が存在する場合は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.

1
VIM、あなたもspinoplotsをチェックアウトすることができます。それらは、それぞれに欠損がある2つの変数のヒストグラムを与えます。2つの変数をプロットし、一方の欠損が他方によってどのように変化するかを確認できます。たとえば、生存時間と治療の割り当てをプロットする場合、欠損の右側に歪んだ分布が見られる場合、生存時間が短いほど欠損が多いことに関連していると考えることができます。つまり、治療の欠損はMAR観察された変数生存時間。
-RayVelcoro

1
質問はMAR対MNARについて尋ねていますが、あなたの答えはMCAR対MARについてです。MCARはMNARとはまったく異なります。
ティム

@Timとしてアダモは OPがMCAR対MARを意味し、問題の下のコメントで述べました。
フィル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.