[R-sig-ME] using glmer with user-defined link function

Douglas Bates bates at stat.wisc.edu
Tue Oct 21 21:29:28 CEST 2008

You can use a "quasi" family with separate specification of the link
and the variance function but there are only a limited number of
variance functions available.

The reason that the inverse link and the variance functions are
hard-coded in glmer is because the number of evaluations of these
functions is potentially much, much greater than the number of
evaluations involved in fitting a generalized linear model (glm).  As
always, it doesn't matter that much when you have a small to moderate
sample size but it does matter when you have large sample sizes and
for models like IRT (item response theory) models the sample size can
be large indeed (tens of millions is not uncommon since each answer by
each candidate constitutes a distinct response).  It is difficult to
design code that is both efficient on large data sets and is flexible
in terms of the model specification.  In this case I chose to go with
the ability to handle large data sets.

If you have a custom variance function of inverse link function that
you would like to use, you are welcome to contribute the code for
them.  See the C functions lme4_varFunc, lme4_muEta and lme4_devResid
in lme4/src/lmer.c for the currently available code.

On Tue, Oct 21, 2008 at 1:57 PM, Ben Bolker <bolker at ufl.edu> wrote:
>  I tried to deal with this at one point to put in a negative
> binomial model.  I, too, was hopeful that just
> adding the name of my link function to the list
> of allowed names would be all that was
> needed. Unfortunately, the variance functions are
> hard coded within the glmer code, so it will not be completely
> trivial to do this ...
>   Ben
> vito muggeo wrote:
>> dear all,
>> I am trying to use an user-specified link function in glmer() (via the
>> argument family), but the error is
>> Error in famType(glmFit$family) : unknown link: 'my_link'
>> my_link is a proper link function (of class "link-glm") which works
>> correctly with glm() and also with MASS::glmmPQL()
>> It appears that the function lme4::famType() checks for the name by
>> comparing it with the names in "famNms" which includes "gaussian",
>> "binomial", "Gamma", ... however I do not know whether it is sufficient
>> to include "my_link" in famNms, and possibly I do not how to do it.. :-)
>> many thanks,
>> vito
> _______________________________________________
> R-sig-mixed-models at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models

More information about the R-sig-mixed-models mailing list