Как узнать лучшую формулу FASSTER - PullRequest
1 голос
/ 11 марта 2020

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

# 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 для обработки праздничных эффектов. Я прочитал эту страницу документации по этой и некоторым презентациям, но в этих случаях сезонность и формула прогноза передаются функции, подобной этой:

# NOT RUN {
cbind(mdeaths, fdeaths) %>%
  as_tsibble %>%
  model(FASSTER(mdeaths ~ fdeaths + poly(1) + trig(12)))

# }

Есть ли способ сделать FASSTER поиск самая адекватная формула? Если нет, то как я могу узнать, какой подход лучше?

Заранее спасибо!

1 Ответ

2 голосов
/ 12 марта 2020

В пакете fasster в настоящее время нет средств для автоматического выбора модели c (https://github.com/tidyverts/fasster/issues/50).

Чтобы определить подходящую спецификацию модели fasster, вы можете начать с графически исследуя ваши данные, чтобы определить их структуру. Вот некоторые вопросы, которые вы можете рассмотреть:

  • Являются ли ваши данные сезонными? Какие сезонные периоды требуются?
    Включите сезонность с условиями Фурье через fourier(period, K) или season(period). Обычно лучше использовать термины fourier(), так как возможность указать число гармоник (K) позволяет вам контролировать плавность сезонности и уменьшать параметры модели.
  • Ваши данные включают уровень или локальные тренды?
    Включить уровень с poly(1) или тренд с poly(2).
  • Существуют ли потенциальные экзогенные регрессоры (хорошим примером этого является температура спроса на электроэнергию).
    Включите экзогенные регрессоры так же, как в lm().
  • Do шаблоны в ваших данных чередуются предсказуемым образом (например, сезонность в будние и выходные дни).
    Используйте %S% для переключения между этими шаблонами. Например, чтобы иметь различный сезонный график для рабочих и выходных дней, вы можете рассмотреть day_type %S% (fourier("day", K = 7)), где day_type - это переменная в вашей модели, которая указывает, является ли день рабочим днем ​​или выходным.

Простой подход к получению данных о приросте пациентов после отпуска заключается в том, чтобы включить DaysAfterHoliday в качестве экзогенного регрессора. Поскольку это соотношение, вероятно, нелинейное, вам может потребоваться также включить некоторые нелинейные преобразования этой переменной в качестве экзогенных регрессоров.

...