NMIwaldtest | R Documentation |
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 |
rdes |
Constant vector |
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{\theta}=r
for a parameter vector \bold{\theta}
.
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. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1198/016214507000000932")}
NMIcombine
## 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)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.