Я использую пакет Prophet для прогнозирования в группах в кадре данных и хочу создать графики с использованием сгруппированного блока данных.
Я следовал за ответами в Использование пакета Prophet для прогнозирования по группам вРамка данных в R .Существуют ли более простые способы создания графиков по сравнению с тем, как я это делал ниже?
library(dplyr)
library(prophet)
df <- data_frame(ds = seq(as.Date("2017/01/01"), as.Date("2019/01/01"), "month"),
a = rnorm(n = 25, mean = 100000, sd = 7500),
b = rnorm(n = 25, mean = 100000, sd = 7500),
c = rnorm(n = 25, mean = 100000, sd = 7500))
Столбцы a, b и c являются номерами продаж для каждого продукта.И я хотел бы запустить прогнозирование для всех 3 продуктов и общих продаж в следующие 12 периодов.
Итак, я приведу в порядок данные, а затем сделаю групповое прогнозирование.
d1 <- df %>%
gather(key = "prod", value = "y", a:c) %>%
nest(-prod) %>%
mutate(m = map(data, prophet)) %>%
mutate(future = map(m, make_future_dataframe, period = 12, freq = "month")) %>%
mutate(forecast = map2(m, future, predict)) %>%
mutate(p = map2(m, forecast, plot))
вывод выглядит следующим образом:
# A tibble: 3 x 6
dept data m future forecast p
<chr> <list> <list> <list> <list> <list>
1 a <tibble [25 x 2]> <S3: prophet> <data.frame [37 x 1]> <data.frame [37 x 16]> <S3: gg>
2 b <tibble [25 x 2]> <S3: prophet> <data.frame [37 x 1]> <data.frame [37 x 16]> <S3: gg>
3 c <tibble [25 x 2]> <S3: prophet> <data.frame [37 x 1]> <data.frame [37 x 16]> <S3: gg>
Затем я создаю графики вручную и переставляю их, используя grid.arrange
gridExtra::grid.arrange(d1$p[[1]], d1$p[[2]], d1$p[[3]]
Есть ли способы сделать это быстрее и автоматически?