代码之家  ›  专栏  ›  技术社区  ›  Geet

从原始数据集中的许多模型增加预测

  •  1
  • Geet  · 技术社区  · 6 年前

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

    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 回复  |  直到 6 年前
        1
  •  1
  •   www    6 年前

    你可以使用 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`)