r - 多个估算数据集 - 合并结果
问题描述
我有一个包含缺失值的数据集。我已经估算了这个数据集,如下所示:
library(mice)
id <- c(1,2,3,4,5,6,7,8,9,10)
group <- c(0,1,1,0,1,1,0,1,0,1)
measure_1 <- c(60,80,90,54,60,61,77,67,88,90)
measure_2 <- c(55,NA,88,55,70,62,78,66,65,92)
measure_3 <- c(58,88,85,56,68,62,89,62,70,99)
measure_4 <- c(64,80,78,92,NA,NA,87,65,67,96)
measure_5 <- c(64,85,80,65,74,69,90,65,70,99)
measure_6 <- c(70,NA,80,55,73,64,91,65,91,89)
dat <- data.frame(id, group, measure_1, measure_2, measure_3, measure_4, measure_5, measure_6)
dat$group <- as.factor(dat$group)
imp_anova <- mice(dat, maxit = 0)
meth <- imp_anova$method
pred <- imp_anova$predictorMatrix
imp_anova <- mice(dat, method = meth, predictorMatrix = pred, seed = 2018,
maxit = 10, m = 5)
这将创建五个估算数据集。然后,我创建了完整的数据集(示例数据集 1):
impute_1 <- mice::complete(imp_anova, 1) # complete set 1
然后我执行了所需的分析:
library(reshape)
library(reshape2)
datLong <- melt(impute_1, id = c("id", "group"), measure.vars = c("measure_1", "measure_2", "measure_3", "measure_4", "measure_5", "measure_6"))
colnames(datLong) <- c("ID", "Gender", "Time", "Value")
table(datLong$Time) # To check if correct
datLong$ID <- as.factor(datLong$ID)
library(ez)
model_mixed_1 <- ezANOVA(data = datLong,
dv = Value,
wid = ID,
within = Time,
between = Gender,
detailed = TRUE,
type = 3,
return_aov = TRUE)
我对所有五个数据集都这样做了,得到了五个模型:
model_mixed_1
model_mixed_2
model_mixed_3
model_mixed_4
model_mixed_5
现在我想结合这个模型的结果,生成一个结果。我之前也问过类似的问题,但我专注于模型。在这里我只想问一下,我如何才能简单地将五个模型组合起来。希望可以有人帮帮我!
解决方案
您正确理解了基本的多重插补过程。过程是这样的:
- 首先,您创建您的 m 估算数据集。(老鼠() - 功能)
- 然后你对每个数据集进行分析。(with() - 函数)
- 最后,您将这些结果组合在一起。(池() - 功能)
这是一个经常被误解的过程(人们通常认为您必须将您的 m 个估算数据集组合到一个数据集 - 这是错误的)
现在您必须在鼠标框架中执行这些步骤 - 您只在第 1 步之前执行此操作。
这里摘自老鼠的帮助:
pool() 函数结合了 m 次重复完整数据分析的估计值。进行多重插补分析的典型步骤顺序是:
用mice函数对缺失的数据进行插补,得到一个多插补数据集(类mids);
通过 with() 函数在每个插补数据集上拟合感兴趣的模型(科学模型),得到 mira 类的对象;
将每个模型的估计值汇集到一组估计值和标准误差中,结果是 mipo 类的对象;
或者,通过 pool.compare() 函数比较来自不同科学模型的汇总估计。
代码明智,这可以看起来像这样:
imp <- mice(nhanes, maxit = 2, m = 5)
fit <- with(data=imp,exp=lm(bmi~age+hyp+chl))
summary(pool(fit))
推荐阅读
- laravel - Laravel 包安装 “包”命名空间中没有定义命令
- php - 从两个表中获取数据时,我怎样才能使它不重复相同的结果?
- g1ant - mouse.click 命令循环工作?
- c++ - boost::asio::deadline_timer cancel() 方法没有调用定时器处理程序
- typescript - serviceWorker 找不到全局变量
- excel - 在excel中提取姓名
- python - 1个熊猫数据框中的时间序列条件滚动平均值
- amazon-web-services - 如何在无服务器中将 aws 堆栈名称与其他字符串连接起来?
- bash - bash 脚本中“jobs”命令的奇怪行为
- python - 使用 Scrapy 在 .asp 网站上下载所有 pdf 文件时出现问题