2023年5月14日日曜日

平均代入法による欠損データ処理はオワコンどころか黒歴史なので

このエントリーをはてなブックマークに追加
Pocket

野村総合研究所の塩崎氏と広瀬氏の記事*1がまた*2データ分析者に困惑を引き起こしている。「データが欠損している場合は、平均値や中央値で埋め合わせる作業を行います。」とあるのだが、欠損データ処理としてはよくない手法として知られている。

平均代入法は、欠損が完全にランダムに生じている(MCAR)とき以外は推定量にバイアスが入ると説明されることが多いが、MCARでも回帰分析などの推定に用いる場合はバイアスが入る。また、単一代入法になるので、標準誤差が過小推定される*3。名前がついているぐらい一般的なのだが、使ってはいけない過去の遺物だ。

推定前の処理としては、欠損データ列がある行を分析から除くリストワイズ法や、分析に用いる欠損データ列がある行を分析から除くペアワイズ法の方がまだよい*4。サンプルサイズの減少を避けたい場合は、単一代入法でも回帰代入などを使う方が望ましい。最近は、機械学習の前処理として用いることは困難かもだが、多重代入法で標準誤差の過小推定も抑制することが推奨されている。完全情報最尤法や完全ベイズ代入法で補定モデルを同時評価することも可能だ。

2017年に『欠測データ処理: Rによる単一代入法と多重代入法』が出ていたりと学びやすくなっているので、野村総合研究所の皆様にも現代的な統計手法を学んでいただきたい。

追記(2023/06/11 05:26):単なる平均値代入よりも層化代入したほうがマシと言うつもりで書いていたのだが、層化平均値代入が望ましい手法だと誤解させてしまったようなので、層化平均値代入への言及を削除した。補定する変数と他の変数の共分散がゼロであるという仮定が置かれるので、単一代入法としても回帰代入の方が望ましい。

追記(2023/05/14 22:21):どれぐらいバイアスが入るのかだが、y = 1 + 2x - 3z + ϵ(x, η ~ U(0, 1), z = x/2 + η/2, ϵ ~ N(0, 1))と言うデータ生成モデルで観測数300で変数xに153のMCARの欠損値があるデータで回帰分析を行なったところ、係数の推定量は以下のようになった。

MCARにおける欠損値補定方法の比較
完全データ LISTWISE法 平均代入法 回帰代入
Const. 0.8156076 0.6991427 0.4627317 0.8310401
x 1.8737007 2.1403241 1.6661803 2.1403241
z -2.7512185 -2.7009570 -1.7230858 -2.9469847

サンプルサイズを3万、欠損値を14,956にすると、以下のようになり、LISTWISE法が真の値や完全データによる推定値に近づく一方、平均代入法は埋まらない事が分かる。

完全データ LISTWISE法 平均代入法 回帰代入
Const. 1.006584 0.9994595 0.6597018 1.007731
x 2.035464 2.0735196 1.4023297 2.073520
z -3.023516 -3.0238542 -1.6917821 -3.062389

*1「データが不足」「質が低い」泥臭い前処理で徹夜するデータサイエンティストの実態 | 日経クロステック(xTECH)

*2関連記事:野村総合研究所データサイエンスラボの人々が描いたポジショニングマップ

*3Missing Data: Two Big Problems with Mean Imputation - The Analysis Factor

*4ただし、非線形のデータ生成プロセスからのデータを線形モデルで推定しているときでもないと顕在化しない気がするが、欠損が他の説明変数の値に依存して生じている(MAR)場合にバイアスが入る。

0 コメント:

コメントを投稿