library(mice) ?boys str(boys) ## impute data set (random seed only for reproducability) imp <- mice(boys, m = 3, seed = 43) ?mice ## extract the three complete data sets dat1 <- complete(imp, 1) dat2 <- complete(imp, 2) dat3 <- complete(imp, 3) complete(imp, 4) str(dat1) ##### ## 1) Easy using functions "with" and "pool" from package mice ## Good if you do standard analysis like lm, glm ##### fmMI <- with(imp, lm(hc ~ age + hgt + wgt)) poolRes <- pool(fmMI) round(summary(poolRes), 2) ## Good and simple overview: http://sites.stat.psu.edu/~jls/mifaq.html ##### ## 2) Do everything manually ## Good if you do non-standard analysis ##### ## Do analysis for each data set fmMF1 <- lm(hc ~ age + hgt + wgt, data = dat1) summary(fmMF1) fmMF2 <- lm(hc ~ age + hgt + wgt, data = dat2) summary(fmMF2) fmMF3 <- lm(hc ~ age + hgt + wgt, data = dat3) summary(fmMF3) ## save estimates for age Q <- c(-0.539592, -0.503504, -0.542918) U <- c(0.060954, 0.06156, 0.060442)^2 ## !! U is variance, not std.error ## Aggragate results m <- 3 Qbar <- mean(Q) Ubar <- mean(U) B <- 1/(m-1)*sum( (Q - Qbar)^2 ) T <- Ubar + (1 + 1/m)*B nu <- (m-1)*( 1 + Ubar/((1+1/m)*B))^2 alpha <- 0.05 c <- qt(1-alpha/2, df = nu) ## 1-alpha confidence interval for age coefficient Qbar - c*sqrt(T) Qbar + c*sqrt(T) ## [-0.66; -0.40] ## Compare to values from before: [-0.66; -0.40] - coincide