Función ETS (), ¿cómo evitar el pronóstico que no está en línea con los datos históricos?

16

Estoy trabajando en un alogoritmo en R para automatizar un cálculo de pronóstico mensual. Estoy usando, entre otros, la función ets () del paquete de pronóstico para calcular el pronóstico. Está funcionando muy bien.

Desafortunadamente, para algunas series de tiempo específicas, el resultado que obtengo es extraño.

A continuación, encuentre el código que estoy usando:

train_ts<- ts(values, frequency=12)
fit2<-ets(train_ts, model="ZZZ", damped=TRUE, alpha=NULL, beta=NULL, gamma=NULL, 
            phi=NULL, additive.only=FALSE, lambda=TRUE, 
            lower=c(0.0001,0.0001,0.0001,0.8),upper=c(0.9999,0.9999,0.9999,0.98), 
            opt.crit=c("lik","amse","mse","sigma","mae"), nmse=3, 
            bounds=c("both","usual","admissible"), ic=c("aicc","aic","bic"),
            restrict=TRUE)  
ets <- forecast(fit2,h=forecasthorizon,method ='ets')   

A continuación, encontrará a continuación el conjunto de datos del historial en cuestión:

 values <- c(27, 27, 7, 24, 39, 40, 24, 45, 36, 37, 31, 47, 16, 24, 6, 21, 
35, 36, 21, 40, 32, 33, 27, 42, 14, 21, 5, 19, 31, 32, 19, 36, 
29, 29, 24, 42, 15, 24, 21)

Aquí, en el gráfico, verá los datos históricos (negro), el valor ajustado (verde) y el pronóstico (azul). El pronóstico definitivamente no está en línea con el valor ajustado.

¿Tienes alguna idea sobre cómo "vincular" al forecat para que esté "en línea" con las ventas históricas? ingrese la descripción de la imagen aquí

mehdik
fuente
Este es uno de los pronósticos más extraños que he encontrado usando ets. La media / nivel de los datos históricos es de alrededor de 20 y la media / nivel del pronóstico es de alrededor de 50. ¿No está seguro de por qué sucedería esto? ¿puedes ejecutar un básico etsy ver si obtienes los mismos resultados?
pronosticador
Muchas gracias por tu tiempo y respuesta! Estoy de acuerdo con usted en el hecho de que el último punto puede verse como "valores atípicos" (21 frente a 7 o 6 o 5 el año anterior). Puede detectarse utilizando el intervalo de confianza basado en datos anteriores y debe estar limpio antes de calcular un pronóstico estadístico Pero si suponemos que se trata de una venta "normal", ¿hay alguna forma de evitar este comportamiento limitando el pronóstico, o al menos se nos advierte que el pronóstico es dos veces mayor que el historial? Los límites alfa, beta y gamma no son relevantes en ese caso. Nuevamente, ¡muchas gracias por su ayuda en este punto!
MehdiK
He votado tu respuesta, ahora supongo que puedes dejar comentarios. En el futuro, deje el comentario directamente debajo de una respuesta para que las personas que respondieron lo noten. Gracias
pronosticador
ETS y todos los modelos de series de tiempo univariantes suponen que el comportamiento pasado predice el comportamiento futuro. Si hay puntos de datos anormales , debe informar al modelo que existe una anomalía. El modelo no sabrá que el valor es normal, debe especificar en el modelo que el valor es atípico.
pronosticador

Respuestas:

10

Como ha señalado @forecaster, esto es causado por valores atípicos al final de la serie. Puede ver el problema claramente si traza el componente de nivel estimado en la parte superior:

plot(forecast(fit2))
lines(fit2$states[,1],col='red')

Tenga en cuenta el aumento en el nivel al final de la serie.

Una forma de hacer que el modelo sea más robusto para los valores atípicos es reducir el espacio de parámetros para que los parámetros de suavizado deben tomar valores más pequeños:

fit2 <- ets(train_ts, upper=c(0.3,0.2,0.2,0.98))  
plot(forecast(fit2))

ingrese la descripción de la imagen aquí

Rob Hyndman
fuente
¿Cuál es el pronóstico :: auto.arima equivalente de su segunda sugerencia para manejar valores atípicos?
Brash Equilibrium
1
Con los modelos ARIMA, puede manejar valores atípicos con variables ficticias establecidas en 1 en los momentos problemáticos. Simplemente use el argumento xreg en auto.arima o Arima.
Rob Hyndman
6

Este es un caso de libro de texto de tener valores atípicos al final de la serie y sus consecuencias no deseadas. El problema con sus datos es que los dos últimos puntos son valores atípicos , es posible que desee identificar y tratar los valores atípicos antes de ejecutar los algoritmos de pronóstico. Actualizaré mi respuesta y análisis más tarde hoy sobre algunas estrategias para identificar valores atípicos. A continuación se muestra la actualización rápida.

Cuando vuelvo a ejecutar con los últimos dos puntos de datos eliminados, obtengo un pronóstico razonable. Por favor ver más abajo:

values.clean <- c(27, 27, 7, 24, 39, 40, 24, 45, 36, 37, 31, 47, 16, 24, 6, 21, 
                  35, 36, 21, 40, 32, 33, 27, 42, 14, 21, 5, 19, 31, 32, 19, 36, 
                  29, 29, 24, 42, 15)## Last two points removed

train_ts.clean<- ts(values.clean, frequency=12)
fit2.clean<-ets(train_ts.clean)  
ets.f.clean <- forecast(fit2.clean,h=24)
plot(ets.f.clean)

ingrese la descripción de la imagen aquí

pronosticador
fuente
5

@pronosticadortiene razón en que el último valor es un valor atípico PERO el período 38 (el penúltimo valor) no lo es cuando se tienen en cuenta las tendencias y la actividad estacional. Este es un momento de definición / enseñanza para probar / evaluar enfoques alternativos robustos. Si no identifica y ajusta las anomalías, la variación se infla y no se encuentran otros elementos. El período 32 también es un caso atípico. Los períodos 3,32 y 1 también son valores atípicos. Hay una tendencia estadísticamente significativa en la serie para los primeros 17 valores, pero luego disminuye a partir del período 18. Por lo tanto, en realidad hay dos tendencias en los datos. La lección que se debe aprender aquí es que los enfoques simples que suponen que no hay tendencia o una forma particular de una tendencia y / o asumen tácitamente una forma específica del proceso de autorregresión deben ser seriamente cuestionados. En el futuro, un buen pronóstico debería tener en cuenta la posible continuación de la actividad excepcional encontrada en el punto final (período 39). Es imposible extraer esto de los datos.

Este es un modelo posiblemente útil:

ingrese la descripción de la imagen aquíLas estadísticas del modelo final están aquí. ingrese la descripción de la imagen aquíEl gráfico Actual / Ajuste y Pronóstico es interesante ya que resalta la actividad excepcional.ingrese la descripción de la imagen aquí

IrishStat
fuente
+1 tus respuestas son siempre educativas e ilustrativas. Entiendo el pulso y el tiempo, ¿los efectos fijos son modelo puramente determinista?
pronosticador
@forecaster Sí, los efectos fijos / pulsos estacionales son puramente dterminísticos ... al igual que los pulsos / cambios de nivel y las tendencias de la hora local. Además, el mes de agosto (8) no fue significativo y no estaba en la lista final.
IrishStat