You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否对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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 12:18:18