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

如何用mice包在同一家庭组内填充相同缺失值?

按家庭分组的缺失值插补解决方案(基于mice包)

问题背景

使用mice包处理缺失值时,遇到家庭层面变量(如income_family)的插补需求:同一家庭内所有个体的该变量插补值必须完全一致。测试数据中Gerrard和Carragher家庭的income_family全为缺失,需为每个家庭生成单一插补值并填充给所有成员。

测试数据:

df_test <- data.frame(ID=c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20),
                  family=c("Gerrard", "Gerrard", "Gerrard", "Torres", "Torres", "Torres", "Keita", "Keita", "Keita", "Suarez", "Suarez", "Kuyt", "Kuyt", "Carragher", "Carragher", "Carragher", "Salah", "Salah", "Firmino", "Firmino"),
                  income_family=c(NA, NA, NA,  100, 100, 100, 90, 90, 90, 150, 150, 40, 40, NA, NA, NA, 200, 200, 99, 99))

期望结果:每个缺失家庭的所有成员获得相同插补值,如Gerrard家庭统一为55,Carragher家庭统一为66。

解决方案思路

核心是先在家庭层面插补,再映射回个体数据:

  • 提取家庭级别的唯一数据行(每个家庭仅保留一行)
  • 对家庭级数据执行缺失值插补,确保每个家庭生成一个插补值
  • 将插补后的家庭数据与原始个体数据合并,用家庭插补值填充所有成员的缺失项

代码实现

1. 单插补场景(m=1)

library(mice)

# 步骤1:生成家庭级唯一数据集
family_df <- unique(df_test[, c("family", "income_family")])

# 步骤2:对家庭级数据执行插补
imp_family <- mice(family_df, method = "pmm", m = 1, printFlag = FALSE)
family_imputed <- complete(imp_family)

# 步骤3:合并回个体数据集,填充缺失值
df_imputed <- merge(df_test, family_imputed, by = "family", suffixes = c("", "_imp"))
df_imputed$income_family <- df_imputed$income_family_imp
df_imputed <- df_imputed[, c("ID", "family", "income_family")]

# 查看结果
df_imputed

2. 多重插补场景(m>1)

如果需要生成多个插补数据集(用于后续线性混合模型的稳健性分析),可以循环处理每个插补后的家庭数据集:

# 生成m=5的多重插补
imp_family_multi <- mice(family_df, method = "pmm", m = 5, printFlag = FALSE)

# 遍历每个插补数据集,生成个体级插补结果
imputed_list <- lapply(1:5, function(i) {
  family_temp <- complete(imp_family_multi, action = i)
  df_temp <- merge(df_test, family_temp, by = "family", suffixes = c("", "_imp"))
  df_temp$income_family <- df_temp$income_family_imp
  df_temp[, c("ID", "family", "income_family")]
})

# 查看第1个插补数据集
imputed_list[[1]]

结果验证

执行上述代码后,每个缺失家庭的所有成员income_family值完全一致,符合预期需求。例如Gerrard家庭的3个成员会得到相同的插补值,Carragher家庭同理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 18:35:41