从符合purrr的模型中提取残差
我将我的数据分组,并为每组拟合一个模型,我希望得到每组的残差。我可以通过RStudio的查看器看到每个模型的残差,但我不知道如何提取它们。提取一组残差可以像从符合purrr的模型中提取残差,r,dplyr,purrr,broom,R,Dplyr,Purrr,Broom,我将我的数据分组,并为每组拟合一个模型,我希望得到每组的残差。我可以通过RStudio的查看器看到每个模型的残差,但我不知道如何提取它们。提取一组残差可以像diamond_mods[[3][[1][[“残差”]]]那样完成,但是如何使用purrr从每个组中提取残差集(连同扫帚一起以一个漂亮的TIBLE结束) 以下是我取得的成绩: library(tidyverse) library(purrr) library(broom) fit_mod <- function(df) { lm
diamond_mods[[3][[1][[“残差”]]]
那样完成,但是如何使用purrr从每个组中提取残差集(连同扫帚一起以一个漂亮的TIBLE结束)
以下是我取得的成绩:
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)
库(tidyverse)
图书馆(purrr)
图书馆(扫帚)
适合度(单位:mod%)
嵌套()%>%
变异(
模型=地图(数据、拟合和模型),
整洁=地图(模型,整洁)
#resid=map_dbl(模型,“residuals”)#这是我最好的尝试,它不起作用
) %>%
不干净(整洁)
您很接近-但是您应该使用map()
而不是map\u dbl()
,因为您需要返回列表而不是向量
diamond_mods <- diamonds %>%
group_by(cut) %>%
nest() %>%
mutate(
model = map(data, fit_mod),
tidied = map(model, tidy),
resid = map(model, residuals)
)
diamond_mods%
分组依据(切割)%>%
嵌套()%>%
变异(
模型=地图(数据、拟合和模型),
整洁=地图(模型,整洁),
残差=地图(模型,残差)
)
使用devel
版本的dplyr
,我们可以在按“cut”分组后在压缩
中执行此操作
library(dplyr)
library(ggplot2)
library(broom)
diamonds %>%
group_by(cut) %>%
condense(model = fit_mod(cur_data()),
tidied = tidy(model),
resid = model[["residuals"]])
# A tibble: 5 x 4
# Rowwise: cut
# cut model tidied resid
# <ord> <list> <list> <list>
#1 Fair <lm> <tibble [3 × 5]> <dbl [1,610]>
#2 Good <lm> <tibble [3 × 5]> <dbl [4,906]>
#3 Very Good <lm> <tibble [3 × 5]> <dbl [12,082]>
#4 Premium <lm> <tibble [3 × 5]> <dbl [13,791]>
#5 Ideal <lm> <tibble [3 × 5]> <dbl [21,551]>
库(dplyr)
图书馆(GG2)
图书馆(扫帚)
钻石%>%
分组依据(切割)%>%
压缩(模型=拟合模型(cur\u data()),
整洁=整洁(模型),
残差=模型[[“残差”]]
#一个tibble:5x4
#罗维:切
#切割模型整理剩余物
#
#1公平
#2好
#3非常好
#4溢价
#5理想
我得检查一下压缩()。我到现在还不知道这种情况。@jazzurro现在,它比多次调用map
要容易得多,因为它的行为类似于tibble
,我们可以按名称调用以前创建的列是的,这非常有用。我想这会在下一次更新中出现?我明天会花点时间来学习这个功能。@jazzurro它将在下一个版本中出现。另外,summary\u at/muttate\u at
etc正在取代summary/mutate/filter
中的跨哇,真的吗?这对我来说似乎是一个很大的变化。我需要根据此更改更改我的代码。谢谢你。