6

R の MICE パッケージを使用して、アンケート調査の欠損データに対する多重代入を正常に完了し、プールされた代入変数に対して線形回帰を実行しました。プールされた単一の変数を抽出してグラフにプロットする方法がわかりません。何か案は?

例えば

>imp <- mice(questionnaire) 
>fit <- with(imp, lm(APE~TMAS+APB+APA+FOAP))  
>summary(pool(fit))  

プールされた APE を TMAS でプロットしたい。

nhanes を使用した再現可能な例:

> library(mice)
> nhanes
> imp <-mice(nhanes)
> fit <-with(imp, lm(bmi~chl+hyp))
> fit
> summary(pool(fit))

プールされた bmi に対してプールされた chl をプロットしたいと思います (たとえば)。

私が達成できた最高のものは

> mat <-complete(imp, "long")
> plot(mat$chl~mat$bmi)

これは、5つの代入すべてを組み合わせたプロットを提供すると信じており、私が探しているものとはまったく異なります(私は思います)。

4

1 に答える 1

10

基になる with.mids() 関数を使用すると、推定された各データフレームで回帰を実行できます。したがって、1 回のリグレッションではなく、5 回のリグレッションが発生しました。pool() は、推定された係数を平均し、代入の量に応じて統計的推論の分散を調整するだけです。

したがって、プロットする単一のプールされた変数はありません。あなたができることは、5つの帰属セットを平均し、プールされた係数に基づいてある種の「回帰線」を再作成することです。

# Averaged imputed data
combchl <- tapply(mat$chl,mat$.id,mean)
combbmi <- tapply(mat$bmi,mat$.id,mean)
combhyp <- tapply(mat$hyp,mat$.id,mean)

# coefficients
coefs <- pool(fit)$qbar

# regression results
x <- data.frame(
        int = rep(1,25),
        chl = seq(min(combchl),max(combchl),length.out=25),
        hyp = seq(min(combhyp),max(combhyp),length.out=25)
      )

y <- as.matrix(x) %*%coefs


# a plot
plot(combbmi~combchl)
lines(x$chl,y,col="red")
于 2010-08-27T11:09:42.893 に答える