miceを使って多重代入を行う際の基本的な流れについて。
サンプルデータ
使用するサンプルデータは、miceパッケージの「nhanes」です。含まれる変数はage, bmi, hyp, chlで、全て数値型です。age以外の変数には欠損値があります。
data(nhanes)
str(nhanes)
#'data.frame': 25 obs. of 4 variables:
# $ age: num 1 2 1 3 1 3 1 1 2 2 ...
# $ bmi: num NA 22.7 NA NA 20.4 NA 22.5 30.1 22 NA ...
# $ hyp: num NA 1 1 NA 1 NA 1 1 1 NA ...
# $ chl: num NA 187 187 NA 113 184 118 187 238 NA ...
では、実際にmiceを使って多重代入をしてみます。
基本的な流れ
欠損値の多重代入~目的の解析までの一連の流れは、mice()、with()、pool()を使って行われます。それぞれの大まかな役割は以下の通りです。
- mice():多重代入を行う
- with():代入したデータを使って解析を実行する
- pool():結果をプーリングする
サンプルコード
imp_data <- mice(nhanes, seed=123456, maxit=5, m=5, print=FALSE)
model <- with(imp_data, lm(chl ~ age + bmi))
est<- pool(model)
サンプルコードの説明
一行目のseed=123456で、シード値を設定しています。これによって結果の再現性が得られます。maxit=5でinteractionの回数を指定、m=5で多重代入データの数を指定しています。print=FALSEをTRUEにすると代入が進行具合?が表示されます。
(mixitやmの適切な回数は、シチュエーションによって異なるためここでは説明を省きます。)
解析結果の確認
summary()を使って、指定したモデルの推定結果を確認できます。
summary(est)
#or
summary(pool(est))