这确实是一个尚未修复的错误lme4:https ://github.com/lme4/lme4/issues/156 。但是,解决方法很简单:只需在数据框中进行转换,as.factor()而as.numeric()不是在公式中,例如
d.sdg.ngb = transform(d.sdg.ngb,species=factor(species))
msdgtot = glmer(sdg.dens ~ ngbr.trees + (1 + ngbr.trees | species),
data=d.sdg.ngb,family=poisson)
一般来说,我认为这甚至没有必要——至少最近版本的glmer自动将分组变量转换为species因子——但我很感激想要小心/明确。如果出于某种原因我不想将分组变量永久转换为因子,我通常会制作变量的因子版本,例如
d.sdg.ngb = transform(d.sdg.ngb,fspecies=factor(species))
然后使用fspecies而不是species在公式中。
对于它的价值,这在以前发布的版本中也是一个问题lme4:with lme4.0(向后兼容的版本),
gm1 <- glmer(cbind(incidence, size - incidence) ~ period + (1 | herd),
data=cbpp,family=binomial)
工作正常,但
gm1 <- glmer(cbind(incidence, size - incidence) ~ period + (1 | factor(herd)),
data=cbpp,family=binomial)
给出Error in factor(herd) : object 'herd' not found(诚然,一个不那么神秘的错误消息,但仍然是一个错误)。