Генерация долгосрочных прогнозов, включая прогнозирование и временное агрегирование (вор)

я только начала пользоваться и семейство инструментов, и пока все идет неплохо.

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

Для ежедневных данных, которые я планирую использовать пророк + ковариаты, для более высоких агрегатов (от месяца до года) экспоненциальное сглаживание кажется подходящим.

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

PS: я нашел этот полезный пост для почасовых данных, но у меня возникают проблемы с его реализацией для ежедневных данных (например, создание значимых агрегаций и объединение прогнозов): https://stats.stackexchange.com/questions/352121/how- прогнозировать как почасовые, так и ежедневные данные в R

1 ответ

Для создания вероятностных прогнозов вам потребуется преобразовать басню в {forecast}объект стиля. Базовая минимальная структура forecastобъект (и как его можно получить из дистрибутива басни, который можно получить для пророка через {fable.prophet}) является:

      library(forecast)
library(distributional)
dist <- dist_normal(1:10)

structure(
  list(
    # A time series of the forecast means
    mean = ts(mean(dist)),
    # A matrix time series of the forecast interval's upper bound
    upper = ts(cbind("80%" = quantile(dist, 0.90), "95%" = quantile(dist, 0.975))),
    # A matrix time series of the forecast interval's lower bound
    lower = ts(cbind("80%" = quantile(dist, 0.10), "95%" = quantile(dist, 0.025))),
    # A vector containing forecast interval levels in order of appearance
    level = c(80, 95)
  ),
  class = "forecast"
)
#>    Point Forecast      Lo 80     Hi 80       Lo 95     Hi 95
#>  1              1 -0.2815516  2.281552 -0.95996398  2.959964
#>  2              2  0.7184484  3.281552  0.04003602  3.959964
#>  3              3  1.7184484  4.281552  1.04003602  4.959964
#>  4              4  2.7184484  5.281552  2.04003602  5.959964
#>  5              5  3.7184484  6.281552  3.04003602  6.959964
#>  6              6  4.7184484  7.281552  4.04003602  7.959964
#>  7              7  5.7184484  8.281552  5.04003602  8.959964
#>  8              8  6.7184484  9.281552  6.04003602  9.959964
#>  9              9  7.7184484 10.281552  7.04003602 10.959964
#> 10             10  8.7184484 11.281552  8.04003602 11.959964

Создано 10 декабря 2020 г. пакетом reprex (v0.3.0)

Затем вы можете использовать эти структуры прогноза с thief::reconcilethief()примирить их.

Тем не менее, временное (и межвременное) согласование в настоящее время разрабатывается для доменов . Соответствующая проблема разработки находится здесь: https://github.com/tidyverts/fabletools/issues/59 . Существуют некоторые сложности с согласованием ежедневных или поддневных временных с ежемесячными и годовыми иерархиями, которые еще не реализованы, но прототип в настоящее время хорошо работает для > месячных нижних уровней. Эта недавняя презентация на ISF2020 представляет временное согласование с: https://www.youtube.com/watch?v=6D7rNHZ5E-Q&amp;amp;t=1120

Стоит отметить, что интервалы от {thief}являются просто суммой интервалов от более высоких временных частот. Эти интервалы не являются оптимальными и поэтому будут отличаться от оптимальных распределений вероятностных прогнозов, которые будут заданы формулой {fable}.

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