記述統計●●○○○

欠損値

Missing Data ・ けっそんち

記録されなかった値。欠け方の仕組みを見極めて除外・補完を選ばないと分析が歪む

✦ 30秒で試す — 航海空欄が多いこと自体が、答えを語っていることがある空欄を埋めた後の全員の平均体重は、本当の平均と比べて?予想してみる

概要

欠損値は、本来記録されるはずだったのに記録されなかった値のことです。アンケートの無回答、センサーの故障による記録漏れ、システム移行で失われた項目——現実のデータには、ほぼ必ず穴が空いています。表計算ソフトの空白セル、プログラミング言語の NA や null、「-999」のような欠損を表す約束の値など、表現はさまざまですが、いずれも「値が無い」という情報を運んでいます。約束の値を欠損と気づかずに平均すると、-999 がそのまま計算に入ってしまうので、まず表現を揃えるところから作業が始まります。

欠損値が厄介なのは、単に「データが減る」からではありません。欠け方に偏りがあると、残ったデータが元の集団を代表しなくなり、平均も割合も相関もすべて歪むからです。「高収入の人ほど収入の設問に答えない」調査で無回答を除外すれば、平均収入は実際より低く推定されます。これは、分析対象が偏って選ばれてしまう選択バイアスの一種です。欠損値の処理とは、値の穴埋め作業である以前に、「なぜ欠けたのか」という仕組みを見極める推論の問題なのです。

そのため実務のデータ分析では、本題に入る前に「どの変数がどれくらい、どんなパターンで欠けているか」を確かめることが標準の手順になっています。外れ値の確認と並んで、データの品質を左右する最初の関門です。

なぜ生まれたか

欠損値が「まじめに理論化すべき問題」と認識されたのは、意外に新しく1970年代です。それまでの統計理論は、実験計画のように完全なデータを前提に組み立てられており、欠損への現場の対処は「欠けた行をまるごと捨てる」「平均で埋める」といった場当たり的なものでした。しかし社会調査や医学の追跡調査が大規模化すると、脱落や無回答が無視できない規模になり、捨てても埋めても結果が歪む事例が積み上がっていきます。困っていたのは、「どんなときに捨ててよく、どんなときに歪むのか」を判断する理論的な基準が無かったことでした。

この空白を埋めたのが、1976年のドナルド・ルービンによる欠損メカニズムの分類(MCAR / MAR / MNAR)です。「欠けるかどうかが何に依存しているか」で欠損を3種類に整理し、それぞれでどの処理が正当かを示したこの枠組みによって、欠損値処理は勘と慣習から理論のある手続きに変わりました。翌1977年には、欠けた部分を推定しながら最尤推定を行う EM アルゴリズムがデンプスター、レアード、ルービンによって一般的な形にまとめられ、1987年にはルービンが欠損の不確かさごと扱う多重代入法を体系化します。いずれも現在の統計ソフトに標準搭載される定番手法です。

詳細

欠け方の3分類 — MCAR・MAR・MNAR

欠損値処理の出発点は、欠け方の仕組み(欠損メカニズム)を3つに分類することです。年齢 X は全員分かっていて、年収 Y が一部欠けている調査を例にとります。欠けるかどうかを R と書くと、分類は「R に矢印を向けているのは何か」の違いとして描けます。

MCAR完全にランダム偶然年齢X: 観測済み年収Y: 一部欠損欠けR: 欠けるか除外しても平均は偏らない人数が減るだけMAR観測済みの X しだい年齢X: 観測済み年収Y: 一部欠損欠けR: 欠けるか除外すると平均は偏るX を使った補完で直せるMNAR欠けた値 Y 自身しだい年齢X: 観測済み年収Y: 一部欠損欠けR: 欠けるか除外しても補完しても偏るデータだけでは直せない
欠損メカニズムの3分類 — 「欠けるかどうか(R)を決めているのは何か」で、処理の正当性が変わる

MCAR(完全にランダムな欠損)は、欠けるかどうかがどのデータとも無関係な場合で、通信エラーでランダムに記録が飛んだようなケースです。MAR(観測データに依存する欠損)は、欠けやすさが観測できている他の変数で説明できる場合で、「若い人ほど年収を答えない(が、年齢は分かっている)」ようなケースです。MNAR(欠けた値そのものに依存する欠損)は、欠けやすさがまさにその欠けた値で決まる場合で、「年収が高い人ほど年収を答えない」ようなケースです。

⚡ 体験: 欠け方しだいで平均がずれる
欠け方
真の平均 429年収が欠けた人(年齢だけ分かる)
全員の真の平均残った人だけの平均補完した値・補完後の平均
欠けた人0人平均429真の平均とのずれ+0標準偏差141(真 141)

欠け方を選んで「欠損させる」を押してください。年収が消えた人は下の列へ落ちます。破線は全員の真の平均、金の線は残った人だけの平均です。

120 人の年齢と年収(万円)の架空データ。欠けた人は年収だけが不明で、年齢は分かっている

部品で3つを切り替えると、この分類が「どの処理なら結果が歪まないか」を直接決めていることが分かります。MCAR なら、欠けた人を除外しても平均はほとんどずれず、減るのは人数(つまり推定の精度)だけです。MAR では、残った人だけの平均は偏ります。しかし欠けやすさを決めているのは観測済みの年齢なので、年齢を手がかりにすれば補正できます。実際、欠けやすさが説明変数 X だけで決まる MAR では、残った人だけで求めた「X から Y を予測する回帰」は偏らないので、それを使って埋めると平均がほぼ戻ります。MNAR では、残った人からは「答えなかった高収入の人」の姿が分からないので、回帰で補完しても偏りが残ります。

MNAR に対しては、観測データだけで決着をつける方法は原理的にありません。欠け方について仮定を置いたモデルを立て、仮定を変えると結論がどれだけ動くかを調べる感度分析で、影響の幅を見積もるしかありません。しかも手元のデータから MAR と MNAR を確実に見分ける検定は存在せず、どちらと見なすかは、データがどう集められたかという文脈からの判断になります。

除外という選択肢とその代償

最も単純な処理は、欠損を含む行をまるごと除外するリストワイズ削除(完全ケース分析)です。実装が容易で多くのソフトの既定動作ですが、代償は2つあります。第一に、変数が多いと「どこか1つでも欠けた行」が大量に発生し、データの大半を捨てることになりかねません。20個の変数がそれぞれ独立に5%ずつ欠けていれば、全部そろった行は約36%しか残りません。第二に、欠け方が MCAR でない限り、残ったデータは偏った標本になり、平均や割合の推定が系統的に歪みます。ただし先に見たとおり、欠けやすさが説明変数だけで決まる場合の回帰係数のように、除外しても偏らない量もあります。何を推定したいかによって、除外の害は変わるのです。

変数の組ごとに使える行を使うペアワイズ削除という方法もあります。たとえば相関行列を作るとき、A と B の相関は A と B がそろった行で、A と C の相関は A と C がそろった行で計算します。捨てるデータは減りますが、組ごとに違う人の集まりで計算するため、相関行列どうしのつじつまが合わなくなることがあり、その後の多変量解析で計算が破綻する原因になります。

補完 — 単一代入から多重代入へ

除外の代わりに値を埋めるのが補完(代入)です。古典的なのは代表値で埋める平均値代入ですが、部品で試したとおり、欠けた人全員が同じ値に並ぶので、分散と標準偏差が実際より小さく見積もられ、他の変数との相関も弱まります。回帰分析で予測した値を埋める回帰代入は平均の偏りを直せる場合がありますが、埋めた点が直線の上にぴったり並ぶので、やはりばらつきを過小評価し、相関を過大に見せます。どの単一代入も、埋めた値を「確実に分かっている値」として扱い、欠損に伴う不確かさを消してしまうのです。

この問題への現在の標準解が多重代入法です。欠けた部分を「予測値+ありうるばらつき」で埋めたデータセットを複数(たとえば20個)作り、それぞれで同じ分析を行い、結果を所定の規則(ルービンの規則)で統合します。補完済みのデータセットごとに結果がばらつく分が「欠損による不確かさ」として標準誤差に上乗せされるため、単一代入のように自信過剰な結論になりません。もう一つの正攻法は、欠けた値を埋めずに、観測できた部分の尤度を直接最大化する方法(完全情報最尤法や EM アルゴリズム。最尤推定の応用)です。どちらも MAR の仮定のもとで理論的な正当性があります。

実務の作法 — 欠損のパターンを見て、漏れなく扱う

処理方法の選択より先にやるべきことは、欠損そのものの観察です。変数ごとの欠損率を集計し、欠損の位置を可視化して、「特定の変数に集中していないか」「特定の行(回答者・期間)に集中していないか」「複数の変数が同時に欠けるパターンはないか」を確かめます。探索的データ分析の一部として、欠損した人と欠損していない人で他の変数の分布を比べると、欠け方が何に依存しているかの手がかりも得られます。欠損が特定の時期に固まっていればシステム障害、特定の設問に固まっていれば設問設計の問題が疑われ、対処はデータ処理ではなく収集プロセスの改善になります。

機械学習の前処理では、補完のタイミングにも注意が要ります。データ全体の平均で埋めてから訓練用と評価用に分けると、評価用データの情報が訓練に紛れ込むデータリークになり、性能を楽観的に見積もってしまいます。補完に使う平均や回帰モデルは訓練データだけから求め、それを評価データに当てはめるのが正しい手順です。

最後に、「欠けていること」自体が情報になる場合があります。任意入力欄の未記入は関心の低さを、検査値の欠損は医師がその検査を不要と判断したことを示しているかもしれません。欠損したかどうかを表す変数(欠損フラグ)を残しておくと、それ自体が予測に役立つことがあります。欠損は消すべき汚れではなく読むべきシグナルとして扱う——これが欠損値と付き合う基本姿勢です。

試問

データの欠け(欠損)は、欠けるかどうかを何が決めているかで3つに分けられます。どのデータとも無関係に欠ける MCAR、全員分そろっている別の変数しだいで欠ける MAR、欠けた値そのものしだいで欠ける MNAR です。どの例でも、欠けているのは文中の「値」だけで、それ以外に書かれている情報(年齢・シフト・性別など)は全員分そろっているものとします。

✦ 命題挑戦中

8つの欠損を、欠け方の仕組み(MCAR・MAR・MNAR)で仕分けよ

MCAR完全にランダム
MAR観測済みの変数しだい
MNAR欠けた値そのものしだい

項目を選んでから、入れる箱を選びます