Я строю модель временного ряда с Пророком и получаю странное поведение с неопределенностью в праздничные дни, которую я не понимаю.
Данные взяты из Google Trends и связаны с поиском по термину "flowers ".
library(dplyr)
library(gtrendsR)
library(prophet)
flowers <- gtrends("flowers")$interest_over_time
flowers <- flowers %>% select(ds = date, y = hits)
Как и следовало ожидать, этот временной ряд имеет пики вокруг двух важных дней: Дня святого Валентина и Дня матери.
Чтобы учесть эти дни в моей модели Iсоздал фрейм данных с соответствующими датами для интересующего периода.
holidays <- rbind(
data.frame(
holiday = "mothers_day",
ds = as.Date(c(
# Second Sunday of May.
'2014-05-11',
'2015-05-10',
'2016-05-08',
'2017-05-14',
'2018-05-13',
'2019-05-12',
'2020-05-10'
)),
lower_window = -7, # Extend holiday to 7 days before nominal date
upper_window = +7, # Extend holiday to 7 days after nominal date
prior_scale = 1
),
data.frame(
holiday = "valentines_day",
ds = as.Date(c(
'2014-02-14',
'2015-02-14',
'2016-02-14',
'2017-02-14',
'2018-02-14',
'2019-02-14',
'2020-02-14'
)),
lower_window = -7, # Extend holiday to 7 days before nominal date
upper_window = +7, # Extend holiday to 7 days after nominal date
prior_scale = 1
)
)
Поскольку данные временных рядов имеют недельные интервалы, я использовал lower_window
и upper_window
, чтобы расширить влияние праздников нас каждой стороны от номинальной даты.
Теперь подгоняем момент, используя эти праздники.
flowers_prophet <- prophet(
holidays = holidays,
mcmc.samples = 300
)
flowers_prophet <- fit.prophet(
flowers_prophet,
flowers
)
Имея модель в руках, мы можем делать прогнозы.
flowers_future <- make_future_dataframe(flowers_prophet,
periods = 52,
freq = 'week')
flowers_forecast <- predict(flowers_prophet, flowers_future)
prophet_plot_components(flowers_prophet, flowers_forecast)
Ивот где все становится странным.
Тенденция и годовой разброс выглядят совершенно разумно. Вариации, связанные с историческими праздниками, тоже выглядят хорошо. День матери 2020 выглядит хорошо. Тем не менее, День святого Валентина 2020 года имеет небольшую прогнозируемую стоимость (относительно исторических значений) и чрезвычайно большую неопределенность.
Фактический временной ряд выглядит хорошо: исторические ценности хорошо сочетаются, и прогноз на День матери 2020 выглядит в высшей степени разумным. Но ценность и неопределенность для Дня святого Валентина 2020 года просто не выглядят правильно.
Если кто-нибудь может помочь мне понять, почему прогнозы на эти два праздникатакие разные, я был бы чрезвычайно благодарен.