es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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)
}
Tags:  , , , ,

Answer

  1. Avatar for 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ón ets(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ón c.

    Aquí hay una versión modificada de tu código que debería producir el resultado deseado:

    library(forecast)
    library(Mcomp)
    
    # Seleccionar series de tiempo que terminan en 7
    tsset <- M3[[grep("7$", M3$V1)]]
    
    horizon <- 18
    fit1 <- array(0, 130)
    
    for (i in 1:130) {
      # Separar datos de entrenamiento y validación
      y <- tsset[[i]]$x
      yt <- head(y, length(y) - horizon)
      yv <- tail(y, horizon)
    
      # Ajustar modelo y producir pronóstico
      fit <- ets(yt)
      fc <- forecast(fit, h = horizon)
    
      # Almacenar resultados de pronóstico
      fit1[i] <- fc$mean
    }
    
    # Ver valores de pronóstico
    print(fit1)
    

    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ío fit1 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ón forecast.

    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 arreglo fit1.

Comments are closed.