Фасетируйте автосюжет fabletools басни прогноз по модели

Есть ли способ использовать автоплот с басней, но прифасить ее по модели? Приведенный ниже код создает красивый небольшой график, но прогнозы накладываются друг на друга.

      library(tidyverse)
library(tsibble)
library(feasts)
library(fable)
library(fabletools)

tourism_melb <- tourism %>%
    filter(Region == "Melbourne") %>% 
    filter(Purpose == "Business") %>% 
    select(-Region, -State, -Purpose)

fableModels <- tourism_melb %>% 
    model(arima = ARIMA(), tslm = TSLM(Trips ~ trend()), mean = MEAN(window = 4))

forecasts <- fableModels %>% 
    forecast(h = "2 years")

forecasts %>% autoplot(tourism_melb)

Это выглядит так:

Я ищу что-то более похожее, кроме граненого, чтобы мне не пришлось возиться с масштабами осей, метками и тому подобным:

      library(gridExtra)

arimaPlot <- forecasts %>% 
    filter(.model == "arima") %>% 
    autoplot(tourism_melb)

tslmPlot <- forecasts %>% 
    filter(.model == "tslm") %>% 
    autoplot(tourism_melb)

grid.arrange(arimaPlot, tslmPlot)

Похоже, что это обычно делается, но я знаю, что автоплот для них должен быть довольно быстрым и грязным, поэтому я не знаю, есть ли у него такая функция. Я просмотрел github fabletools, но ничего не нашел.

1 ответ

Решение

Может быть, это то, что вы ищете. В виде autoplot возвращает объект ggplot, который вы можете просто добавить facet_wrap(~.model, ncol = 1)

      library(tidyverse)
library(tsibble)
library(feasts)
library(fable)
library(fabletools)

tourism_melb <- tourism %>%
  filter(Region == "Melbourne") %>% 
  filter(Purpose == "Business") %>% 
  select(-Region, -State, -Purpose)

fableModels <- tourism_melb %>% 
  model(arima = ARIMA(), tslm = TSLM(Trips ~ trend()), mean = MEAN(window = 4))

forecasts <- fableModels %>% 
  forecast(h = "2 years")

forecasts %>% autoplot(tourism_melb) + facet_wrap(~.model, ncol = 1)

Другие вопросы по тегам