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))
Другие вопросы по тегам