3

I am running a poisson regression on multiply imputed data to predict a common binary outcome. After running mice, I have obtained a stacked data frame comprising the raw data and five imputed datasets. Here is a toy example:

df <- mice::nhanes
imp <- mice(df) #impute data
com <- complete(imp, "long", TRUE) #creates data frame

I now want to:

  1. Run the regression on each imputed dataset
  2. Calculate robust standard errors using a sandwich variance estimator
  3. Combine / pool the results of both analyses

I can run the regression on the mids object using the with and pool commands:

fit.pois.mids <- with(imp, glm(hyp ~ age + bmi + chl, family = poisson))
summary(pool(fit.pois.mids))

I can also run the regression on each of the imputed datasets before combining them:

imp.df <- split(com, com$.imp); names(imp.df) <- c("raw", "imp1", "imp2", "imp3", "imp4", "imp5") #creates list of data frames representing each imputed dataset

fit.pois <- lapply(imp.df, function(x) {
  fit <- glm(hyp ~ age + bmi + chl, data = x, family = poisson)
  fit
})

summary(MIcombine(fit.pois))

Similarly, I can calculate the standard errors for each imputed dataset:

sand <- lapply(fit.pois, function(x) {
  se <- coeftest(x, vcov = sandwich)
  se
})

Unfortunately, MIcombine does not seem to return p-values. This post suggests using Zelig, but for that matter, I may as well just use mice. Further it does not appear to be possible to combine the estimates of the standard errors:

summary(MIcombine(sand.df))
Error in UseMethod("vcov") : 
  no applicable method for 'vcov' applied to an object of class "coeftest"

For the sake of simplicity, it seems that mice is a better option for pooling the results of the regression; however, I am wondering how I would go about updating (i.e., pooling and combining) the standard errors. What are some ways this could be addressed?

C_H
  • 191
  • 14

0 Answers0