Cómo obtener la salida correcta al utilizar la previsión por lotes para series temporales mensuales con el paquete Mcomp?
Estoy intentando hacer pronósticos por lotes para la serie de tiempo mensual con el paquete Mcomp. He preparado un código pero no estoy obteniendo ningún resultado.
library(forecast)
library(Mcomp)
Utilizando la función `seq`, ya que necesito seleccionar la serie de tiempo en particular que termina en 7.
tsset <- (seq(1507, 2797, 10))
tsset
horizon <- 18
fit1 <- array(0,130)
for (tsi in 1:130){
y <- tsset[[tsi]]$x
yt <- head(y, length(y) - horizon)
yv <- tail(y, horizon)
for(i in 1:130){
fit1 <- c(ets(yt))
}
print(fit1)
}
davy.ai
Parece que el problema podría estar relacionado con la forma en que estás almacenando los resultados de pronóstico dentro del arreglo
fit1
. Estás sobrescribiendo los resultados de cada iteración del bucle interno con la llamada a la funciónets(yt)
, lo que significa que terminarás con un arreglo de longitud 130 que contiene solo el último pronóstico producido.En su lugar, debes modificar el código dentro del bucle interno para agregar cada nuevo pronóstico al arreglo
fit1
usando la funciónc
.Aquí hay una versión modificada de tu código que debería producir el resultado deseado:
Este código selecciona solo las series de tiempo del paquete
Mcomp
que terminan en 7, establece el horizonte de pronóstico en 18 y crea un arreglo vacíofit1
con longitud 130 para almacenar los resultados de pronóstico.El bucle
for
itera sobre cada serie de tiempo y separa los datos de entrenamiento y validación. Ajusta un modelo ETS a los datos de entrenamiento y produce un pronóstico de 18 meses utilizando la funciónforecast
.En lugar de sobrescribir los resultados de pronóstico con cada iteración, este código agrega cada nuevo valor de pronóstico al arreglo
fit1
utilizando la notación de corchetes. Finalmente, el código produce los valores de pronóstico al imprimir el arreglofit1
.