多重代入法の際に、代入した変数を使って、合計得点などを計算して、最終的な解析がしたい場合がある
そんなときに、どうすればよいか
R で多重代入法を実施する方法の概要
R で多重代入法を行う基本的な方法は、以下の記事を参照
多重代入した後に変数同士の計算をしたい場合
多重代入法を行う際に、多重代入したあとの変数を使って、合計得点などの変数を作成したいときがある
合計得点を多重代入で補完する方法ではなく、もともとの変数を補完して、さらに合計を計算したい
そんな時はどうしたらよいだろうか
以下の手順に従って行うと、そのような変数作成ができる
- 後で計算したい変数(例:合計得点)を含めず、多重代入 mice を行う
- 多重代入データセットを縦に積み重ねたロングフォーマットのデータセットを作成する
- 変数の計算をして、欲しい変数(例:合計得点)を作成する
- 多重代入データセット mids 形式に戻す
- 解析して、結果を統合する
実際の R スクリプト
以下の R スクリプトに沿って実施すれば、多重代入したデータセットで変数計算をして、その後解析・統合ができる
以下の例は、BMI の 2 乗の変数 bmi2 を、BMI の補完の後に作成して、最終モデルに bmi2 を含めた解析をしている
使う関数は、mice, with, pool, summary 以外に、complete, as.mids を使う
complete は、補完データセットを取り出す関数で、”long” と付けることでロングフォーマットにできる
また、include=TRUE で、元のデータセットを含め、mids 形式(多重代入データセット形式)に戻せるようにしておく
as.mids が mids 形式に戻す関数である
# パッケージの読みこみ
library(mice)
# データセットの呼び出し
data(nhanes)
# 多重代入
nhanes_imputed <- mice(nhanes, m=100, seed=1)
# いったんロングフォーマットに(縦に 100 のデータセット)
# include = TRUE は欠損値がある元のデータセットを含める
# という意味(mids 形式に戻すため)
nhanes_imputed_df <- complete(nhanes_imputed, "long", include=TRUE)
# BMI の 2 乗という変数 bmi2 を作成する
nhanes_imputed_df$bmi2 <- nhanes_imputed_df$bmi^2
# 多重代入データセットフォーマット mids 形式に戻す
nhanes_imputed2 <- as.mids(nhanes_imputed_df)
# 解析
lm1 <- with(nhanes_imputed2, lm(chl ~ age + bmi + bmi2 + factor(hyp)))
# 統合
(summary.lm1 <- summary(pool(lm1)))
結果は、以下のとおりで、欠損値を補完した後に作成した bmi2 の変数として加わり計算されている
まとめ
R で多重代入法を実施するときに、多重代入をした後に、合計変数などを作成して、解析したい場合、どのようにするか解析した
多重代入データセットをいったん縦に並べてから、変数計算をして、再度多重代入データセット mids 形式に戻すという方法を使う
何らか参考になれば
コメント