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

基于mice包的合并统计量计算与假设检验技术咨询

多重插补(mice包)常见操作问题解答

前置操作说明

已导入示例数据集并完成多重插补,代码如下:

data(mtcars)
library(mice)
imp <- mice(mtcars,
            seed=123,
            m=5,
            maxit=10)

1. 计算合并均值(pooled means)与合并频数(pooled frequencies)

合并均值(针对连续变量如disp、hp)

用with()在每个插补数据集上计算均值,再通过pool()合并结果:

# 在各插补数据集上计算disp、hp的均值
fit_mean <- with(imp, data.frame(disp_mean = mean(disp), hp_mean = mean(hp)))
# 合并结果并查看
pooled_mean <- pool(fit_mean)
summary(pooled_mean)

输出结果里的estimate列就是对应变量的合并均值。

合并频数(针对分类变量如vs、am)

同样通过with()生成各插补数据集的频数表,再合并:

# 计算vs的频数
fit_freq <- with(imp, table(vs))
pooled_freq <- pool(fit_freq)
summary(pooled_freq)

# 若需要合并比例,先转成比例再合并
fit_prop <- with(imp, prop.table(table(vs)))
pooled_prop <- pool(fit_prop)
summary(pooled_prop)

2. 执行合并t检验或卡方检验(必须使用with())

with()是mice包处理多重插补数据的核心工具——它会把指定的统计操作逐一应用到每个插补好的数据集,生成包含m个分析结果的对象,再用pool()合并得到最终的合并统计量。

合并t检验(示例:检验am分组下disp的均值差异)

# 在各插补数据集上执行t检验
fit_t <- with(imp, t.test(disp ~ am))
# 合并检验结果
pooled_t <- pool(fit_t)
summary(pooled_t)

输出中的p.value即为合并后的检验p值,可用于判断组间均值差异是否显著。

合并卡方检验(示例:检验vs与am的关联性)

# 在各插补数据集上执行卡方检验
fit_chisq <- with(imp, chisq.test(table(vs, am)))
# 合并检验结果
pooled_chisq <- pool(fit_chisq)
summary(pooled_chisq)

# 若单元格期望频数较小,改用Fisher精确检验
fit_fisher <- with(imp, fisher.test(table(vs, am)))
pooled_fisher <- pool(fit_fisher)
summary(pooled_fisher)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 10:43:21