混合效应模型:lmer函数默认列表删除为何未按预期生效?
关于lme4混合模型缺失数据处理的疑问解答
核心误解纠正
lme4包的默认缺失数据处理并非你理解的按受试者的列表删除(即只要受试者有任意一个时间点的因变量缺失就排除整个受试者),而是逐观测删除——仅删除因变量(或模型中纳入的自变量)存在缺失的单个观测行,保留该受试者其他非缺失的观测点参与分析。
结合你的数据验证
从你的结果可以直接验证这一点:
- 模型输出显示
Number of obs: 216, groups: Patient, 131:总共有131名受试者(140总患者 - 9名两个时间点均缺失的患者),216个观测点正好是T0有数据的119个观测 + T3有数据的97个观测(119+97=216)。 - 这意味着模型保留了:
- 同时拥有T0和T3数据的受试者(共85名:119+97-131=85,贡献85×2=170个观测)
- 仅T0有数据的受试者(119-85=34名,贡献34个观测)
- 仅T3有数据的受试者(97-85=12名,贡献12个观测)
为什么lme4默认这么做?
混合效应模型的核心优势之一就是支持非平衡数据——不需要每个受试者都完成所有时间点的测量。逐观测删除能最大化利用现有数据,避免因少量缺失就丢弃整个受试者的全部信息,这在临床或纵向研究中尤为实用。
若需按受试者列表删除(仅保留双时间点均有数据的受试者)
如果你确实想要排除所有仅单个时间点有数据的受试者,可以先筛选数据再拟合模型:
# 筛选出两个时间点的BE_S均非缺失的患者 Data_filtered <- BES_alle_long_change %>% group_by(Patient) %>% filter(all(!is.na(BE_S))) %>% ungroup() # 拟合列表删除后的模型 model_listwise <- lmer(BE_S ~ Gruppe * Zeitpunkt + Alter + Zentrum + (1 | Patient), data = Data_filtered)
内容的提问来源于stack exchange,提问作者FabRic
相关产品推荐
相关产品推荐

