Sampling of bootstrap data from a given random effects model
Sampling of bootstrap data from a given random effects model
lmer_bs() draws bootstrap samples based on the estimates for the mean and the variance components drawn from a random effects model fit with lme4::lmer(). Contrary to lme4::bootMer(), the number of observations for each random factor can vary between the original data set and the bootstrapped data. Random effects in model have to be specified as (1|random effect).
newdat: a data.frame with the same column names as the historical data on which model depends
futmat_list: a list that contains design matrices for each random factor
nboot: number of bootstrap samples
Returns
A list of length nboot containing the bootstrapped observations.
Details
The data sampling is based on a list of design matrices (one for each random factor) that can be obtained if newdat and the model formula are provided to lme4::lFormula(). Hence, each random factor that is part of the initial model must have at least two replicates in newdat.
If a random factor in the future data set does not have any replicate, a list that contains design matrices (one for each random factor) can be provided via futmat_list.
Examples
# loading lme4library(lme4)# Fitting a random effects model based on c2_dat1fit <- lmer(y_ijk~(1|a)+(1|b)+(1|a:b), c2_dat1)summary(fit)#----------------------------------------------------------------------------### Using c2_dat2 as newdat
c2_dat2
lmer_bs(model=fit, newdat=c2_dat2, nboot=100)#----------------------------------------------------------------------------### Using futmat_list# c2_dat4 has no replication for b. Hence the list of design matrices can not be# generated by lme4::lFormula() and have to be provided by hand via futmat_list.
c2_dat4
# Build a list containing the design matricesfml <- vector(length=4,"list")names(fml)<- c("a:b","b","a","Residual")fml[["a:b"]]<- matrix(nrow=6, ncol=2, data=c(1,1,0,0,0,0,0,0,1,1,1,1))fml[["b"]]<- matrix(nrow=6, ncol=1, data=c(1,1,1,1,1,1))fml[["a"]]<- matrix(nrow=6, ncol=2, data=c(1,1,0,0,0,0,0,0,1,1,1,1))fml[["Residual"]]<- diag(6)
fml
lmer_bs(model=fit, futmat_list=fml, nboot=100)