如何在 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]
- 我怎样才能比为每个变量写出 40 次更快呢?
- 是否可以使用 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))
})
我有一个数据框 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]
- 我怎样才能比为每个变量写出 40 次更快呢?
- 是否可以使用 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))
})