[R] bug in lme4?
Martin Maechler
maechler at stat.math.ethz.ch
Wed Aug 20 10:30:18 CEST 2008
>>>>> <Antonio.Gasparrini at lshtm.ac.uk>
>>>>> on Wed, 20 Aug 2008 03:03:29 +0100 writes:
> Dear all,
> I found a problem with 'lme4'. Basically, once you load the package 'aod' (Analysis of Overdispersed Data), the functions 'lmer' and 'glmer' don't work anymore:
> library(lme4)
> (fm1 <- lmer(Reaction ~ Days + (Days|Subject), sleepstudy))
> (gm1 <- glmer(cbind(incidence, size - incidence) ~ period + (1 | herd),
> family = binomial, data = cbpp))
> install.packages("aod")
> library(aod)
> (fm1 <- lmer(Reaction ~ Days + (Days|Subject), sleepstudy))
> (gm1 <- glmer(cbind(incidence, size - incidence) ~ period + (1 | herd),
> family = binomial, data = cbpp))
> Taking into account that this package is used to perform
> similar analyses, this could be a problem.
It is a problem, and it *is* a bug;
thank you for reporting it, Antonio.
Since lme4 uses a NAMESPACE, it could and probably should make
sure to protect itself from incompatible function redefinitions
such as the one the 'aod' package "provides" :
Arguably, the bug is really in package 'aod' rather than 'lme4':
'aod' redefines the AIC() method for 'logLik' objects in a not quite
backward-compatible way:
The standard method (S3 alas, in package 'stats') is
> stats:::AIC.logLik
function (object, ..., k = 2)
-2 * c(object) + k * attr(object, "df")
<environment: namespace:stats>
The redefinition from package 'aod' is
> selectMethod(AIC, "logLik")
Method Definition:
function (object, ..., k = 2)
{
npar <- attr(object, "df")
nobs <- attr(object, "nobs")
c(AIC = -2 * c(object) + k * npar, AICc = -2 * c(object) +
k * npar + 2 * npar * (npar + 1)/(nobs - npar - 1))
}
<environment: 0x1cd22b80>
Signatures:
object
target "logLik"
defined "logLik"
which returns a (named) numeric vector of length 2,
and the code in lme4 was expecting length 1.
As a matter of fact, I even like the idea to extend AIC() to
also compute newer versions of AIC; but probably 'aod' should
have done so in a different way {maybe with an additional
'kind' argument to the method}.
Martin
> All the best
> Antonio Gasparrini
> Public and Environmental Health Research Unit (PEHRU)
> London School of Hygiene & Tropical Medicine
> Keppel Street, London WC1E 7HT, UK
> Office: 0044 (0)20 79272406 - Mobile: 0044 (0)79 64925523
> http://www.lshtm.ac.uk/people/gasparrini.antonio ( http://www.lshtm.ac.uk/pehru/ )
More information about the R-help
mailing list