在mice中配置两水平多重插补的类变量时遇报错如何排查?
问题分析与解决方案
错误原因
你使用mice的2l.pmm(两水平预测均值匹配)方法处理重复测量数据的缺失值时,核心问题是未正确指定两水平模型的分组变量:
2l.pmm要求基于分组变量构建随机效应模型,但你的配置没有明确告诉mice哪个变量是分组单元(即patient),导致生成的lmer公式出现(1|)这种缺少分组变量的语法错误。- 你对预测矩阵
pred的设置逻辑完全搞反了:pred矩阵中值为-2的含义是「将对应的行变量作为两水平模型的分组变量,用于插补对应的列变量」,而你是在缺失变量(vit_d等)的行中将patient列设为-2,这完全不符合该参数的定义。
修正方案
方案1:用cluster参数指定分组(推荐,更直观)
直接在mice()函数中通过cluster参数明确指定分组变量patient,无需手动修改预测矩阵的-2设置,mice会自动处理两水平模型的结构:
imp <- mice( model_data, method = '2l.pmm', cluster = "patient", # 明确指定分组变量 m=10, printFlag = FALSE, seed=0 )
方案2:正确设置预测矩阵
如果坚持手动配置预测矩阵,需要将分组变量patient所在的行中,需要用两水平模型插补的变量(vit_d、ask_score、eq_vas)设为-2,表示这些变量的插补将以patient为分组构建两水平模型:
pred <- quickpred(model_data) # 修正:在patient行,将目标缺失变量设为-2 pred["patient", c('vit_d', 'ask_score', 'eq_vas')] <- -2 # 运行插补 imp <- mice( model_data, pred=pred, method = '2l.pmm', m=10, printFlag = FALSE, seed=0 )
内容的提问来源于stack exchange,提问作者Demetri Pananos
相关产品推荐
相关产品推荐

