ggseasonplot из пакета прогноза не распознает объект ts - PullRequest
0 голосов
/ 16 января 2020

Я пытаюсь запустить фрагмент кода, следуя строгим инструкциям из 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

Чтение Функция help, есть пример с набором данных AirPassengers (базовый), , который даже не является объектом ts

Примеры

ggseasonplot(AirPassengers, year.labels=TRUE, continuous=TRUE)

который работает как показано ниже

enter image description here

Код работает и без других параметров

 ggseasonplot(AirPassengers)

enter image description here

Почему функция продолжает спрашивать меня об объекте ts, хотя я его и вводю?

Ответы [ 2 ]

0 голосов
/ 23 января 2020

Извините за это! Книга fpp3 все еще пишется (и пираты / fable / tsibble все еще разрабатываются).

Код, который вы нашли по ссылке выше, взят из более старой версии праздников, которая больше не актуальна. Вы можете видеть, что правильные функции использовались в 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 пользователем Представить пакет (v0.3.0)

0 голосов
/ 16 января 2020

В поисках решения для сообщества Rstudio я нашел ответ Роба Хиндмана на этот вопрос https://community.rstudio.com/t/can-not-use-autoplot-with-a-tsibble/41297

Итак, вы должны изменить класс на ts следующим образом: .ts function.

Итак, для работы с функцией ggseasonplot код должен выглядеть следующим образом:

forecast::ggseasonplot(x = as.ts(myseries))
...