Довольно просто использовать функцию augment
из пакета Broom в R для добавления прогнозов обратно в тиббл. Viz.
df <- iris %>%
nest(data = everything()) %>%
mutate(model = map(data, function(x) lm(Sepal.Length ~ Sepal.Width, data = x)),
pred = map2(model, data, ~augment(.x, newdata = .y))) %>%
unnest(pred)
Однако, когда я беру линейную модель, обученную на одном наборе данных, и пытаюсь предсказать новые данные, я получаю следующую ошибку.
mod <- lm(Sepal.Length ~ Sepal.Width, data = iris)
df2 <- iris %>%
mutate(Sepal.Width = Sepal.Width + rnorm(1)) %>%
nest(data = everything()) %>%
mutate(pred = map2(mod, data, ~augment(.x, newdata = .y)))
# Error: Problem with `mutate()` input `pred`.
# x No augment method for objects of class numeric
# i Input `pred` is `map2(mod, data, ~augment(.x, newdata = .y))`.
Как мне следует использовать augment
для соответствия новым данным? Является ли использование внешнего объекта модели (в приведенном выше примере mod
) наилучшей практикой или есть более элегантный способ?