[R-sig-ME] Problem in simulate() with GLMMs when a link function is specified ?
Ben Bolker
bbolker at gmail.com
Fri Jun 1 13:32:03 CEST 2012
Pierre Morel <pier.morel at ...> writes:
> This is my first message to the list, I hope I won't start on the
> wrong foot !
Welcome.
> I installed the last version of lme4 (0.999902345-0)
> and I think there is a problem in simulate() when
> trying to simulate a GLMM in which a link function was specified.
> For example, this works (directly from the manual):
>
> gm1 <- glmer(cbind(incidence, size - incidence) ~ period +
> (1 | herd), data = cbpp, family = binomial)
> gg <- simulate(gm1,10)
>
> However, when you specify the link function for the binomial family (even if
you keep the default one,
> logit), there is an error:
>
> gm1 <- glmer(cbind(incidence, size - incidence) ~ period + (1 | herd),
> data = cbpp, family = binomial(link="logit"))
> gg <- simulate(gm1,10)
>
> Error in simulate.merMod(gm1, 10) : 'family' not recognized
>
> Not a problem if you want to use the default link,
> but I have psychophysics data for which I would like to use
> the mafc.logit(2) from the psyphy library.
> When I look at the source code, even if I am not good enough in R
> programming to fix it, it seems that it should work with any link
> function, since the end result seems only used to get the inverse
> link function:
> etasim <- etasim.fix+etasim.reff
> family <- object <at> call$family
> if(is.symbol(family)) family <- as.character(family)
> if(is.character(family))
> family <- get(family, mode = "function",
> envir = parent.frame(2))
> if(is.function(family)) family <- family()
> if(is.null(family$family)) stop("'family' not recognized")
> musim <- family$linkinv(etasim)
>
> Any idea for a quick fix ?
>
Thank you for the report.
This is now fixed on the SVN -- should be rebuilt/installable
on Linux or Windows in 24 hours or less. If you want to fix it
yourself, I added the line
if(is.language(family)) family <- eval(family)
right before the is.null() check.
If you're in a hurry you could (1) download the SVN code
and build it yourself; (2) copy lme4:::simulate.merMod and
make your own fixed version (I don't know offhand if simulate.merMod
makes use of other internal lme4::: functions)
I may not get around to updating the built MacOS binary at
lme4.r-forge.r-project.org/repos for a while -- if someone desperately
needs this for the Mac and can't build their own binary they
can let me know.
Ben Bolker
More information about the R-sig-mixed-models
mailing list