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

mice包中标准化变量无法插补的原因及解决方法

解决方案:解决mice无法处理标准化矩阵列的问题

错误原因

scale()函数返回的是矩阵类对象,而mice包不支持处理数据框中类为矩阵的列,因此触发报错。

解决方法

方法1:将标准化结果转换为向量

直接用as.vector()把scale()返回的矩阵转为数值向量,即可让mice正常处理:

scale.work <- work %>% 
  mutate(Scale_Cups = as.vector(scale(Coffee_Cups)))

# 执行插补
imp.scale <- scale.work %>% 
  mice(m=5)

也可以通过提取矩阵的第一列实现同样效果:

scale.work <- work %>% 
  mutate(Scale_Cups = scale(Coffee_Cups)[, 1])

方法2:手动计算标准化值

绕过scale()函数,直接用均值和标准差手动计算标准化值,生成的是原生数值向量:

# 先计算均值和标准差(可保留用于后续还原数据)
cups_mean <- mean(work$Coffee_Cups, na.rm = TRUE)
cups_sd <- sd(work$Coffee_Cups, na.rm = TRUE)

scale.work <- work %>% 
  mutate(Scale_Cups = (Coffee_Cups - cups_mean) / cups_sd)

# 执行插补
imp.scale <- scale.work %>% 
  mice(m=5)

验证

执行上述任意一种方法后,查看Scale_Cups的类型:

class(scale.work$Scale_Cups)

返回"numeric"即说明转换成功,此时mice可以正常生成mids对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 04:10:32