如何在 mice 之后对多个因变量重复执行 glm?

How to repeatedly perform glm over multiple dependent variables after mice?

我有一个数据框 nrow=4312, ncol=105,我使用 mice:

对它进行了多重插补
imp <- mice(data, m=20, maxit=10, method=meth, predictorMatrix=pred2, visitSequence=vis)

现在,我需要对 40 个不同的因变量分别重复执行多个逻辑回归,并将特定值提取到不同的数据框中。一个这样的回归和价值提取的例子是:

fit.HDP <- with(imp, glm(HDP ~ P0 + BMI + WtChange + MATAGE, family=binomial, subset=(P1==1)))
est.HDP <- pool(fit.HDP)
HDP <- summary(est.HDP)

HDP.OR <- exp(HDP[2,1])
HDP.95CI <- exp(HDP[2,c(6,7)])
HDP.pvalue <- HDP[2,5]
  1. 我怎样才能比为每个变量写出 40 次更快呢?
  2. 是否可以使用 for 循环来实现?

感谢大家的帮助!

像这样的东西应该可以工作:

form <- as.formula("~ P0 + BMI + WtChange + MATAGE")
listOfGlms<-lapply(vectorOfDependentVariables, function(x) {
        lm(substitute(update.formula(form, i ~ .), list(i = as.name(x))), family=binomial, subset=(P1==1))
        })

当然lapply也可以换成for循环

使用 purrr 包更新,包含在 tidyverse 中

您现在可以用 purrr:map 写出@Prolix 的正确答案,这样阅读起来会更直观一些,如下所示:

library(tidyverse)

independent.variables.formula <- "~ P0 + BMI + WtChange + MATAGE"
dependent.variables <- c("HDP", "DV2", "DV3")

models.list <- map(dependent.variables, function(DV) {

  paste(DV, independent.variables.formula) %>% 
    as.formula %>% 
    lm(family=binomial, subset=(P1==1))
})