連鎖方程式による多重代入

R による欠損データの補完処理

Michal Oleszak

Machine Learning Engineer

MICEアルゴリズム

MICEアルゴリズムの4段階を示す図。「不完全データ」ノードから「代入済みデータ」と名付けられた3つのノードへ `mice()` とラベルされた矢印が伸びている。各ノードから `with()` とラベルされた矢印が「分析結果」ノードへ、さらに `pool()` とラベルされた矢印が「プール済み結果」ノードへ接続されている。

1 van Buuren, S., & Groothuis-Oudshoorn, C. G. M. (2011). mice: Multivariate Imputation by Chained Equations in R. Journal of statistical software, 45(3).
R による欠損データの補完処理

MICE: メリットとデメリット

メリット:

  • ブートストラップより少ない反復で済む。
  • MARおよびMCARデータに対応。
  • MNARデータへの感度分析が可能。

デメリット:

  • 使用できる代入メソッドが限られる。
  • チューニングの手間が多い(モデル選択、予測変数の選択)。
R による欠損データの補完処理

MICEの流れ:mice - with - pool

nhanes を20回代入:

library(mice)
nhanes_multiimp <- mice(nhanes, m = 20)

各代入済みデータセットに線形回帰モデルを適合:

lm_multiimp <- with(nhanes_multiimp, lm(Weight ~ Height + TotChol + PhysActive))

回帰結果をプール:

lm_pooled <- pool(lm_multiimp)
R による欠損データの補完処理

プール済み結果の分析

summary(lm_pooled, conf.int = TRUE, conf.level = 0.95)
            estimate std.error statistic      df p.value    2.5 %   97.5 %
(Intercept) -122.964    10.933   -11.247 735.389   0.000 -144.428 -101.500
Height         1.086     0.060    18.158 796.106   0.000    0.968    1.203
TotChol        2.653     0.884     3.003 305.460   0.003    0.915    4.392
PhysActive    -1.746     1.422    -1.228 733.957   0.220   -4.536    1.045
R による欠損データの補完処理

MICE: 利用可能なメソッド

van Buuren らの論文に掲載された表。MICEで利用可能な代入モデルを示しており、モデル名、キーワード、対応する変数の型、デフォルトオプションかどうかが記載されている。

1 van Buuren, S., & Groothuis-Oudshoorn, C. G. M. (2011). mice: Multivariate Imputation by Chained Equations in R. Journal of statistical software, 45(3).
R による欠損データの補完処理

変数の型ごとにメソッドを選択する

mice() の引数 defaultMethod は4つの文字列ベクトルで、以下の変数の代入メソッドを指定します:

  1. 連続変数
  2. 二値変数
  3. カテゴリ変数(順序なし因子)
  4. 因子変数(順序あり因子)
nhanes_multiimp <- mice(nhanes, m = 20, 
                        defaultMethod = c("pmm", "logreg", "polyreg", "polr"))
R による欠損データの補完処理

予測変数行列

predictorMatrix は、どの変数を他の変数の代入に使用するかを制御します。

nhanes_multiimp <- mice(nhanes, m = 20)
nhanes_multiimp$predictorMatrix
           Age Gender Weight Height Diabetes TotChol Pulse PhysActive
Age          0      1      1      1        1       1     1          1
Gender       1      0      1      1        1       1     1          1
Weight       1      1      0      1        1       1     1          1
Height       1      1      1      0        1       1     1          1
Diabetes     1      1      1      1        0       1     1          1
TotChol      1      1      1      1        1       0     1          1
Pulse        1      1      1      1        1       1     0          1
PhysActive   1      1      1      1        1       1     1          0
R による欠損データの補完処理

変数ごとに予測変数を選択する

  • 理想的には、適切なモデル選択を実施すべきです。
  • 簡便な代替手段:目的変数と相関のある変数を使用する。
pred_mat <- quickpred(nhanes, mincor = 0.25)
nhanes_multiimp <- mice(nhanes, m = 20, predictorMatrix = pred_mat)
print(pred_mat)
           Age Gender Weight Height Diabetes TotChol Pulse PhysActive
Age          0      0      0      0        0       0     0          0
Gender       0      0      0      0        0       0     0          0
Weight       1      1      0      0        0       0     1          0
...
R による欠損データの補完処理

MICEで代入を練習しましょう!

R による欠損データの補完処理

Preparing Video For Download...