欠損値の発生過程の類別

カテゴリ: stats

先日、欠損値の発生過程の例を図示してTweetしたところ、思ったより反響がよかったので、図をブラシュアップの上、記事に残すことにした。

俄仕込みなので、間違いがあったらTwitterで指摘して下さい。

欠損値の発生過程は大きく3種あるとされる。

  • MCAR; Missing Completely At Random
    • ある変数の欠損は、完全にランダム
  • MAR; Missing At Random
    • ある変数の欠損は、他の変数の測定値に依存してランダム
  • MNAR; Missing Not At random
    • ある変数の欠損は、ランダムではなく、自身の真値に依存

理解においてはMCAR, MAR, MNARの字面をあまり追い過ぎないのがキモだと思う。「ある変数」を「データ」と記載する例も見かけるが、前者の方が個人的には分かりよい。また、ランダムという言葉に惑わされがちだが、ここでのランダムはモデルとしてランダムか、ではなく、観測者にとってランダムに見えるか、くらいの気持ちでいた方がいい。

それでは欠損したデータを人工的に作って図にしてみよう。

xとyが平均0、分散1の正規分布に従う変数で、xの一部が欠損しうるとする。

そのとき、x-yの散布図に

  • xが観測できた場合を赤点
  • xが欠損した点を灰点

としてプロットした。

4つの図はそれぞれ

  • 欠損なし: xの欠損がない場合
    • 1000点全てを観測
  • MCAR: xの欠損が完全にランダムな場合
    • 1000点中300点を一様に欠損
  • MAR: xの欠損がyの値に依存する場合
    • y > 0 ならば欠損しうる
      (正しくは1000点のy中、yの値が上位500位以内の中から300点を一様に欠損)
  • MNAR: xの欠損がxの値に依存する場合
    • x > 0 ならば欠損しうる (正しくは1000点のx中、xの値が上位500位以内の中から300点を一様に欠損)

散布図の上部に描かれた線は

  • 赤線: 観測されたxのカーネル密度分布
  • 黒破線: xを全て観測できた時のxのカーネル密度分布

尚、1000点用意したデータのうち、欠損した点の数はMCAR, MAR, MNARいずれの場合も300点ずつである。

面白いのはMCARの場合でもMARの場合でもxの分布にはほとんど影響なく、yを見ない限り両者は識別不能であることだ。一方でMNARではxの分布が大きく歪むので、解析結果にバイアスが発生しやすいことに注意する必要がある。

ところで、MNARなxの欠損は x > 0 の時のみ起きると条件付けているものの、 x > 0 なデータの中からはランダムに選ばれている。 Not At Randomというのは見かけ上の問題に過ぎない。勿論、x > 0 を全損させれば、Not At Randomにもできる (ランダムに全損したと解釈することもできるが!)。

同様にMARな欠損を今回はランダムに選んだが、例えばy > 0な点を全損させてはどうだろうか。

乱数を用いていないという意味ではランダムではないが、MARには違いない。 yを見ず、xにだけ注目すれば「あたかも」xはランダムに欠損している。

当記事で作成した図のソースコードはこちら