能否对mice包生成的mira类对象使用lqmm拟合线性分位数混合模型?
问题结论与修正方案
核心结论
lqmm包目前没有内置对mice包mira/mids类多重插补对象的原生支持,无法直接传入mira对象完成建模,也不能直接无修改通过mice::with()调用。- 触发
'data' must be a data frame报错的根源是lqmm函数的参数校验逻辑强制要求用户必须显式传入data参数,且传入值必须为数据框,不会自动从上层调用环境中提取建模变量;原代码在with()内调用lqmm时未显式指定data参数,函数启动的第一步参数校验就直接触发报错。
可复现修正代码
手动提取所有插补完成的完整数据集,逐个传入lqmm拟合,再转换为mice兼容的格式做结果合并即可:
library(lqmm) library(mice) # 生成多重插补对象 imputed <- mice(airquality, m=5, printFlag = FALSE) # 提取m个插补后的完整数据框,存为列表 imputed_dfs <- complete(imputed, action = "all") # 遍历每个插补数据集,显式传入data参数拟合lqmm lqmm_fits <- lapply(imputed_dfs, function(current_df) { lqmm( Ozone ~ Solar.R + Wind + Temp + Day, random = ~1, tau = 0.5, group = Month, data = current_df, na.action = na.omit ) }) # 将拟合结果列表转换为mice识别的mira类对象,支持后续pool合并 class(lqmm_fits) <- c("mira", "list") lqmm_fits$m <- length(imputed_dfs) # 按Rubin规则合并多重插补结果 pooled_result <- pool(lqmm_fits) summary(pooled_result)
注意事项
如果调用pool()时提示无法提取模型系数或方差,说明mice默认的提取方法不兼容lqmm对象,可手动为lqmm对象编写tidy/glance适配方法,或逐个提取每个模型的固定效应系数、协方差矩阵,按照Rubin多重插补合并规则手动计算最终统计量即可。
内容的提问来源于stack exchange,提问作者De La Cruz
相关产品推荐
相关产品推荐

