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?
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ásicoets
y ver si obtienes los mismos resultados?Respuestas:
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:
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:
fuente
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:
fuente
@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:
Las estadísticas del modelo final están aquí. El gráfico Actual / Ajuste y Pronóstico es interesante ya que resalta la actividad excepcional.
fuente