混合模型随机效应显著性检验:lme4结合RLRsim使用报错咨询
报错原因
你最初拟合的(I(Days-4.5)|Subject)随机效应结构会同时估计三个参数:随机截距方差、随机斜率方差、两者的协方差。检验随机斜率显著性时,零假设为「随机斜率方差=0 + 截距斜率协方差=0」,属于同时检验2个参数的场景,而exactRLRT仅支持单个方差参数的检验,因此会触发报错。
你之前调整为独立随机效应结构得到的p值确实无效,因为该结构强制设定截距和斜率的协方差为0,和你原始的模型假设本质不同,检验的不是同一个参数。
可行解决方案
方案1:参数自助法似然比检验(推荐)
这是lme4官方文档推荐的适用于多参数随机效应检验的方法,不需要修改原始模型的随机效应协方差结构,完全保留你最初的模型设定。
需要用到pbkrtest包的PBmodcomp函数,示例代码如下:
# 加载所需包 library(lme4) library(pbkrtest) # 加载示例数据 data(sleepstudy, package = "lme4") # 拟合全模型(保留随机截距和斜率的协方差,和原始模型完全一致) x_full <- lmer(Reaction ~ I(Days-4.5) + (I(Days-4.5)|Subject), data = sleepstudy, REML = FALSE) # 似然比检验需要用ML估计,不能用默认的REML # 拟合零模型:仅保留随机截距,移除随机斜率 x_null <- lmer(Reaction ~ I(Days-4.5) + (1|Subject), data = sleepstudy, REML = FALSE) # 运行参数自助法检验,nsim为自助抽样次数,次数越高结果越稳定,可根据算力调整 pb_result <- PBmodcomp(x_full, x_null, nsim = 1000) summary(pb_result)
输出结果中PBtest对应的p值就是检验随机斜率显著性的结果,不需要假定随机效应独立。
方案2:贝叶斯后验检验
如果不想依赖频率派的p值,可以用贝叶斯框架拟合原始模型,直接查看随机斜率方差的95%最高密度区间(HDI)是否包含0来判断显著性:
library(brms) # 拟合贝叶斯混合模型,保留原始随机效应协方差结构 bayes_mod <- brm( Reaction ~ I(Days-4.5) + (I(Days-4.5)|Subject), data = sleepstudy, family = gaussian(), chains = 4, cores = 4 ) # 查看随机效应参数的后验统计结果 summary(bayes_mod, pars = "sd_Subject")
如果随机斜率方差的95%HDI不包含0,即可认为随机斜率效应显著。
注意事项
- 做似然比检验时,全模型和零模型必须统一使用ML估计,不能用默认的REML,否则检验结果无效。
- 参数自助法的抽样次数建议不低于1000,算力允许的情况下可调整到5000次以上,结果会更稳定。
内容的提问来源于stack exchange,提问作者z_11122
相关产品推荐
相关产品推荐

