r 从 lapply 模型摘要中筛选和汇总结果
r filter and aggregate results from lapply model summary
我正在尝试使用 dlply 过滤和汇总在数据集子集上执行的多个回归模型的结果。
这就是我 运行 我的模型:
library(plyr)
data("mtcars")
models = dlply(mtcars, .(cyl), function(df) lm(mpg ~ hp,data=df))
lapply(models, summary)
现在我正在组合不同模型(气缸 4、6、8)的结果,如下所示:
rbind(
c("Cylinder 4", coef(lapply(models, summary)$`4`)[2,]),
c("Cylinder 6", coef(lapply(models, summary)$`6`)[2,]),
c("Cylinder 8", coef(lapply(models, summary)$`8`)[2,])
)
有没有更有效的总结方法?
我们可以使用 broom
中的 tidy
,而不是使用 summary
和 coef
。我们也可以直接将模型数据通过管道传输到 map2_df
.
library(tidyverse)
dlply(mtcars, .(cyl), function(df)
lm(mpg ~ hp, data = df)) %>%
map2_df(
.,
names(.),
~ tidy(.x)[2,] %>% mutate(Cylinder = paste0("Cylinder ", .y)) %>% tibble::column_to_rownames("Cylinder")
)
输出
term estimate std.error statistic p.value Cylinder
<chr> <dbl> <dbl> <dbl> <dbl> <chr>
1 hp -0.113 0.0612 -1.84 0.0984 4
2 hp -0.00761 0.0266 -0.286 0.786 6
3 hp -0.0142 0.0139 -1.02 0.326 8
我正在尝试使用 dlply 过滤和汇总在数据集子集上执行的多个回归模型的结果。
这就是我 运行 我的模型:
library(plyr)
data("mtcars")
models = dlply(mtcars, .(cyl), function(df) lm(mpg ~ hp,data=df))
lapply(models, summary)
现在我正在组合不同模型(气缸 4、6、8)的结果,如下所示:
rbind(
c("Cylinder 4", coef(lapply(models, summary)$`4`)[2,]),
c("Cylinder 6", coef(lapply(models, summary)$`6`)[2,]),
c("Cylinder 8", coef(lapply(models, summary)$`8`)[2,])
)
有没有更有效的总结方法?
我们可以使用 broom
中的 tidy
,而不是使用 summary
和 coef
。我们也可以直接将模型数据通过管道传输到 map2_df
.
library(tidyverse)
dlply(mtcars, .(cyl), function(df)
lm(mpg ~ hp, data = df)) %>%
map2_df(
.,
names(.),
~ tidy(.x)[2,] %>% mutate(Cylinder = paste0("Cylinder ", .y)) %>% tibble::column_to_rownames("Cylinder")
)
输出
term estimate std.error statistic p.value Cylinder
<chr> <dbl> <dbl> <dbl> <dbl> <chr>
1 hp -0.113 0.0612 -1.84 0.0984 4
2 hp -0.00761 0.0266 -0.286 0.786 6
3 hp -0.0142 0.0139 -1.02 0.326 8