Para responder a su pregunta en un término más general, es posible utilizar el aprendizaje automático y predecir pronósticos h-steps-ahead . La parte difícil es que tiene que remodelar sus datos en una matriz en la que tiene, para cada observación, el valor real de la observación y los valores pasados de las series de tiempo para un rango definido. Tendrá que definir manualmente cuál es el rango de datos que parecen relevantes para predecir sus series de tiempo, de hecho, ya que configuraría un modelo ARIMA. El ancho / horizonte de la matriz es crítico para predecir correctamente el siguiente valor tomado por su matriz. Si su horizonte está restringido, puede perderse los efectos de estacionalidad.
Una vez que haya hecho eso, para predecir h-steps-ahead, deberá predecir el primer valor siguiente en función de su última observación. Luego tendrá que almacenar la predicción como un "valor real", que se utilizará para predecir el segundo valor siguiente a través de un cambio de tiempo , al igual que un modelo ARIMA. Tendrá que repetir el proceso h veces para obtener sus pasos h adelante. Cada iteración dependerá de la predicción previa.
Un ejemplo usando el código R sería el siguiente.
library(forecast)
library(randomForest)
# create a daily pattern with random variations
myts <- ts(rep(c(5,6,7,8,11,13,14,15,16,15,14,17,13,12,15,13,12,12,11,10,9,8,7,6), 10)*runif(120,0.8,1.2), freq = 24)
myts_forecast <- forecast(myts, h = 24) # predict the time-series using ets + stl techniques
pred1 <- c(myts, myts_forecast1$mean) # store the prediction
# transform these observations into a matrix with the last 24 past values
idx <- c(1:24)
designmat <- data.frame(lapply(idx, function(x) myts[x:(215+x)])) # create a design matrix
colnames(designmat) <- c(paste0("x_",as.character(c(1:23))),"y")
# create a random forest model and predict iteratively each value
rfModel <- randomForest(y ~., designmat)
for (i in 1:24){
designvec <- data.frame(c(designmat[nrow(designmat), 2:24], 0))
colnames(designvec) <- colnames(designmat)
designvec$y <- predict(rfModel, designvec)
designmat <- rbind(designmat, designvec)
}
pred2 <- designmat$y
#plot to compare predictions
plot(pred1, type = "l")
lines(y = pred2[216:240], x = c(240:264), col = 2)
Ahora, obviamente, no hay reglas generales para determinar si un modelo de serie temporal o un modelo de aprendizaje automático son más eficientes. El tiempo computacional puede ser mayor para los modelos de aprendizaje automático, pero, por otro lado, puede incluir cualquier tipo de características adicionales para predecir su serie temporal utilizando (por ejemplo, no solo características numéricas o lógicas). El consejo general sería probar ambos y elegir el modelo más eficiente.