Как узнать лучшую формулу FASSTER
Моя структура данных представлена на изображении ниже и имеет почасовые интервалы. Мне нужно спрогнозировать спрос.
# A tsibble: 23,400 x 6 [1h] <UTC>
Date Demand WeekDay DaysAfterHoliday Influenza MAX_Temperature
<dttm> <int> <int> <int> <dbl> <dbl>
1 2017-05-01 00:00:00 122 1 0 1 19.2
2 2017-05-02 01:00:00 124 2 1 3.04 25.3
...
Я знаю, что через день после отпуска количество пациентов в отделении неотложной помощи больше, чем обычно, но я не могу быть уверен, что модель учитывает это. Данные имеют дневную, еженедельную и годовую сезонность (особенно для фиксированных праздников).
Для сезонности я могу использовать FASSTER
для обработки праздничных эффектов. Я прочитал страницу документации r по этой и некоторой презентации, но в этих случаях сезонность и формула прогноза передаются функции следующим образом:
# NOT RUN {
cbind(mdeaths, fdeaths) %>%
as_tsibble %>%
model(FASSTER(mdeaths ~ fdeaths + poly(1) + trig(12)))
# }
Есть ли способ сделать FASSTER
искать наиболее адекватную формулу? Если нет, как я могу узнать, какой подход лучше?
Заранее спасибо!
1 ответ
Пакет fasster в настоящее время не предоставляет никаких возможностей для автоматического выбора модели (https://github.com/tidyverts/fasster/issues/50).
Чтобы определить подходящую спецификацию более быстрой модели, вы можете начать с графического исследования ваших данных, чтобы определить их структуру. Некоторые вопросы, которые вы можете рассмотреть, включают:
- Ваши данные сезонные? Какие сезонные периоды требуются?
Включите сезонность в термины Фурье черезfourier(period, K)
илиseason(period)
. Обычно используяfourier()
термины лучше, поскольку можно указать количество гармоник (K
) позволяет контролировать плавность сезонности и уменьшать параметры модели. - Ваши данные включают уровень или местные тенденции?
Включите уровень сpoly(1)
или тенденция сpoly(2)
. - Существуют ли потенциальные экзогенные регрессоры (хороший пример - температура в спросе на электроэнергию).
Включите экзогенные регрессоры так же, как и вlm()
. - Есть ли закономерности в вашем перемежаются данных в предсказуемых способов (например, сезонности в будние дни и в выходные дни).
Использование%S%
для переключения между этими шаблонами. Например, чтобы иметь разный сезонный график для будних и выходных дней, вы можете рассмотретьday_type %S% (fourier("day", K = 7))
, гдеday_type
- это переменная в вашей модели, которая указывает, является ли день будним или выходным.
Простой подход к регистрации увеличения числа пациентов после отпуска - это включить DaysAfterHoliday
как экзогенный регрессор. Поскольку эта связь, вероятно, является нелинейной, вам может потребоваться также включить некоторые нелинейные преобразования этой переменной в качестве экзогенных регрессоров.