lmer但不是glmer的错误解释:checkNlevels出错(reTrms $ flist,n = n,control):

时间:2014-03-26 13:44:06

标签: r lme4

我有一个类似的模型:

lmer(y ~ x + z + (1|g) + (1|dummy) , data = dat)

dummy是个别级随机效应,说明过度离散,即factor(1:nrow(dat))

运行时我得到以下错误,我不明白。这是否意味着我已经装配了我的模型?

  

checkNlevels出错(reTrms $ flist,n = n,control):     每个分组因子的级别数必须<观察次数

当我使用poisson系列运行此模型时,我不会收到此错误,例如

glmer(y ~ x + z + (1|g) + (1|dummy) , data = dat, family = poisson)

我知道单个级别的随机效果在高斯GLMM中甚至可能没有意义,但我想知道Poisson示例是否隐藏了某些东西,表明模型过度拟合?

2 个答案:

答案 0 :(得分:3)

过度离散在正常模型中并不是一个有用的概念,因为它已经适合观察水平的变异性。因此,错误消息告诉您,您无法在观察级别拥有分组因子。从这个意义上讲,是的,你正试图过度使用你的模型。

然而,在泊松(或其他glm)模型中,它确实有意义,因为观察水平的变化是根据glm中的方差项来确定的,因此添加额外方差是有意义的模型的术语,以说明观察水平的任何额外变化。因此,glmer不执行与lmer相同的检查。

答案 1 :(得分:2)

这实际上是一个CrossValidated问题,但是:

  • 线性混合模型的定义默认包括残差方差项;换句话说,该模型已经估计了残差中的离散量。如果在公式中包含观察水平随机效应,其方差将与残差方差混淆(两个项将联合无法识别;将有一组同样适合模型其中两个方差总和为常数)。这个问题不一定会严重影响模型的其余部分,但是包含这样一个无法识别的术语通常意味着你犯了错误/不太明白你在做什么,所以默认行为是在这种情况下返回错误。如果执行有充分理由适合此模型,则可以使用lmerControl覆盖错误。
  • 最常见的广义线性混合模型(即泊松和二项式)的定义 not 包括残差方差项 - 特别是泊松和二项式模型的“尺度参数”是根据定义固定为1。因此,可能在数据中具有过度分散。处理此问题的标准方法之一是添加观察级随机效果,如上所述。由于模型中没有默认的残差方差项,因此没有任何可疑之处,glmer不会抱怨。

参见例如http://glmm.wikidot.com/faq#overdispersion_est了解更多详情和参考资料。