r-增强原始数据集中许多模型的预测



我想运行许多具有x和ys所有可能组合的模型。为此,我创建了以下代码。

library(tidyverse)
y <- names(mtcars)
xs <- map(y, ~setdiff(names(mtcars), .x)) %>% 
map(~paste0(.x, collapse = "+")) %>%
unlist()
ys <- names(mtcars)
models <- tibble(ys, xs) %>%
mutate(Formula = paste0(ys, " ~ ", xs)) %>% 
mutate(model = map(Formula, ~glm(as.formula(.x), data = mtcars)))

现在,我想从原始数据集中的所有这些模型中得到所有的预测,这里是mtcars。我该怎么做?有没有一种方法可以使用扫帚的增幅?

您可以使用mapaugment,类似于将glm放入每行的方式。

library(tidyverse)
library(broom)
y <- names(mtcars)
xs <- map(y, ~setdiff(names(mtcars), .x)) %>% 
map(~paste0(.x, collapse = "+")) %>%
unlist()
ys <- names(mtcars)
models <- tibble(ys, xs) %>%
mutate(Formula = paste0(ys, " ~ ", xs)) %>% 
mutate(model = map(Formula, ~glm(as.formula(.x), data = mtcars))) %>%
mutate(Pred = map(model, augment))

预测在来自Pred列表的每个数据帧中的.fitted列中。

models2 <- models %>%
select(Formula, Pred) %>%
unnest() %>%
select(`.rownames`, names(mtcars), Formula, `.fitted`) %>%
spread(Formula, `.fitted`)

最新更新