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

Я только начал использовать {fable} и семейство инструментов {tidyverts}, и пока все идет хорошо.

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

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

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

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

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
315
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чтобы создавать вероятностные прогнозы с использованием {thief}, вам нужно преобразовать басню в объект {forecast} в стиле 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

Created on 2020-12-10 by the reprex package (v0.3.0)

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

Тем не менее, временное (и межвременное) согласование в настоящее время разрабатывается для {fable}. Актуальная проблема разработки здесь: https://github.com/tidyverts/fabletools/issues/59 Есть некоторые сложности с согласованием ежедневных или субдневных временных иерархий с месячными и годовыми иерархиями, которые еще не реализованы, но прототип в настоящее время хорошо работает для > месячных нижних уровней. Эта недавняя презентация на ISF2020 представляет временное согласование с {fable}: https://thewikihow.com/video_6D7rNHZ5E-Q&t=1120

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

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

stats-hb 10.12.2020 18:05

Типичная конструкция матриц суммирования, используемая для временного согласования, определяет, как интервалы с более высокой частотой (1 месяц, 1 квартал и т. д.) вложены в интервал с самой высокой частотой (1 год). Это легко сделать для месячных и квартальных агрегатов, так как все вкладывается точно. Недели не совпадают с годами, поэтому агрегирование меняется от года к году. Способ агрегирования ежедневных данных в годовые (и, следовательно, субдневные) также различается в зависимости от високосных лет, поэтому матрица суммирования дней в годы меняется в зависимости от года.

Mitchell O'Hara-Wild 10.12.2020 23:44

Уважаемый мистер О'Хара, я попытался загрузить пакет moment, но, похоже, его больше не существует. У aggregate_index от fabletools такое же приложение? Я также был бы признателен, если бы вы сообщили мне, где я могу изучить последние разработки временной агрегации с помощью fable.

Anoushiravan R 20.03.2022 00:01

Его можно найти на GitHub здесь: github.com/mitchelloharawild/moment

Mitchell O'Hara-Wild 21.03.2022 00:39

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