#############################################################################
# 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 , 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 , 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"=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){
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)
Run the code above in your browser using DataLab