欠損値をどうにかこうにか補おうということでimputationがある。
欠損データ分析には欠損値のメカニズムとして MCAR, MAR, MNAR を挙げている。リンクのサンプルデータとして、欠損値を含む変数, 解析上の変数, 別の変数, 欠損値かどうかの確率変数(欠損値ならば1, そうでないなら0のフラグでもある), 真の値で構成される下のデータをやってみる。
Rならmiceでできる。他、miやpan, FIMLができるlavaanがあったが、ぶっちゃけimputationについて理解しきっていないのでmiceだけやってみる。
W X Y T R 3 83 NA 93 1 4 85 NA 99 1 5 95 NA 98 1 2 96 NA 103 1 5 103 128 128 0 3 104 102 102 0 2 109 111 111 0 6 112 113 113 0 3 115 117 117 0 3 116 133 133 0
a <- read.table("clipboard", sep=" ", header=TRUE)
imp1 <- mice(a[,-4], m=5) # 欠損値フラグを含む MAR だと思っている。 complete(imp1) # 欠損値補完をしたデータの表示 bwplot(imp1) imp2 <- mice(a[,-c(4,5)], m=5) # 欠損値フラグを含まない MCAR だと思っている。 complete(imp2) # 欠損値補完をしたデータの表示 bwplot(imp2)
となるのだが、真の値と比較してもすんごいずれてるんだけどこんなもんなのか…
imp2$imp$Y
1 2 3 4 5 1 128 102 133 102 128 2 128 111 117 111 102 3 128 128 111 128 117 4 111 111 113 128 128