Imputation by a two-level normal model using pan
Source: R/mice.impute.2l.pan.R
mice.impute.2l.pan.Rd
Imputes univariate missing data using a two-level normal model with
homogeneous within group variances. Aggregated group effects (i.e. group
means) can be automatically created and included as predictors in the
two-level regression (see argument type
). This function needs the
pan
package.
Usage
mice.impute.2l.pan(
y,
ry,
x,
type,
intercept = TRUE,
paniter = 500,
groupcenter.slope = FALSE,
...
)
Arguments
- y
Incomplete data vector of length
n
- ry
Vector of missing data pattern (
FALSE
=missing,TRUE
=observed)- x
Matrix (
n
xp
) of complete covariates.- type
Vector of length
ncol(x)
identifying random and class variables. Random effects are identified by a '2'. The group variable (only one is allowed) is coded as '-2'. Random effects also include the fixed effect. If for a covariates X1 group means shall be calculated and included as further fixed effects choose '3'. In addition to the effects in '3', specification '4' also includes random effects of X1.- intercept
Logical determining whether the intercept is automatically added.
- paniter
Number of iterations in
pan
. Default is 500.- groupcenter.slope
If
TRUE
, in case of group means (type
is '3' or'4') group mean centering for these predictors are conducted before doing imputations. Default isFALSE
.- ...
Other named arguments.
Details
Implements the Gibbs sampler for the linear two-level model with homogeneous
within group variances which is a special case of a multivariate linear mixed
effects model (Schafer & Yucel, 2002). For a two-level imputation with
heterogeneous within-group variances see mice.impute.2l.norm
.
The random intercept is automatically added in
mice.impute.2l.norm()
.
Note
This function does not implement the where
functionality. It
always produces nmis
imputation, irrespective of the where
argument of the mice
function.
References
Schafer J L, Yucel RM (2002). Computational strategies for multivariate linear mixed-effects models with missing values. Journal of Computational and Graphical Statistics. 11, 437-457.
Van Buuren, S., Groothuis-Oudshoorn, K. (2011). mice
: Multivariate
Imputation by Chained Equations in R
. Journal of Statistical
Software, 45(3), 1-67. doi:10.18637/jss.v045.i03
See also
Other univariate-2l:
mice.impute.2l.bin()
,
mice.impute.2l.lmer()
,
mice.impute.2l.norm()
Author
Alexander Robitzsch (IPN - Leibniz Institute for Science and Mathematics Education, Kiel, Germany), robitzsch@ipn.uni-kiel.de
Alexander Robitzsch (IPN - Leibniz Institute for Science and Mathematics Education, Kiel, Germany), robitzsch@ipn.uni-kiel.de.
Examples
# simulate some data
# two-level regression model with fixed slope
# number of groups
G <- 250
# number of persons
n <- 20
# regression parameter
beta <- .3
# intraclass correlation
rho <- .30
# correlation with missing response
rho.miss <- .10
# missing proportion
missrate <- .50
y1 <- rep(rnorm(G, sd = sqrt(rho)), each = n) + rnorm(G * n, sd = sqrt(1 - rho))
x <- rnorm(G * n)
y <- y1 + beta * x
dfr0 <- dfr <- data.frame("group" = rep(1:G, each = n), "x" = x, "y" = y)
dfr[rho.miss * x + rnorm(G * n, sd = sqrt(1 - rho.miss)) < qnorm(missrate), "y"] <- NA
# empty imputation in mice
imp0 <- mice(as.matrix(dfr), maxit = 0)
predM <- imp0$predictorMatrix
impM <- imp0$method
# specify predictor matrix and method
predM1 <- predM
predM1["y", "group"] <- -2
predM1["y", "x"] <- 1 # fixed x effects imputation
impM1 <- impM
impM1["y"] <- "2l.pan"
# multilevel imputation
imp1 <- mice(as.matrix(dfr),
m = 1, predictorMatrix = predM1,
method = impM1, maxit = 1
)
#>
#> iter imp variable
#> 1 1 y
# multilevel analysis
library(lme4)
#> Loading required package: Matrix
#>
#> Attaching package: ‘Matrix’
#> The following objects are masked from ‘package:tidyr’:
#>
#> expand, pack, unpack
mod <- lmer(y ~ (1 + x | group) + x, data = complete(imp1))
#> boundary (singular) fit: see help('isSingular')
summary(mod)
#> Linear mixed model fit by REML ['lmerMod']
#> Formula: y ~ (1 + x | group) + x
#> Data: complete(imp1)
#>
#> REML criterion at convergence: 13126.5
#>
#> Scaled residuals:
#> Min 1Q Median 3Q Max
#> -3.4498 -0.6620 -0.0145 0.6770 3.8518
#>
#> Random effects:
#> Groups Name Variance Std.Dev. Corr
#> group (Intercept) 0.3460124 0.58823
#> x 0.0001001 0.01001 -1.00
#> Residual 0.7169051 0.84670
#> Number of obs: 5000, groups: group, 250
#>
#> Fixed effects:
#> Estimate Std. Error t value
#> (Intercept) 0.03455 0.03908 0.884
#> x 0.29829 0.01247 23.922
#>
#> Correlation of Fixed Effects:
#> (Intr)
#> x -0.045
#> optimizer (nloptwrap) convergence code: 0 (OK)
#> boundary (singular) fit: see help('isSingular')
#>
# Examples of predictorMatrix specification
# random x effects
# predM1["y","x"] <- 2
# fixed x effects and group mean of x
# predM1["y","x"] <- 3
# random x effects and group mean of x
# predM1["y","x"] <- 4