2015-09-14 20 views
5

MICEを使用して複数代入によってモデルを開発しました。このモデルを使用して、標準誤差を含む新しい観測値(欠落データを含まない)に対する応答を予測したい。 MICEで作成したモデルオブジェクトをpredict()関数に渡すことができませんMICEを使用して多重代入で作成されたモデルを使用して新しい観測値に対する応答を予測する

組み込みのnhanesデータセットを使用した簡単な例です。私はPROB、たとえば、フォームage==3 ~ bmi + hyp + chlとロジスティック回帰モデルを開発し、予測することは、このモデルを使用していたと言う(年齢= 3 | BMI = 20、HYP = 2とCHL = 190)は明らかにそれを

#impute missing data on bmi, hyp, chl 
library('mice') 
imp<-mice(nhanes, seed=1) 

#create model on each imputed dataset 
model <- with(imp, glm(age==3 ~ bmi + hyp + chl, family=binomial)) 

#pool models into one 
poolmodel <- pool(model) 

#new data 
newdata <- data.frame(bmi=20, hyp=2, chl=190) 

#attempt to predict response using predict() function 
pred <- predict(object=model, newdata=newdata, type='link', se.fit=TRUE) 
#Error in UseMethod("predict") : no applicable method for 'predict' applied to an object of class "c('mira', 'matrix')" 

pred <- predict(object=poolmodel, newdata=newdata, type='link', se.fit=TRUE) 
#Error in UseMethod("predict") : no applicable method for 'predict' applied to an object of class "c('mipo', 'mira', 'matrix')" 

プールされた係数およびプールされた共分散行列を使用して予測応答および誤差を手動で計算することは容易であろう。しかし、実際の問題ははるかに大きく、モデルはスプラインと相互作用が少なく、計算がかなり複雑になります。私はむしろ、私のためにこれすべてを行うことができる既存の機能を使用したいと思います。

与えられた(プールされた)モデルオブジェクトと任意の与えられた新しい観測値の予測応答を出力する単純なソリューションがありますか?煩雑なコード変更を行う必要はありませんか?

答えて

1

これを行う1つの方法は、帰属するすべてのデータをまとめて、この完全なデータセットにモデルを適合させることです。その後、通常どおりに関数predictを使用することができます。プールによって生成されるパラメータの見積もりは、実際には、帰属するデータごとに同じモデルを適合させた場合のパラメータ推定値の平均です。もちろん、この場合、各共変量の標準誤差は過小評価されます。

+0

ありがとうございました。私は標準的なエラーを必要としないときにこのアプローチを使用しますが、通常は必要とします。 – wjchulme