## Not run:
# #############################################################################
# # EXAMPLE 1: Nested multiple imputation and statistical inference
# #############################################################################
#
# library(BIFIEsurvey)
# data(data.timss2 , package="BIFIEsurvey" )
# datlist <- data.timss2
# # remove first four variables
# M <- length(datlist)
# for (ll in 1:M){
# datlist[[ll]] <- datlist[[ll]][ , -c(1:4) ]
# }
#
# #***************
# # (1) nested multiple imputation using mice
# imp1 <- mice.nmi( datlist , m=3 , maxit=2 )
# summary(imp1)
#
# #***************
# # (2) first linear regression: ASMMAT ~ migrant + female
# res1 <- with( imp1 , stats::lm( ASMMAT ~ migrant + female ) ) # fit
# pres1 <- pool.mids.nmi( res1 ) # pooling
# summary(pres1) # summary
# coef(pres1)
# vcov(pres1)
#
# #***************
# # (3) second linear regression: likesc ~ migrant + books
# res2 <- with( imp1 , stats::lm( likesc ~ migrant + books ) )
# pres2 <- pool.mids.nmi( res2 )
# summary(pres2)
#
# #***************
# # (4) some descriptive statistics using the mids.nmi object
# res3 <- with( imp1 , c( "M_lsc"=mean(likesc) , "SD_lsc"= stats::sd(likesc) ) )
# pres3 <- NMIcombine( qhat = res3$analyses )
# summary(pres3)
#
# #*************
# # (5) apply linear regression based on imputation list
#
# # convert mids object to datlist
# datlist2 <- mids2datlist( imp1 )
# str(datlist2, max.level=1)
#
# # double application of lapply to the list of list of nested imputed datasets
# res4 <- lapply( datlist2 , FUN = function(dl){
# lapply( dl , FUN = function(data){
# stats::lm( ASMMAT ~ migrant + books , data = data )
# } )
# } )
#
# # extract coefficients
# qhat <- lapply( res4 , FUN = function(bb){
# lapply( bb , FUN = function(ww){
# coef(ww)
# } )
# } )
# # shorter function
# NMIextract( results=res4 , fun=coef )
#
# # extract covariance matrices
# u <- lapply( res4 , FUN = function(bb){
# lapply( bb , FUN = function(ww){
# vcov(ww)
# } )
# } )
# # shorter function
# NMIextract( results=res4 , fun=vcov )
#
# # apply statistical inference using the NMIcombine function
# pres4 <- NMIcombine( qhat=qhat , u=u )
# summary(pres4)
#
# #--- statistical inference if only standard errors are available
# # extract standard errors
# se <- lapply( res4 , FUN = function(bb){
# lapply( bb , FUN = function(ww){
# # ww <- res4[[1]][[1]]
# sww <- summary(ww)
# sww$coef[,"Std. Error"]
# } )
# } )
# se
# # apply NMIcombine function
# pres4b <- NMIcombine( qhat=qhat , se=se )
# # compare results
# summary(pres4b)
# summary(pres4)
#
# #############################################################################
# # EXAMPLE 2: Some comparisons for a multiply imputed dataset
# #############################################################################
#
# library(mitools)
# data(data.ma02)
#
# # save dataset as imputation list
# imp <- mitools::imputationList( data.ma02 )
# print(imp)
# # save dataset as an mids object
# imp1 <- datlist2mids( imp )
#
# # apply linear model based on imputationList
# mod <- with( imp , stats::lm( read ~ hisei + female ) )
# # same linear model based on mids object
# mod1 <- with( imp1 , stats::lm( read ~ hisei + female ) )
#
# # extract coefficients
# cmod <- mitools::MIextract( mod , fun = coef)
# # extract standard errors
# semod <- lapply( mod , FUN = function(mm){
# smm <- summary(mm)
# smm$coef[,"Std. Error"]
# } )
# # extract covariance matrix
# vmod <- mitools::MIextract( mod , fun = vcov)
#
# #*** pooling with NMIcombine with se (1a) and vcov (1b) as input
# pmod1a <- NMIcombine( qhat = cmod , se = semod , NMI = FALSE )
# pmod1b <- NMIcombine( qhat = cmod , u = vmod , NMI = FALSE )
# # use method 2 which should conform to MI inference of mice::pool
# pmod1c <- NMIcombine( qhat = cmod , u = vmod , NMI = FALSE , method=2)
#
# #*** pooling with mitools::MIcombine function
# pmod2 <- mitools::MIcombine( results = cmod , variances = vmod )
# #*** pooling with mice::pool function
# pmod3a <- mice::pool( mod1 )
# pmod3b <- mice::pool( mod1, method="Rubin")
#
# #--- compare results
# summary(pmod1a) # method = 1 (the default)
# summary(pmod1b) # method = 1 (the default)
# summary(pmod1c) # method = 2
# summary(pmod2)
# summary(pmod3a)
# summary(pmod3b)
# ## End(Not run)
Run the code above in your browser using DataLab