En utilisant l'excellent package de prévisions de Rob Hyndman, je suis tombé sur la nécessité non seulement d'avoir des intervalles de prédiction, mais de simuler un certain nombre de trajectoires futures, compte tenu des observations passées d'une série chronologique avec des saisonnalités complexes. Il y a quelque chose pour les séries chronologiques moins complexes avec une ou deux saisonnalités uniquement (simulate.ets () dans le package de prévision), mais dans mon cas, j'aurais besoin de l'équivalent de simulate.ets () pour le modèle tbats plus complexe.
Je suppose que les données nécessaires à la création de tels chemins sont déjà présentes dans l'objet fit, mais la possibilité de créer des exemples de chemins ne semble pas directement accessible. Par conséquent, j'ai trouvé une solution naïve et je voudrais savoir si cette approche est correcte.
require(forecast)
fit = bats(test,use.parallel=T,use.damped.trend=F,use.trend=T,seasonal.periods=seasonal.periods)
Naïvement, j'imagine que des chemins d'échantillonnage peuvent être construits en utilisant la prévision ponctuelle
fit
> forecast(fit)
Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
1960.016 24.48576 23.82518 25.14633 23.47550 25.49602
1960.032 24.79870 23.88004 25.71735 23.39374 26.20366
1960.048 25.31743 24.39878 26.23608 23.91247 26.72239
1960.065 25.69254 24.77389 26.61120 24.28759 27.09750
1960.081 26.06863 25.14998 26.98729 24.66367 27.47359
1960.097 26.43215 25.51350 27.35080 25.02719 27.83711
1960.113 26.77674 25.85809 27.69540 25.37179 28.18170
et en ajoutant simplement des valeurs tirées au hasard de la procédure d'ajustement du modèle.
> fit$errors
Time Series:
Start = c(1959, 2)
End = c(1960, 1)
Frequency = 365
[1] 0.140656913 -0.455335141 -0.558989185 1.697532911 -0.114406022 0.366182718 -0.377056927 0.396144296
Par conséquent, avec
prediction = forecast(fit)
errors = fit$errors
path = prediction$mean + sample(errors, size = length(prediction$mean))
plot(ts(path))
un chemin d'échantillon peut être construit.
Est-ce une façon valide de construire des exemples de chemins? Sinon, quelle serait la bonne façon?
Merci beaucoup pour toute aide!
la source
simulate.tbats
méthode?C'est probablement une réponse très tardive mais je ne vois pas pourquoi.
Votre approche semble correcte. Mais, il existe un moyen plus simple de le faire.
Vous avez déjà attribué un nom de variable à votre prévision. Vous en avez simplement besoin
plot(prediction)
. En ajoutant la variableh
qui est le nombre de périodes de prévisionprediction
, vous pouvez contrôler la durée de la prévision. Par exemple, vous pourriez direprediction <- forecast(fit, h = 48)
. Notez que la valeur deh
dépend de la distance que vous souhaitez voir dans le futur.la source