在单个数据框中获得多个回归的结果

get the results of several regressions in a single dataframe

我有一个像这样的数据框,有 10 列 Alcohol(从 alcohol1 到 alcohol10)

ID  Status  matching  Alcohol1  Alcohol2
 1     1       1           1      0
 2     0       1           0      1
 3     0       2           0      1
 4     1       2           0      0

我有很多逻辑回归模型 运行 使用酒精列作为解释变量。我创建了一个执行此操作的函数。

现在我想在一个数据框中总结我所有模型的结果。 我需要估计系数、95% 置信区间的下限、上限和 p 值。我设法得到了我的估计系数和 pvalue 但我无法得到置信区间(或也适合的方差)(通常通过摘要获得)

以下是我使用的函数:

library(broom)
library(purrr)

f1 <- function(column) {
  tidy(clogit(
    as.formula(
     paste("status ~", column, "+ strata(matching)")),
    data = table
  ))
 }

model_results <- map_dfr(
  set_names(names(table)[4:14]), 
  f1
)

预期的结果是这样的

term      estimate   lower.95   upper.95    pvalue
Alcohol1                
Alcohol2                
…               

提前感谢您的帮助

你还没有真正给我们一个可重现的例子,但我猜测将 conf.int = TRUE 添加到你的 tidy() 调用会做你想要的(默认名称是 conf.lowconf.high,您可以根据需要添加对 rename 的调用)。

我为了好玩而制作了工作流程“pipier”(但你的方式非常好)。可能需要一些 select 的东西,或者可能向 map_dfr 添加一个 .id = 参数(没有 MCVE 就无法分辨)。

model_results <- (
 names(table)[4:14]
   %>% set_names()
   %>% map(~ reformulate(c(., "strata(matching)"), response = "status"))
   %>% map(clogit, data = table)
   %>% map_dfr(tidy, conf.int = TRUE, .id = "column")
)