ggseasonplot из пакета прогнозов не распознает объект ts
Я пытаюсь запустить фрагмент кода, следуя строгим инструкциям https://otexts.com/fpp3/graphics-exercises.html.
Я использую следующие пакеты
library(tsibble)
library(tidyverse)
library(tsibbledata)
library(fable)
library(fpp3)
library(forecast)
library(ggplot2)
library(ggfortify)
Я запустил следующие строки кода, чтобы получить объект временной шкалы (aus_retail)
set.seed(12345678)
myseries <- aus_retail %>%
filter(`Series ID` == sample(aus_retail$`Series ID`,1))
В качестве упражнения автор предлагает на странице выше: "Изучите выбранный вами временной ряд розничной торговли, используя следующие функции:"
autoplot(), ggseasonplot(), ggsubseriesplot(), gglagplot(), ggAcf()
Итак, я попытался запустить следующую строку кода
forecast::ggseasonplot(x = myseries)
Что ответило мне на следующую ошибку:
Error in forecast::ggseasonplot(x = myseries$Turnover) :
autoplot.seasonplot requires a ts object, use x=object
Читая справку по функциям, есть Пример с набором данных AirPassengers (базовым), который даже не является объектом ts
Примеры
ggseasonplot(AirPassengers, year.labels=TRUE, continuous=TRUE)
который работает, как показано ниже
Код также работает без других параметров
ggseasonplot(AirPassengers)
Почему функция продолжает спрашивать у меня объект ts, даже если я ввожу в него объект?
2 ответа
Извини за это! Книжка fpp3 все еще пишется (и праздники / басни / тсибблы все еще разрабатываются).
Код, который вы нашли по ссылке выше, взят из более старой версии праздников, которая больше не актуальна. Вы можете видеть, что в Q6 использовались правильные функции, но те, что в Q4, по ошибке не были обновлены.
Вместо того ggseasonplot()
, должно быть сказано gg_season()
. То же относится и к другим именам функций.
Соответствующий код выглядит следующим образом:
library(fpp3)
set.seed(12345678)
myseries <- aus_retail %>%
filter(`Series ID` == sample(aus_retail$`Series ID`,1))
myseries %>%
autoplot(Turnover)
myseries %>%
gg_season(Turnover)
myseries %>%
gg_subseries(Turnover)
myseries %>%
gg_lag(Turnover)
myseries %>%
ACF(Turnover) %>%
autoplot()
Создано 2020-01-23 пакетом REPEX (v0.3.0)
В поисках решения в сообществе Rstudio я нашел ответ от Роба Хайндмана на эту проблему https://community.rstudio.com/t/can-not-use-autoplot-with-a-tsibble/41297
Итак, вам нужно изменить класс на ts с помощью функции as.ts.
Итак, для работы с функцией ggseasonplot код должен быть следующим:
forecast::ggseasonplot(x = as.ts(myseries))