Wald Test for Nested Multiply Imputed Datasets
Performs a Wald test for nested multiply imputed datasets (NMIwaldtest
)
and ordinary multiply imputed datasets (MIwaldtest
),
see Reiter and Raghunathan (2007).
The corresponding statistic is also called the D_1 statistic.
The function create.designMatrices.waldtest
is a helper function
for the creation of design matrices.
NMIwaldtest(qhat, u, Cdes=NULL, rdes=NULL, testnull=NULL) MIwaldtest(qhat, u, Cdes=NULL, rdes=NULL, testnull=NULL) ## S3 method for class 'NMIwaldtest' summary(object, digits=4,...) ## S3 method for class 'MIwaldtest' summary(object, digits=4,...) create.designMatrices.waldtest(pars, k)
qhat |
List or array of estimated parameters |
u |
List or array of estimated covariance matrices of parameters |
Cdes |
Design matrix C for parameter test (see Details) |
rdes |
Constant vector r (see Details) |
testnull |
Vector containing names of parameters which should be tested for a parameter value of zero. |
object |
Object of class |
digits |
Number of digits after decimal for print |
... |
Further arguments to be passed |
pars |
Vector of parameter names |
k |
Number of linear hypotheses which should be tested |
The Wald test is performed for a linear hypothesis C \bold{θ}=r for a parameter vector \bold{θ}.
List with following entries
stat |
Data frame with test statistic |
qhat |
Transformed parameter according to linear hypothesis |
u |
Covariance matrix of transformed parameters |
The function create.designMatrices.waldtest
is a helper
function for the creation of design matrices.
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
## Not run: ############################################################################# # EXAMPLE 1: Nested multiple imputation and Wald test | TIMSS data ############################################################################# 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) #**** Model 1: Linear regression with interaction effects res1 <- with( imp1, stats::lm( likesc ~ female*migrant + female*books ) ) pres1 <- miceadds::pool.mids.nmi( res1 ) summary(pres1) # test whether both interaction effects equals zero pars <- dimnames(pres1$qhat)[[3]] des <- miceadds::create.designMatrices.waldtest( pars=pars, k=2) Cdes <- des$Cdes rdes <- des$rdes Cdes[1, "female:migrant"] <- 1 Cdes[2, "female:books"] <- 1 wres1 <- miceadds::NMIwaldtest( qhat=pres1$qhat, u=pres1$u, Cdes=Cdes, rdes=rdes ) summary(wres1) # a simpler specification is the use of "testnull" testnull <- c("female:migrant", "female:books") wres1b <- miceadds::NMIwaldtest( qhat=qhat, u=u, testnull=testnull ) summary(wres1b) #**** Model 2: Multivariate linear regression res2 <- with( imp1, stats::lm( cbind( ASMMAT, ASSSCI ) ~ 0 + I(1*(female==1)) + I(1*(female==0)) ) ) pres2 <- miceadds::pool.mids.nmi( res2 ) summary(pres2) # test whether both gender differences equals -10 points pars <- dimnames(pres2$qhat)[[3]] ## > pars ## [1] "ASMMAT:I(1 * (female==1))" "ASMMAT:I(1 * (female==0))" ## [3] "ASSSCI:I(1 * (female==1))" "ASSSCI:I(1 * (female==0))" des <- miceadds::create.designMatrices.waldtest( pars=pars, k=2) Cdes <- des$Cdes rdes <- c(-10,-10) Cdes[1, "ASMMAT:I(1*(female==1))"] <- 1 Cdes[1, "ASMMAT:I(1*(female==0))"] <- -1 Cdes[2, "ASSSCI:I(1*(female==1))"] <- 1 Cdes[2, "ASSSCI:I(1*(female==0))"] <- -1 wres2 <- miceadds::NMIwaldtest( qhat=pres2$qhat, u=pres2$u, Cdes=Cdes, rdes=rdes ) summary(wres2) # test only first hypothesis wres2b <- miceadds::NMIwaldtest( qhat=pres2$qhat, u=pres2$u, Cdes=Cdes[1,,drop=FALSE], rdes=rdes[1] ) summary(wres2b) ############################################################################# # EXAMPLE 2: Multiple imputation and Wald test | TIMSS data ############################################################################# library(BIFIEsurvey) data(data.timss2, package="BIFIEsurvey" ) dat <- data.timss2[[1]] dat <- dat[, - c(1:4) ] # perform multiple imputation imp <- mice::mice( dat, m=6, maxit=3 ) # define analysis model res1 <- with( imp, lm( likesc ~ female*migrant + female*books ) ) pres1 <- mice::pool( res1 ) summary(pres1) # Wald test for zero interaction effects qhat <- mitools::MIextract(res1$analyses, fun=coef) u <- mitools::MIextract(res1$analyses, fun=vcov) pars <- names(qhat[[1]]) des <- miceadds::create.designMatrices.waldtest( pars=pars, k=2) Cdes <- des$Cdes rdes <- des$rdes Cdes[1, "female:migrant"] <- 1 Cdes[2, "female:books"] <- 1 # apply MIwaldtest function wres1 <- miceadds::MIwaldtest( qhat, u, Cdes, rdes ) summary(wres1) # use again "testnull" testnull <- c("female:migrant", "female:books") wres1b <- miceadds::MIwaldtest( qhat=qhat, u=u, testnull=testnull ) summary(wres1b) #***** linear regression with cluster robust standard errors # convert object of class mids into a list object datlist_imp <- miceadds::mids2datlist( imp ) # define cluster idschool <- as.numeric( substring( data.timss2[[1]]$IDSTUD, 1, 5 ) ) # linear regression res2 <- lapply( datlist_imp, FUN=function(data){ miceadds::lm.cluster( data=data, formula=likesc ~ female*migrant + female*books, cluster=idschool ) } ) # extract parameters and covariance matrix qhat <- lapply( res2, FUN=function(rr){ coef(rr) } ) u <- lapply( res2, FUN=function(rr){ vcov(rr) } ) # perform Wald test wres2 <- miceadds::MIwaldtest( qhat, u, Cdes, rdes ) summary(wres2) ## End(Not run)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.