如何在鼠标之后重复执行glm over多个因变量?

时间:2015-04-07 12:00:58

标签: r glm r-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循环来完成?
  3. 感谢您的帮助!

2 个答案:

答案 0 :(得分: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循环替换。

答案 1 :(得分:0)

使用tirrverse中包含的purrr软件包进行更新

您现在可以使用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))
})