[R-sig-ME] use.u argument in bootMer in lme4a
joris.dewolf at cropdesign.com
joris.dewolf at cropdesign.com
Thu Dec 30 17:56:45 CET 2010
Hi,
(sorry for reposting...)
I am trying out the function bootMer in lme4a (lme4a_0.999375-59),
specifically the option whether or not to bootstrap the random effects and
stumbled on a couple of problems.
The documentation says:
bootMer(x, FUN, nsim=1, seed, use.u=FALSE, verbose=FALSE, control=list())
use.u: logical, indicating, if the spherized random effects should be
simulated / bootstrapped as well. If FALSE, they are not changed, and all
inference is conditional on these.
I interpret this as if the argument 'use.u' is FALSE, the random effects
are not simulated.
Applying this on my model with call
lmer(value ~ transgenity + (transgenity | event))
(the merMod object is given in attach), I get the following:
load("modL1.2.obj")
params <- function(m) {
VC <- VarCorr(m)$event
c(beta =m at fe@coef, sigma = sigma(m),
sig01 = sqrt(VC[1,1]), sig02 = sqrt(VC[2,2]),sig03 = VC[1,
2])
}
bs.uF <- bootMer(modL1.2, params, nsim = 3,use.u = FALSE)
[no warnings nor errors, output looks fine]
bs.uT <- bootMer(modL1.2, params, nsim = 3,use.u = TRUE)
Warning messages:
1: In (if (use.u) u else as.vector(U %*% rnorm(q))) + rnorm(n) :
longer object length is not a multiple of shorter object length
2: In (if (use.u) u else as.vector(U %*% rnorm(q))) + rnorm(n) :
longer object length is not a multiple of shorter object length
3: In (if (use.u) u else as.vector(U %*% rnorm(q))) + rnorm(n) :
longer object length is not a multiple of shorter object length
[only this warning, output looks fine as well]
In order to understand the warning, I checked the function bootMer from
which I reproduced two pieces of code.
snippet1:
if (use.u) {
u <- x at re@u
}
else {
U <- crossprod(x at re@Zt, x at re@Lambda)
q <- ncol(U)
}
snippet2
y <- {
X.beta + sigm.x * ((if (use.u)
u
else as.vector(U %*% rnorm(q))) + rnorm(n))
}
My two questions are:
1. From snippet 2, it seems to me that if(use.u) == TRUE, the random
effects are NOT bootstrapped, contrary to what the documentation says.
2. u has indeed wrong dimensions. Would
u <- crossprod(x at re@Zt, x at re@u)
be the correct definition of u?
Thanks.
Joris
> sessionInfo()
R version 2.12.0 (2010-10-15)
Platform: i386-pc-mingw32/i386 (32-bit)
locale:
[1] LC_COLLATE=Dutch_Belgium.1252 LC_CTYPE=Dutch_Belgium.1252
[3] LC_MONETARY=Dutch_Belgium.1252 LC_NUMERIC=C
[5] LC_TIME=Dutch_Belgium.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] boot_1.2-43 TeachingDemos_2.7 coda_0.14-2 lme4a_0.999375-59
[5] MatrixModels_0.2-1 minqa_1.1.13 Rcpp_0.8.9 Matrix_0.999375-46
[9] lattice_0.19-13 RODBC_1.3-2 gtools_2.6.2 rj_0.5.0-5
loaded via a namespace (and not attached):
[1] codetools_0.2-2 grid_2.12.0 nlme_3.1-97 rJava_0.8-8
[5] splines_2.12.0 stats4_2.12.0 tools_2.12.0
More information about the R-sig-mixed-models
mailing list