Дополнение прогнозов от многих моделей в исходном наборе данных - PullRequest
0 голосов
/ 16 ноября 2018

Я хочу запустить много моделей со всеми возможными комбинациями 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.Как я могу это сделать?Есть ли способ использовать аугмент из метлы?

1 Ответ

0 голосов
/ 16 ноября 2018

Вы можете использовать map и augment аналогично тому, как вы подходите 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))

Прогноз находится в столбце .fitted в каждом кадре данных из списка Pred.

models2 <- models %>%
  select(Formula, Pred) %>%
  unnest() %>%
  select(`.rownames`, names(mtcars), Formula, `.fitted`) %>%
  spread(Formula, `.fitted`)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...