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

如何用mice生成含合并插补值的数据集用于描述统计?

解决方案

要生成包含原始数据、5次单独插补结果及合并插补值的数据集,你可以通过以下步骤实现,核心是循环提取插补数据集、计算合并插补值,再将所有数据整合:

假设你的原始数据集为df,mice插补对象为imp(由imp <- mice(df, m=5)生成):

1. 处理原始数据

给原始数据添加类型标识,方便后续区分:

library(dplyr)
library(tibble)

# 原始数据添加分组标识
raw_data <- df %>%
  mutate(imputation_type = "原始数据",
         imputation_num = NA) %>%
  rownames_to_column(var = "obs_id")  # 添加观测ID确保行匹配

2. 提取所有单次插补数据集

用lapply循环提取5次插补结果,同时添加插补次数和类型标识:

# 提取5次插补数据并添加标识
imputed_datasets <- lapply(1:5, function(i) {
  complete(imp, i) %>%
    mutate(imputation_type = "单次插补",
           imputation_num = i) %>%
    rownames_to_column(var = "obs_id")
}) %>%
  bind_rows()  # 合并为单个数据集

3. 生成合并插补值数据集

这里以5次插补结果的均值作为合并值(你也可以根据需求替换为中位数等统计量):

# 生成合并插补值(按观测取均值)
pooled_data <- lapply(1:5, function(i) {
  complete(imp, i) %>%
    rownames_to_column(var = "obs_id")
}) %>%
  reduce(full_join, by = "obs_id") %>%  # 按观测ID合并所有插补数据
  group_by(obs_id) %>%
  summarise(across(-obs_id, mean, na.rm = TRUE)) %>%  # 计算每个变量的插补均值
  mutate(imputation_type = "合并插补值",
         imputation_num = NA)

4. 整合所有数据集

将原始数据、单次插补数据、合并插补值数据合并为最终数据集:

# 合并所有数据集
final_dataset <- bind_rows(raw_data, imputed_datasets, pooled_data) %>%
  select(-obs_id)  # 移除临时观测ID(如果不需要)

后续使用

生成的final_dataset可直接用于箱线图等描述统计,比如用ggplot2绘制分组箱线图:

library(ggplot2)

ggplot(final_dataset, aes(x = imputation_type, y = 你的变量名)) +
  geom_boxplot()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 05:50:56