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

使用mice包pool函数时出现Calling var(x) on a factor x is defunct错误如何解决

报错产生原因
  • 直接触发原因:你传入pool()的mice插补结果对象kp_i包含因子类型的View列,pool()内部做统计量汇总时会调用var()计算方差,而R已不支持对因子类型变量调用var(),因此触发报错。
  • 根本原因:pool()函数的设计用途是合并基于各插补数据集拟合的统计模型结果,而非直接合并多个插补后的原始数据集,你的调用方式不符合函数设计逻辑。
修复方案

根据你的实际需求选择对应操作即可:

  1. 如果你仅需要获取插补完成的完整数据集,不需要合并模型结果,直接使用complete()函数即可,无需调用pool():
# 获取第1个插补结果的完整数据集
kp_complete <- complete(kp_i, action = 1)
# 获取所有插补结果拼接为长格式的数据集
kp_all_complete <- complete(kp_i, action = "long")
  1. 如果你确实需要合并多个插补数据集的模型拟合结果,需要先对每个插补数据集拟合模型,再将模型结果传入pool():
# 示例:对每个插补数据集拟合线性回归模型
kp_fit <- with(data = kp_i, expr = lm(Y ~ x + View))
# 合并模型结果
kp_p <- pool(kp_fit)
# 查看合并后的系数汇总
summary(kp_p)

内容的提问来源于stack exchange,提问作者Autodidactyle

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 04:15:03