Consejos sobre el uso de dplyr :: do vs purrr: map, tidy :: nest, para predicciones

Acabo de encontrar el paquete de ronroneo y creo que esto me ayudaría un poco en términos de lo que quiero hacer, simplemente no puedo armarlo.

Creo que esto va a ser a lo largo de la publicación, pero pasa por un caso de uso común, creo que muchos otros se encuentran, así que espero que esto también les sea útil.

Esto es lo que busco:

Desde un gran conjunto de datos, ejecute varios modelos en cada uno de los diferentes subgrupos.Tenga estos modelos fácilmente disponibles para que pueda examinarlos: los coeficientes, la precisión, etc.Desde esta lista de modelos guardados para cada una de las diferentes agrupaciones, podrá aplicar el modelo correspondiente al grupo de conjunto de pruebas correspondiente.
grouping_vals = c("cyl", "vs")

library(purrr)
library(dplyr)
set.seed(1)
train=mtcars
noise = sample(1:5,32, replace=TRUE) 
test = mtcars %>% mutate( hp = hp * noise) # just so dataset isn't identical


models = train %>% 
group_by_(grouping_vals) %>%
do(linear_model1 = lm(mpg ~hp, data=.),
   linear_model2 = lm(mpg ~., data=.)
)
He llegado hasta aquí, pero no sé cómo 'mapear' los modelos correspondientes al "prueba"conjunto de datos para los valores agrupados correspondientes.Ahora también podría estar tratando de obtener los residuos del entrenamiento de linear_model1 o linear_model2 con los datos de entrenamiento para los grupos correspondientes.

models $ linear_model1 [[2]] $ residuals me mostrará los residuos para la segunda agrupación de model1. Simplemente no sé cómo mover decir todos los modelos $ linear_model1 $ residuales al conjunto de datos del tren.

Entiendo que la función nest () de tidyr está haciendo lo mismo que ocurre cuando creo mi do () create de los modelos.

   models_with_nest =  train %>% 
     group_by_(grouping_vals) %>%
                   nest() %>%
     mutate( linear_model2 = purrr::map(data, ~lm(mpg~., data=.)),
             linear_model1 = purrr::map(data, ~lm(mpg~ hp+disp, data=.))
     )

Una vez más, solo busque una manera de poder 'mapear' fácilmente estos residuos / predicciones de entrenamiento al conjunto de datos de entrenamiento y aplicar y luego aplicar el modelo correspondiente a un conjunto de datos de prueba invisible como el que creé anteriormente.

Espero que esto no sea confuso ya que veo muchas promesas aquí, simplemente no puedo entender cómo armarlo.

Me imagino que esta es una tarea que a muchas personas les gustaría poder hacer de esta manera más 'automatizada', pero es algo que la gente hace muy lentamente y paso a paso.

Respuestas a la pregunta(1)

Su respuesta a la pregunta