Je suis en train de construire un modèle de série temporelle avec Prophet et j'obtiens un comportement bizarre avec les incertitudes autour des vacances que je ne comprends pas.
Les données proviennent de Google Trends et concernent les recherches pour le terme "fleurs".
library(dplyr)
library(gtrendsR)
library(prophet)
flowers <- gtrends("flowers")$interest_over_time
flowers <- flowers %>% select(ds = date, y = hits)
Comme vous pouvez vous y attendre, cette série chronologique présente des pics autour de deux jours importants : la Saint-Valentin et la fête des mères.
Pour prendre en compte ces jours dans mon modèle, j'ai créé un cadre de données avec les dates pertinentes pour la période d'intérêt.
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
)
)
Comme les données de la série temporelle sont à intervalles hebdomadaires, j'ai utilisé la fonction lower_window
y upper_window
pour prolonger l'effet des vacances de part et d'autre de la date nominale.
Maintenant, mettez un moment en utilisant ces vacances.
flowers_prophet <- prophet(
holidays = holidays,
mcmc.samples = 300
)
flowers_prophet <- fit.prophet(
flowers_prophet,
flowers
)
Avec le modèle en main, nous pouvons faire des prédictions.
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)
Et c'est là que les choses deviennent bizarres.
La tendance et la variation annuelle semblent parfaitement raisonnables. Les variations associées aux fêtes historiques semblent également bonnes. La fête des mères en 2020 semble parfaite. Cependant, la Saint-Valentin 2020 présente une faible valeur prédite (par rapport aux valeurs historiques) et des incertitudes extrêmement importantes.
La série chronologique actuelle semble bonne : les valeurs historiques sont bien ajustées et la prédiction pour la fête des mères 2020 semble éminemment raisonnable. Mais la valeur et les incertitudes pour la Saint-Valentin 2020 ne semblent pas correctes.
Si quelqu'un peut m'aider à comprendre pourquoi les prévisions pour ces deux fêtes sont si différentes, je lui en serais extrêmement reconnaissant.