Unter Verwendung des hervorragenden Prognosepakets von Rob Hyndman stieß ich auf die Notwendigkeit, nicht nur Vorhersageintervalle zu haben, sondern auch eine Reihe zukünftiger Pfade zu simulieren, wenn man frühere Beobachtungen einer Zeitreihe mit komplexen Saisonalitäten berücksichtigt. Es gibt etwas für weniger komplexe Zeitreihen mit nur einer oder zwei Saisonalitäten (simulate.ets () im Prognosepaket), aber in meinem Fall würde ich für das komplexere tbats-Modell das Äquivalent von simulate.ets () benötigen.
Ich gehe davon aus, dass die zum Erstellen solcher Pfade erforderlichen Daten bereits im Anpassungsobjekt vorhanden sind, die Möglichkeit zum Erstellen von Beispielpfaden jedoch nicht direkt zugänglich zu sein scheint. Daher habe ich eine naive Lösung gefunden und möchte wissen, ob dieser Ansatz richtig ist.
require(forecast)
fit = bats(test,use.parallel=T,use.damped.trend=F,use.trend=T,seasonal.periods=seasonal.periods)
Naiv stelle ich mir vor, dass Beispielpfade mithilfe der Punktprognose von erstellt werden können
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
und einfaches Hinzufügen zufällig gezeichneter Werte aus dem Modellanpassungsverfahren.
> 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
Deshalb mit
prediction = forecast(fit)
errors = fit$errors
path = prediction$mean + sample(errors, size = length(prediction$mean))
plot(ts(path))
Es kann ein Abtastpfad erstellt werden.
Ist dies eine gültige Methode zum Erstellen von Beispielpfaden? Wenn nicht, was wäre ein richtiger Weg?
Vielen Dank für jede Hilfe!
quelle
simulate.tbats
Methode erstellen zu müssen ?Dies ist wahrscheinlich eine sehr späte Antwort, aber ich verstehe nicht, warum nicht.
Ihr Ansatz scheint richtig zu sein. Es gibt jedoch einen einfacheren Weg, dies zu tun.
Sie haben Ihrer Prognose bereits einen Variablennamen zugewiesen. Sie müssen einfach
plot(prediction)
. Durch Hinzufügen der Variablen,h
die die Anzahl der Perioden für die Prognose darstellt,prediction
können Sie die Prognoselänge steuern. Zum Beispiel könnte man sagenprediction <- forecast(fit, h = 48)
. Beachten Sie, dass der Wert vonh
davon abhängt, wie weit Sie in die Zukunft sehen möchten.quelle