使用 purrr、broom 的许多单变量模型的整洁输出

Tidy output from many single-variable models using purrr, broom

我有一个数据框,它包含一个二进制结果列 (y) 和多个独立的预测列 (x1x2x3... ).

我想 运行 许多单变量逻辑回归模型(例如 y ~ x1y ~ x2y ~ x3),并提取指数系数(优势比), 95% 置信区间和每个模型的 p 值到 dataframe/tibble 的行中。在我看来,使用 purrr 和 broom 的组合应该可以解决这个问题。

问题类似,但我无法计算出以下步骤:

  1. 仅提取我需要的值并且
  2. 整理成 dataframe/tibble。

根据引用问题中的示例工作:

library(tidyverse)
library(broom)

df <- mtcars

df %>%
 names() %>%
 paste('am~',.) %>%
 map(~glm(as.formula(.x), data= df, family = "binomial"))

睡了一觉之后,我想到了解决方案。需要使用 map_df 到 运行 每个模型,并使用 tidy 从每个模型中提取值。

希望这对其他人有用:

library(tidyverse)
library(broom)

df <- mtcars

output <- df %>%
  select(-am) %>%
  names() %>%
  paste('am~',.) %>%
  map_df(~tidy(glm(as.formula(.x), 
               data= df, 
               family = "binomial"), 
               conf.int=TRUE, 
               exponentiate=TRUE)) %>%
  filter(term !="(Intercept)")