我最近发现了一个相当意想不到的glmer对于分散不足的数据的行为:放置在53个森林地块中的4个巢箱中放置的鸡蛋数量。即使存在相当多的组间变异,标准偏差估计也会停留在0,也不会报告剩余标准偏差。
以下是一些接近实际数据分布的模拟数据:
set.seed(20180124)
library(lme4) #v1.1-13
plot_int <- rnorm(53,exp(2),1)
datt <- data.frame(id_plot = rep(1:53,each=5))
datt$Egg <- ceiling(rnorm(265,plot_int[datt$id_plot],0.1))
(glmer(Egg ~ 1 + (1 | id_plot),datt,family="poisson"))
Generalized linear mixed model fit by maximum likelihood (Laplace Approximation) ['glmerMod']
Family: poisson ( log )
Formula: Egg ~ 1 + (1 | id_plot)
Data: datt
AIC BIC logLik deviance df.resid
1085.9 1093.1 -541.0 1081.9 263
Scaled residuals:
Min 1Q Median 3Q Max
-1.10153 -0.40068 -0.05025 0.30018 0.65060
Random effects:
Groups Name Variance Std.Dev.
id_plot (Intercept) 0 0
Number of obs: 265, groups: id_plot, 53
Fixed effects:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 2.09721 0.02153 97.42 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
这是glmer的理想行为吗?是否有某种方法可以在模型拟合过程中检测出导致警告信息?
通过lmer运行它可以正确估计残差和组间差异。虽然尝试glmer.nb给出收敛警告和分散参数,它应该是负的(我猜)命中超大值。那么建模这些数据的最佳方法是什么,特别是如果正常近似不是一个选项(低意味着......)?