Фасетируйте автосюжет 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)