假设我想运行一系列回归,就像这样:
summary(lm(mpg ~ cyl, data = mtcars))
summary(lm(mpg ~ disp, data = mtcars))
summary(lm(mpg ~ wt, data = mtcars))
我想创建一个数据框,其中包含每个输出的估计值和标准误差,最好包含变量名。因此最终输出应如下所示:
Variable Beta Coeff
cyl -2.8 .32
disp -.04 .004
wt -5.3 .56
我认为它将需要一个功能。有什么想法吗?
答案 0 :(得分:4)
一种简单的方法是在purrr
中使用broom
和tidyverse
软件包。
library(purrr)
library(broom)
cols <- c("cyl", "disp", "wt")
map_df(cols, ~lm(reformulate(.x, "mpg"), data=mtcars) %>% tidy())
# term estimate std.error statistic p.value
# <chr> <dbl> <dbl> <dbl> <dbl>
# 1 (Intercept) 37.9 2.07 18.3 8.37e-18
# 2 cyl -2.88 0.322 -8.92 6.11e-10
# 3 (Intercept) 29.6 1.23 24.1 3.58e-21
# 4 disp -0.0412 0.00471 -8.75 9.38e-10
# 5 (Intercept) 37.3 1.88 19.9 8.24e-19
# 6 wt -5.34 0.559 -9.56 1.29e-10
这为您提供了一些额外的信息,但是您可以根据需要轻松地使用dplyr
对其进行过滤。
答案 1 :(得分:1)
一个选项是遍历感兴趣的列,paste
在lm
中创建一个公式,tidy
输出,slice
离开第一行,{ {1}}感兴趣的列
select
或使用library(broom)
library(tidyverse)
map_df(c("cyl", "disp", "wt"), ~
lm(paste0("mpg ~ ", .x), data = mtcars) %>%
tidy %>%
slice(-1) %>%
select(Variable = term, Beta = estimate, Coeff = std.error))
# A tibble: 3 x 3
# Variable Beta Coeff
# <chr> <dbl> <dbl>
#1 cyl -2.88 0.322
#2 disp -0.0412 0.00471
#3 wt -5.34 0.559
base R