こんにちは、えんせきです。
最近目が痒くて仕方ありません。寒いらしいですが、雨が待ち遠しいです。
流石に週末に病院へ行って対処を考えることにしました。
リストワイズ削除とは
リストワイズ削除では、指定された変数の少なくとも1つに欠損値がある場合、ケースは分析から除外される。
分析は、完全なデータセットを持つケースでのみ実行される。リストワイズはべらぼうにデータ量が多かったり欠損が少ない時はサクッとできるので便利。
ペアワイズ削除とは
ペアワイズ削除では、統計処理(相関とか)に欠落しているデータを含むケースを使用する場合に使う。例えば、各データに本来3つの変数があって、各A,B,Cとすると、
A,Bだけで計算可能な統計処理については、Cが欠損していても実行する。逆に、B,Cが必要な統計処理についてはCが欠損していたら出来ないから削除する。
今の例だと、A,Bの処理の方がより多くの情報を元に計算が行われていて、B,Cの処理はCの欠損によってより少ない情報で計算が行われている。
実際にやってみる
データセットは適当に作ったこちら
columns = ['Name', 'English', 'Mathematics', 'Japanese'] data_list = [['kawasaki', 71, 84, 81 ], ['fujisawa', 70, 77, 73 ], ['kikukawa', 60, 68, 56 ], ['kanaya', np.NaN, 89, 72], ['takatsuka', 18, 93, 87 ], ['totsuka', 56, 73, np.NaN], ['okazaki', 86, 71, 94], ['ogaki', 99, 74, np.NaN], ['mishima', 79, 71, 86], ['oofuna', 50, 62, 53], ['oiso', 40, 71, 37], ['ninomiya', 68, 53, 49], ['hayakawa', 83, np.NaN, 39], ['toyohashi', 72, 15, 88], ] tokai_class = pd.DataFrame(data_list, columns=columns) tokai_class
リストワイズ削除の適用
tokai_class.dropna()[f:id:ensekitt:20180308224057p:plain]
NaNの含まれていた、Kanaya, Totsuka, Ogaki, Hayakawaのデータが消えた。
ペアワイズ削除の適用
ここではEnglishとMathematicsに着目した処理を行うことにしてみる
tokai_class[tokai_class.English.notna() & tokai_class.Mathematics.notna()]
EnglishとMathematicsにNaNのあるKanayaとHayakawaが削除され、TotsukaとOgakiのデータは引き続き使える。
特徴
MCARの場合はこれらの手法は普通に使える。
欠損値があってもなくても分布が変わらないからそりゃそうかって感じ。ただ、やはりもったいない。