我可以仅对用 R 中的 MICE 估算的数据集的子样本进行汇总回归分析吗?

问题描述 投票:0回答:1

我使用 R 中的“mice”包进行了多重插补。之后,我使用“with”和“pool”函数计算了汇总回归分析。

为了进一步分析,我只想查看数据的特定子样本。 我也想使用带有汇总回归分析的估算数据。

但是,我正在努力寻找实现这一目标的方法。这是因为“mice”中的汇总回归分析是通过在“mids”类的对象上使用“with”和“lm”函数来工作的,而不是仅仅在数据帧上调用“lm”。因此,我不能只通过传统方式对数据进行子集化,例如使用方括号或“子集”函数。

我知道理论上我可以使用“完整”函数提取估算数据集,对这些数据集进行回归分析,然后手动汇总结果,但我想避免这种情况。

我想做的一个例子是:

library(mice)

data <- as.data.frame(matrix(data = c(3, 2, 3, 4, 5, NA, 7, 10, 9, NA, NA, 12, 13, 14, 15, 16, NA, 18), nrow = 6))
names(data) <- c("a", "b", "c")
data$Sex <- c("male", "male", "female", "male", "female", "female")

imp <- mice(data = data,
            m = 20,
            maxit = 10,
            seed = 12,
            print = FALSE)

现在,我可以使用以下方法进行汇总回归分析:

summary(pool(with(imp, lm(a ~ b + c))))

我正在努力实现的是仅对男性受试者进行传导回归分析。

提前感谢您的帮助!

r linear-regression missing-data imputation r-mice
1个回答
0
投票

mice
返回 mids 类的对象,可以使用
filter
:

将其与外部布尔向量进行子集化
filter(imp, data$Sex %in% "male")

# or for more detail
imp_filtered <- filter(imp, data$Sex %in% "male")
imp_filtered$data

#  a  b  c  Sex
#1 3  7 13 male
#2 2 10 14 male
#4 4 NA 16 male

此处,外部布尔向量是通过测试数据集中男性是否为

TRUE
FALSE
而创建的。

因此,要实现此目的,您可以保存过滤后的对象或稍微修改您的代码:

# save filtered data to new object

imp_filtered <- filter(imp, data$Sex %in% "male")
summary(pool(with(imp_filtered, lm(a ~ b + c))))

# or all in one go

summary(pool(with(filter(imp, data$Sex %in% "male"), lm(a ~ b + c))))
© www.soinside.com 2019 - 2024. All rights reserved.