从适合purrr的模型中提取残差

时间:2020-02-18 23:05:06

标签: r dplyr purrr broom

我将数据分组并为每个组拟合一个模型,我希望每个组都有残差。我可以使用RStudio的查看器查看每个模型的残差,但无法弄清楚如何提取它们。可以像diamond_mods[[3]][[1]][["residuals"]]那样提取一组残差,但是如何使用purrr从每个组中提取残差(以及扫帚,最后得到一个漂亮的小标题)?

下面是我走了多远:

library(tidyverse)
library(purrr)
library(broom)


fit_mod <- function(df) {
  lm(price ~ poly(carat, 2, raw = TRUE), data = df)
}

diamond_mods <- diamonds %>%
  group_by(cut) %>%
  nest() %>%
  mutate(
    model = map(data, fit_mod),
    tidied = map(model, tidy)
    #resid = map_dbl(model, "residuals") #this was my best try, it doesn't work
  ) %>%
  unnest(tidied) 

2 个答案:

答案 0 :(得分:1)

您已经接近-但是您应该使用map()而不是map_dbl(),因为您需要返回列表而不是向量。

diamond_mods <- diamonds %>%
  group_by(cut) %>%
  nest() %>%
  mutate(
    model = map(data, fit_mod),
    tidied = map(model, tidy),
    resid = map(model, residuals)
  ) 

答案 1 :(得分:1)

使用function* createRandomNumberStream(): IterableIterator<number> { while (true) { yield Math.random() } } 版的(it: Iterable<T>, n: number) => Iterable<T>,我们可以在按“剪切”分组后在createRandomStream()中完成

devel