如何对R语言lmer线性混合效应模型进行正态化处理?
lmer线性混合效应模型残差非正态问题
模型构建代码
mixed.lmer6 <- lmer(Size ~ (Time+I(Time^2))*Country*STemperature + (1|Country:Locality)+ (1|Locality:Individual)+(1|Batch)+ (1|Egg_masses), REML = FALSE, data = data_NoNA)
残差诊断代码
plot_model(mixed.lmer6, type = "diag")
诊断结果

诊断显示模型残差存在非正态问题。已尝试手动对变量施加对数、幂次、平方根变换后重新拟合,残差正态性无改善;未找到适配lmer模型的自动变换函数,常用的Box-Cox变换无法直接应用于lmer模型。
解决方法
- 先明确基础认知:线性混合模型对残差正态性的鲁棒性远高于普通最小二乘线性模型,只要残差不是严重偏离正态(如存在极端离群值、强双峰分布),轻度偏态、厚尾对固定效应估计、方差参数估计的影响极小,无需强行修正。先计算残差的偏度、峰度,若偏度绝对值小于1、峰度在1-3区间,直接使用现有模型结果即可,报告时注明残差分布特征即可。
- 若残差确实严重偏离正态,优先更换模型分布族,不要执着于变量变换:
- 若响应变量
Size是右偏严重的正数值、计数类变量,直接改用glmer拟合泊松、负二项分布的广义线性混合模型;若Size是0-1区间的比例类变量,使用Beta分布族的混合模型。 - 若
Size是连续变量但残差厚尾、偏态明显,换用robustlmm包的rlmer函数拟合稳健线性混合模型,该方法会自动降低离群残差的权重,无需对变量做任何变换,对非正态残差的适配性远高于普通lmer。
- 若响应变量
- 针对lmer模型的幂次变换实现:可使用
car包的powerTransform函数,该函数支持lme4输出的merMod类对象,可直接计算响应变量的最优变换幂次,无需手动试错。得到幂次后对响应变量做对应变换再重拟合即可——如果计算得到的最优幂次和你之前手动试过的对数、平方根、常用幂次接近,说明变换路径无法解决当前残差问题,直接换用稳健模型或广义混合模型即可。 - 排查非正态的真实来源:不要只看整体残差图,按随机效应分组提取各水平对应的残差绘制QQ图,多数情况下整体残差非正态是个别随机效应分组内存在极端离群值导致的。先核对这些离群值是否为数据录入错误、实验异常值,确属异常值的直接剔除后重拟合,效果远好于变量变换。
内容的提问来源于stack exchange,提问作者Aaron Kiggen
相关产品推荐
相关产品推荐

