二分类结局变量GLMM模型诊断咨询:结果解读与代码疑问
二分类结局双随机截距GLMM模型诊断问题
我正在开展一项发病率研究,结局变量为二分类(是/否),构建了包含固定效应(均为分类协变量)与双随机截距的GLMM模型,代码如下:
twoRIM<-glmer(morbidity~co_fuel+wealth+san_class+residencey+education+marital+age+parity+Electricity_avaliablity +education*age+(1|region)+(1|participant_id),family=binomial,data=M)
经AIC比较,该模型为最优模型。随后我运行以下R代码进行模型诊断:
scatter.smooth(fitted(twoRIM),sqrt(abs(resid(twoRIM))),col=6)qqline(resid(twoRIM))plot(twoRIM)qqnorm(resid(twoRIM),main="Residual normal plot",col=4,adj=0.1)qqnorm(ranef(twoRIM)$"region"[[1]],main="Regional level random effects",col=2,adj=0.1)qqnorm(ranef(twoRIM)$"participant_id"[[1]],main="Cluster level random effects",col=6,adj=0.1)plot(fitted(twoRIM),resid(twoRIM),col=4)qqnorm(resid(twoRIM))
但生成的残差等诊断图与我以往认知差异较大,难以解读细节,怀疑代码参数设置有误,恳请专家提供宝贵建议。
诊断代码优化建议
- 残差类型选择:默认的
resid(twoRIM)对二分类GLMM不是最优选择,建议改用皮尔逊残差(resid(twoRIM, type = "pearson"))或偏差残差(resid(twoRIM, type = "deviance")),这两种残差更适配二分类模型的诊断逻辑。 - QQ图的正确用法:
qqline()需要配合qqnorm()一起运行,单独执行qqline(resid(twoRIM))无法生成完整QQ图,正确写法如下:qqnorm(resid(twoRIM, type = "pearson"), main = "Residual normal plot", col = 4, adj = 0.1) qqline(resid(twoRIM, type = "pearson")) - 随机效应诊断简化:查看随机效应时,直接用
plot(ranef(twoRIM))即可,该函数会自动生成两个水平随机效应的QQ图和箱线图,比手动提取数据更规范。 - 拟合值-残差图优化:二分类模型的残差本身具有离散性,建议添加平滑线辅助判断趋势:
plot(fitted(twoRIM), resid(twoRIM, type = "pearson"), col = 4) lines(lowess(fitted(twoRIM), resid(twoRIM, type = "pearson")), col = "red") - 删除冗余代码:你重复运行了两次
qqnorm(resid(twoRIM)),合并成一次并添加QQ线即可。
额外提示
二分类GLMM的残差诊断本身比线性模型更复杂,残差是离散的,QQ图不会像线性模型那样完美贴合直线。重点关注两个核心:
- 残差是否随拟合值出现系统性趋势(比如U型、递增/递减)
- 随机效应的QQ图是否大致符合正态分布(允许两端轻微偏离)
内容的提问来源于stack exchange,提问作者Sofonias Derso
相关产品推荐
相关产品推荐

