Как указать интервал или частоту с помощью tsibble и fable для часов работы?

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

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

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

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

Используя старые ts-framework я смог явно указать

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")))

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

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

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

1 ответ

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

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

Другие вопросы по тегам