1

我有一个数据框 ,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 循环来做到这一点?

谢谢大家的帮助!

4

2 回答 2

1

像这样的东西应该工作:

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 循环代替。

于 2015-04-07T17:11:01.370 回答
1

使用 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))
})
于 2019-05-26T11:46:31.640 回答