Я только начал использовать {fable}
и семейство инструментов {tidyverts}
, и пока все идет хорошо.
В настоящее время я заинтересован в создании долгосрочных вероятностных прогнозов на основе ежедневных данных (с ежемесячным или ежеквартальным разрешением в порядке или предпочтительнее). Насколько я понимаю, временное агрегирование может помочь уменьшить неопределенность модели, а также распространить известные ежедневные влияния (особенно праздничные эффекты), например, на ежеквартальный уровень и таким образом повысить точность.
Для ежедневных данных, которые я планирую использовать пророк + ковариаты, для более высоких агрегатов (от месяца до года) экспоненциальное сглаживание кажется подходящим.
Хотя мне интересно, кажется ли этот подход в целом многообещающим, я не совсем уверен, как структурировать проблему прогнозирования, используя {thief}
, чтобы получить вероятностные прогнозы.
PS: я нашел этот полезный пост для почасовых данных, но у меня возникают проблемы с его реализацией для ежедневных данных (например, создание значимых агрегаций и объединение прогнозов): https://stats.stackexchange.com/questions/352121/ как прогнозировать как ежечасные, так и ежедневные данные
Чтобы создавать вероятностные прогнозы с использованием {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}
.
Типичная конструкция матриц суммирования, используемая для временного согласования, определяет, как интервалы с более высокой частотой (1 месяц, 1 квартал и т. д.) вложены в интервал с самой высокой частотой (1 год). Это легко сделать для месячных и квартальных агрегатов, так как все вкладывается точно. Недели не совпадают с годами, поэтому агрегирование меняется от года к году. Способ агрегирования ежедневных данных в годовые (и, следовательно, субдневные) также различается в зависимости от високосных лет, поэтому матрица суммирования дней в годы меняется в зависимости от года.
Уважаемый мистер О'Хара, я попытался загрузить пакет moment
, но, похоже, его больше не существует. У aggregate_index
от fabletools
такое же приложение? Я также был бы признателен, если бы вы сообщили мне, где я могу изучить последние разработки временной агрегации с помощью fable
.
Его можно найти на GitHub здесь: github.com/mitchelloharawild/moment
Это превосходно, и я взволнован, чтобы попробовать это. В основном из любопытства, каковы дополнительные сложности для еженедельных/ежедневных/субдневных данных? Моей наивной первой мыслью было бы, что распределение во временной иерархии было бы совершенно ясным? (или речь идет о других типах сезонности, которые возможны?)