pool.mids.nmi.Rd
Statistical inference for scalar parameters for nested multiply imputed datasets (Rubin, 2003; Harel & Schafer, 2002, 2003; Reiter & Raghanuthan, 2007; Harel, 2007).
The NMIcombine
(pool_nmi
as a synonym)
and NMIextract
functions are extensions of
mitools::MIcombine
and
mitools::MIextract
.
pool.mids.nmi(object, method="largesample") NMIcombine( qhat, u=NULL, se=NULL, NMI=TRUE, comp_cov=TRUE, is_list=TRUE, method=1) pool_nmi( qhat, u=NULL, se=NULL, NMI=TRUE, comp_cov=TRUE, is_list=TRUE, method=1) NMIextract(results, expr, fun) # S3 method for mipo.nmi summary(object, digits=4, ...) # S3 method for mipo.nmi coef(object, ...) # S3 method for mipo.nmi vcov(object, ...)
object | Object of class |
---|---|
method | For |
qhat | List of lists of parameter estimates. In case of an ordinary imputation it can only be a list. |
u | Optional list of lists of covariance matrices of parameter estimates |
se | Optional vector of standard errors. This argument overwrites
|
NMI | Optional logical indicating whether the |
comp_cov | Optional logical indicating whether covariances between parameter estimates should be estimated. |
is_list | Optional logical indicating whether |
results | A list of objects |
expr | An expression |
fun | A function of one argument |
digits | Number of digits after decimal for printing results in
|
... | Further arguments to be passed. |
Object of class mipo.nmi
with following entries
Estimated parameters in all imputed datasets
Estimated covariance matrices of parameters in all imputed datasets
Estimated parameter
Average estimated variance within imputations
Total variance of parameters
Degrees of freedom
Total fraction of missing information
Fraction of missing information of between imputed datasets (first stage imputation)
Fraction of missing information of within imputed datasets (second stage imputation)
Harel, O., & Schafer, J. (2002). Two stage multiple imputation. Joint Statistical Meetings - Biometrics Section.
Harel, O., & Schafer, J. (2003). Multiple imputation in two stages. In Proceedings of Federal Committee on Statistical Methodology 2003 Conference.
Harel, O. (2007). Inferences on missing information under multiple imputation and two-stage multiple imputation. Statistical Methodology, 4(1), 75-89. doi: 10.1016/j.stamet.2006.03.002
Reiter, J. P. and Raghunathan, T. E. (2007). The multiple adaptations of multiple imputation. Journal of the American Statistical Association, 102(480), 1462-1471. doi: 10.1198/016214507000000932
Rubin, D. B. (2003). Nested multiple imputation of NMES via partially incompatible MCMC. Statistica Neerlandica, 57(1), 3-18. doi: 10.1111/1467-9574.00217
if (FALSE) { ############################################################################# # 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 <- miceadds::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 <- miceadds::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 <- miceadds::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 <- miceadds::NMIcombine( qhat=res3$analyses ) summary(pres3) #************* # (5) apply linear regression based on imputation list # convert mids object to datlist datlist2 <- miceadds::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 <- miceadds::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 <- miceadds::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 <- miceadds::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 <- miceadds::NMIcombine( qhat=cmod, se=semod, NMI=FALSE ) pmod1b <- miceadds::NMIcombine( qhat=cmod, u=vmod, NMI=FALSE ) # use method 2 which should conform to MI inference of mice::pool pmod1c <- miceadds::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) }