Как указать интервал или частоту с цибблом и басней на часы работы? - PullRequest
3 голосов
/ 09 марта 2020

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

  • с понедельника по пятницу
  • 8: 00–18: 00

Таким образом, я предполагаю, что мои временные ряды на самом деле регулярны , но нетипично в некотором смысле, поскольку у меня есть 10 часов в день и 5 дней в неделю .

Я могу заниматься моделированием с этим обычным 24/7 Временные ряды, устанавливая часы без обслуживания в ноль, но я считаю это неэффективным и также неправильным, потому что время не пропущено. Скорее, они не существуют.

Используя старую ts -рамку, я смог явно указать

myTS <- ts(x, frequency = 10)

Однако в новой tsibble/fable -рамке это невозможно , Он обнаруживает почасовые данные и ожидает 24 часа в сутки, а не 10. Каждая последующая функция напоминает мне о неявных промежутках во времени. Ручное переопределение атрибута interval работает:

> attr(ts, "interval") <- new_interval(hour = 10)
> has_gaps(ts)
# A tibble: 1 x 1
.gaps
<lgl>
1 FALSE

, но не влияет на моделирование:

model(ts,
      snaive = SNAIVE(customers ~ lag("week")))

Я все еще получаю то же сообщение об ошибке:

* Ошибка 1031 * 1 для snaive [1] .data содержит неявные промежутки во времени. Вы должны проверить свои данные и преобразовать неявные пропуски в явные пропущенные значения, используя tsibble::fill_gaps(), если требуется.

Любая помощь будет принята.

1 Ответ

1 голос
/ 10 марта 2020

Этот вопрос фактически соответствует этой проблеме gh . Насколько я знаю, не существует пакетов R, которые позволили бы пользователям создавать собственные расписания, например, для указания определенных внутридневных и дней. Несколько пакетов предоставляют некоторые специфические c календари (например, бизнес-даты), но ни один из них не дает решения для установки внутридневных дней. Tsibble получит аргумент calendar для пользовательских календарей, чтобы учитывать структурные пропуски, когда такой пакет станет доступным. Но в настоящее время это не поддерживается.

Как вы сказали, это почасовые данные. Следовательно, интервал data должен составлять 1 час, а не 10 часов. Однако ts() frequency - это сезонные периоды по 10 часов в день для моделирования.

...