欠損処理と聞いて苦手意識を持つ人は多いと思う.
欠損が問題になるのはわかるけど,具体的にどうしたらいいかわからない.
そんな人と自分の備忘録として記す.
まず欠損がなぜ問題なのかと、その対策法を理解するために
欠損のメカニズムの理解が必要である.
・欠損メカニズム
→ MCAR、MAR、MNAR
まずこれらの違いを学んで欲しい.
ググれば素晴らしい解説がたくさん出てくるのでアウトソーシングする.
しかし,それら解説を読んでも分からない人に足りない知識はおそらく
DAG(Directed Acyclic Graph:非巡回有向グラフ)の理解だと思う.
DAGについても素晴らしい記事がたくさんあるのでググってください.
さて欠損メカニズムを理解したらそれらに対する対処法である.
めちゃくちゃざっくり言うと
多くの観察研究では欠損をMARと捉えて多重代入法をするしかない.ことが多い(怒られそう)
MCAR(欠損が問題にならないパターン)であることは少ない
というか示すのも難しい.
MNARだと多重代入法でも対処できないし,じゃあ諦めるのかというと
(MARとの明確な区別もできないので,MARとして扱うしかないことも)
よって,MARと考えて多重代入法をすることになる.
多重代入法とは?
① 代入フェーズ
欠損値を,他の観察できている因子(たくさんある方がいい)から予測(シュミレーション)
する.
この予測を1回だけで終わらすのではなく,たくさん(20~100回)やる.
そうすると20-100個の欠損が埋められたデータセットを作ることができる.
② 解析フェーズ
このたくさんのデータセットそれぞれで
もともとやりたかった解析(重回帰やロジスティックス回帰や傾向スコアマッチングなど)をやる.
つまり,解析は作ったデータセットの数だけ(20-100回)やることになる,
よって解析結果も20-100個できる.
③ 統合フェーズ
最後の段階で
このたくさんある解析結果を統合して1つの結果にする. 終了
たくさん代入フェーズにおける欠損予測のアルゴリズムはいくつか開発され,
それぞれ違いがあるが,明確な正解もないはずなので,
非統計家はそこに拘らなくてもよいだろし,論文を投稿して突っ込まれることも
ほぼないだろう.(たぶん 現時点では)
多重代入法を実装するに私はRを使っている.参考書も豊富である.
計算が重いのである程度のパソコンの性能がないと難しいのでそちらも考慮してほしい.
下記の教科書を参考にして私は実装することができた.
欠損に特化した参考書.
読むにはちょっとした数理的理解とRの理解が必要.
でも必要なこと.
因果推論に関わる話が網羅的に書かれている.
Rの実装にも役立ち非常に素晴らしい本.