Utilizando el excelente paquete de pronósticos de Rob Hyndman, me encontré con la necesidad no solo de tener intervalos de predicción, sino también de simular una serie de caminos futuros, dadas las observaciones pasadas de una serie temporal con estacionalidades complejas. Hay algo para series de tiempo menos complejas con solo una o dos estacionalidades (simulate.ets () en el paquete de pronóstico), pero en mi caso, requeriría el equivalente de simulate.ets () para el modelo tbats más complejo.
Supongo que los datos necesarios para crear tales rutas ya están presentes en el objeto de ajuste, sin embargo, la posibilidad de crear rutas de muestra parece no ser directamente accesible. Por lo tanto, he encontrado una solución ingenua y me gustaría saber si este enfoque es correcto.
require(forecast)
fit = bats(test,use.parallel=T,use.damped.trend=F,use.trend=T,seasonal.periods=seasonal.periods)
Ingenuamente, imagino que se pueden construir rutas de muestra utilizando el pronóstico puntual de
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
y simplemente agregando valores aleatorizados del procedimiento de ajuste del modelo.
> 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
Por lo tanto, con
prediction = forecast(fit)
errors = fit$errors
path = prediction$mean + sample(errors, size = length(prediction$mean))
plot(ts(path))
Se puede construir una ruta de muestra.
¿Es esta una forma válida de construir rutas de muestra? Si no, ¿cuál sería la forma correcta?
¡Muchas gracias por cualquier ayuda!
fuente
simulate.tbats
método?Esta es probablemente una respuesta muy tardía, pero no veo por qué no.
Tu enfoque parece correcto. Pero, hay una manera más fácil de hacerlo.
Ya ha asignado un nombre de variable a su pronóstico. Simplemente necesitas hacerlo
plot(prediction)
. Al agregar la variableh
que es el número de períodos para pronosticarprediction
, puede controlar la duración del pronóstico. Por ejemplo, se podría decirprediction <- forecast(fit, h = 48)
. Tenga en cuenta que el valor deh
depende de qué tan lejos en el futuro desea ver.fuente