2015-09-14 47 views
5

我使用MICE開發了一個通過多重插補法建立的模型。我想使用這個模型來預測新觀察結果(不包含缺失數據)的響應,包括標準錯誤。將MICE中創建的模型對象傳遞給predict()函數不起作用使用通過MICE進行多次插補而開發的模型預測新觀測值的響應

一個使用內置nhanes數據集的簡單示例。說我想開發一個邏輯迴歸模型的形式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')" 

顯然,將直截了當地使用合併係數和彙總協方差矩陣來手動計算預測的響應和誤差。然而,真正的問題要大得多,模型依賴於一些樣條和相互作用,使計算複雜化很大。我寧願使用現有的功能,可以爲我做這一切。

在R中是否有一個簡單的解決方案,可以輸出任何給定(合併)模型對象和任何給定的新觀察值的預測響應,而無需進行繁瑣的代碼修改?

回答

1

做到這一點的一種方法是將所有估算數據疊加在一起,並在這個完整的數據集上擬合模型。之後,您可以使用預測功能正常。當您分別在每個估算數據上擬合相同的模型時,由池生成的參數估計實際上是參數估計的平均值。當然,在這種情況下,每個協變量的標準誤都被低估了。

+0

謝謝。當我不需要標準錯誤時,我使用這種方法,但通常我確實需要它們。 – wjchulme

相關問題