在线性混合模型中,能否将同一因子同时设为固定与随机效应?
线性混合模型中同一因子能否同时作为固定效应和随机效应?
首先直接给结论:技术上不是完全禁止,但这绝对不是常规做法,而且极大概率会导致模型不稳定(比如你遇到的收敛失败),同时会带来严重的可解释性问题。
为什么你的模型无法收敛?
看你给出的代码:
Model1 <- lmer (C1 ~ Place*Voicing*Length*Sp + (1+Place+Voicing+Length|Sp),data = C1,control=lmerControl(optCtrl=list(maxfun=50000)))
这里你把Sp同时放在了固定效应项(~ ... + Sp)和随机效应的分组变量((1+...|Sp))里。这相当于让模型同时做两件矛盾的事:
- 估计
Sp每个水平的固定效应值(即该水平相对于总体均值的偏移); - 估计
Sp每个水平围绕固定效应值的变异(随机效应的本质是估计组内偏离)。
这种参数设置会导致严重的共线性和参数冗余,优化器在寻找最优解时会陷入混乱,哪怕你调高了maxfun的上限,也很难收敛。
正确的做法是什么?
你需要先明确你的研究目的,再调整模型结构:
- 如果你的目标是估计
Place/Voicing/Length的效应,同时考虑这些效应在Sp不同水平间的变异,那应该把Sp只作为随机效应的分组变量,固定效应中去掉Sp:Model1 <- lmer(C1 ~ Place*Voicing*Length + (1+Place+Voicing+Length|Sp), data = C1, control=lmerControl(optCtrl=list(maxfun=50000))) - 如果你确实需要关注
Sp某些特定水平的效应(比如某几个Sp水平有明确的研究假设),可以把这些特定水平设为固定效应,剩余的Sp水平作为随机效应(即“部分固定、部分随机”的处理),但这种做法需要有明确的统计依据,不能把整个Sp因子同时放在固定和随机效应里。 - 另外,调整优化器(比如使用
control=lmerControl(optimizer="nloptwrap"))可能会缓解收敛问题,但这只是治标,核心还是要解决模型结构的参数冗余问题。
补充说明
把同一个因子同时作为固定和随机效应的做法,在统计理论上没有被完全排除,但在实际应用中几乎没有合理场景——固定效应的意义是“总体平均效应”,随机效应的意义是“组间变异”,两者同时存在会让结果的解释变得模糊不清,这也是主流统计文献和教材都不推荐这种操作的原因。
内容的提问来源于stack exchange,提问作者candle786
相关产品推荐
相关产品推荐

