Tratamiento de Puntos Atípicos en Series de Tiempo con R Software

Los puntos atípicos (también denominados puntos aberrantes o outliers) siempre son un problema al momento de querer ajustar una serie de tiempo, o querer hacer predicciones para valores futuros. Recordamos al lector que una serie de tiempo se define como un conjunto de valores observados en un horizonte de tiempo y cumplen con ser equidistantes (por lo tanto, pueden ser observaciones tomadas por días, meses, trimestres, años, etc.).

Además, otra observación importante es que la decisión a tomar con respecto a qué se debe hacer con dichos valores es una elección que considera aspectos cuantitativos como cualitativos, ya que si bien se pueden utilizar test para decidir qué hacer con el punto, la decisión final siempre dependerá del modelador: pueden haber aspectos importantes en los datos que un test estadístico no es capaz de evaluar, y si el modelador cree que el punto debe estar por que representa un aspecto de la realidad, entonces se deberán asumir las consecuencias que implica dejar un punto que cuantitativamente puede ser considerado atípico.

En este artículo presentamos una forma de tratar puntos atípicos en una serie de tiempo. Los datos presentados se ordenan mensualmente en un horizonte de 8 años, y se utilizará R software (un programa freeware) para identificar y eliminar dichos puntos.

Siempre lo primero que debemos realizar al tener un conjunto de datos, es graficarlos para ver a priori su comportamiento. Este ejemplo utiliza una librería llamada “tseries”. Para descargarla, se debe seguir la siguiente instrucción: En el menú superior ir a la pestaña Paquetes:

Paquetes ==> Instalar Paquete(s)… ==> Seleccionar servidor ==> tseries

La siguiente porción de código permite cargar los datos, transformarlos en una serie y luego graficarlos.

#R Code
library(tseries) #Cargamos la librería
#Los datos están guardados en la variable data
data <- read.table("EjemploGEO.txt",header=T) 
#La serie de tiempo está guardada en la varaible fit
fit <- ts(data,frequency=12,start=2000)
#Dividimos la pantalla de gráfico en dos
par(mfrow=c(1,2))
#Graficamos la serie de tiempo y una caja con bigotes
plot(fit)
boxplot(fit)

El resultado se puede apreciar en la siguiente imagen:

datos atípicos series de tiempo

Como se puede ver, gráficamente podemos identificar dos puntos aberrantes, cerca del año 2002 y 2006. Además, un análisis mediante la caja con bigotes nos muestra cuatro puntos aberrantes. Este diagrama puede ser un poco más estricto, por lo tanto acá es importante destacar que es decisión del modelador sacar los cuatro, sólo dos (los de mayor impacto que se ven en el gráfico de la izquierda) o ninguno.

Para este ejemplo, consideraremos que vamos a sacar sólo los puntos que generan un mayor impacto en la serie, y son los que se pueden ver en el gráfico de la izquierda.

El análisis gráfico nos ayuda pero nunca es concluyente. Por lo anterior debemos utilizar siempre métodos cuantitativos para identificar los puntos (recordando nuevamente que la decisión sobre qué hacer con ellos depende tanto de factores cuantitativos como cualitativos).

Para poder identificar puntos outliers en la serie de tiempo, ocuparemos la librería “tsoutliers” la cual se puede descargar de la misma forma enseñada anteriormente.

#R Code
library(tsoutliers) #Cargamos la librería
#El comando tso identifica los puntos atípicos de la serie
outliers <- tso(fit) 
#Graficamos la nueva serie
plot(outliers)

El resultado se muestra a continuación:

dato atípico r software

Podemos ver que esta función logra identificar (y pone en rojo) los puntos que considera aberrantes en la serie, y no sólo hace eso, sino que gráfica una serie “ajustada” (en azul), calculando un nuevo valor para dichos puntos en base a la información de los otros puntos pertenecientes a los datos.

¿Qué hacer con los puntos aberrantes?: Podemos sacarlos, modificarlos o dejarlos como están. Si los sacamos perdemos información; pero si los dejamos como están afectarán en la predicción de los valores futuros.

Una primera aproximación en estos casos siempre es calcular un promedio de los valores que están cerca del punto donde se produce el dato atípico, además, los estadísticos han desarrollado métodos más sofisticados para tratar con ellos, y dejamos este estudio al lector.

Como mencionamos anteriormente, esta función genera un valor que se ajusta de acuerdo al comportamiento de los datos (como se puede ver en el gráfico azul), por lo que utilizaremos dichos valores para ajustar una nueva serie, la cual tendrá los puntos aberrantes corregidos (dejamos también al estudio del lector la forma en que esta función modifica los datos, lo cual se puede encontrar en la documentación de la función disponible vía web).

#R Code
#Obtenemos los valores modificados
newserie <- outliers$yadj 
#Dividimos la pantalla de gráficos en 2
par(mfrow=c(1,2))
#Graficamos la serie antigua y la nueva
plot(fit)
plot(newserie) 

serie de tiempo r software

Podemos ver la nueva forma que tiene la serie, al tener valores modificados para los puntos atípicos (cuidado: la serie ha cambiado su forma drásticamente debido a los puntos aberrantes, pero el efecto se incrementa ya que ha cambiado la escala a la que se muestran ambos gráficos, notar que en el de la izquierda llega hasta 2.500 y ahora sólo hasta 1.400).

Como hemos podido ver, este simple método nos ha permitido hacer un tratamiento sobre los puntos atípicos identificados en la serie de datos. Como hemos mencionado reiteradamente, existen varios métodos para poder hacer esto, y la decisión final siempre tendrá una parte subjetiva que depende del modelador, ya que los criterios pueden variar, y puede ser que el origen de los datos justifique (y permita) la existencia de los puntos aberrantes. Para concluir, con la modificación realizada ahora si podemos pensar en predecir los valores futuros de la serie.

Cómo utilizar el Módulo Predictor en Crystal Ball para Promedio Móvil Simple y Suavizado Exponencial Simple

El software Oracle Crystal Ball (conocida comúnmente como Crystal Ball) es una aplicación compatible con hojas de cálculo para la elaboración de modelos predictivos, simulación y optimización. Una de sus características principales es que incorpora un módulo para el análisis de datos y proyecciones denominado Predictor sobre el cual presentaremos en este artículo algunos antecedentes básicos respecto a su funcionamiento.

Una vez instalado Crystal Ball se habilitará una nueva pestaña en el menú de navegación en la interfaz de Excel con nombre Crystall Ball donde se muestran las distintas herramientas que incorpora dicho programa. La siguiente imagen muestra un extracto de la visualización anterior con foco especial en el módulo Predictor en Crystal Ball según lo descrito anteriormente:

menu-crystal-ball-excel

A continuación para ilustrar respecto a la utilización del módulo Predictor para los métodos de Promedio Móvil Simple y Suavizado Exponencial Simple consideraremos los siguientes datos de demanda real de un producto tipo que utilizamos anteriormente en el artículo Error Porcentual Absoluto Medio (MAPE) en un Pronóstico de Demanda.

serie-de-tiempo-predictor

Luego seleccionamos el módulo Predictor.

predictor-crystal-ball

Crystal Ball reconoce automáticamente los datos de la serie de tiempo al menos que existan más de una serie en la hoja de cálculo, caso en el cual siempre estará disponible la opción de seleccionar los datos de origen. En nuestro ejemplo el rango de datos se encuentra entre la celda B2 y C14 de la planilla de cálculo. Las opciones y ajustes en este nivel están disponibles en el menu Datos de entrada.

seleccion-datos-predictor

A continuación seleccionamos Siguiente para pasar a las opciones de Atributos de datos. Por ejemplo se puede especificar que los datos están en meses (o según sea el caso), además de incluir información respecto a eventos relevantes en la serie de tiempo y el ajuste de valores atípicos u outliers. Para seguir avanzando se selecciona Siguiente.

atributo-de-datos-predictor

En el menú Métodos muestra los distintos métodos disponibles para su ejecución asociados a los datos de entrada. En este artículo arbitrariamente hemos decidido acotar el análisis a 2 métodos de series de tiempo ampliamente utilizados: Promedio Móvil Simple y Suavizado Exponencial Simple (conocido este último también como suavizamiento o alisamiento exponencial).

metodos-predictor

En el caso del método de medias móviles se ha considerado un promedio de 3 períodos o n=3 (sólo para fines ilustrativos, por cierto se puede seleccionar otro valor para n). Para ello se hace doble clic en el icono Promedio Móvil Simple:

promedio-movil-simple-predi

Para implementar la opción de n=3 se activa la casilla Parámetros de bloqueo y se ingresa Orden 3 y Aceptar.

parametros-de-bloqueo-3

Finalmente al seleccionar Siguiente se accede al menú de Opciones se puede seleccionar la medida de error que se desea utilizar para efectos de comparación de los métodos seleccionados en el paso anterior. En este caso hemos seleccionado el MAD o Desviación Absoluta Media no obstante también se puede seleccionar el Error Cuadrático Medio (RMSE) o Error de Porcentaje Medio Absoluto (MAPE).

opciones-predictor

Para terminar se debe Ejecutar (obtendremos una advertencia respecto a que existen muy pocos datos en la serie para generar proyecciones fiables. Si bien este comentario es válido, omitiremos su advertencia debido a que en esta instancia nos interesa mostrar cómo se utiliza la herramienta Predictor de Crystal Ball más que discutir lo adecuado que resulta realizar pronósticos con una baja densidad de datos).

resultados-predictor-cb

De los 2 métodos utilizados se obtiene que según el criterio del MAD (MAD=46,10) el que tiene mejor desempeño es Suavizado Exponencial Simple con alfa α=0,8439. El detalle de los pronósticos se puede consultar en el menú Ver y Tabla según se muestra a continuación:

ver-tabla-predictor
suavizamiento-crystal-ball

Observación: Si bien el cálculo del MAD no es explícito (sólo aparece el resultado de 46,10), se puede obtener fácilmente siguiendo el procedimiento que se muestra a continuación y que hemos abordado en el Blog anteriormente (cualquier diferencia menor se debe exclusivamente a los criterios de aproximación).

calculo-mad-crystal-ball

Efecto de un Dato Atípico u Outlier en un Pronóstico de Demanda

Un dato atípico conocido comúnmente también como outlier es aquel cuyo valor es numéricamente distante del resto de los datos. Esta situación en particular se puede ver reflejada en una serie de tiempo cuando la variable en cuestión por alguna causa extraordinaria tiene un comportamiento que escapa a los parámetros de comportamiento usuales. Por ejemplo, tal podría ser el caso del shock de demanda por mascarillas luego de un brote de influenza, la demanda de agua en bidones luego de una emergencia provocada por causas naturales (terremoto, aluvión, etc), la demanda de pilas (baterías) y linternas luego de un terremoto, etc.

En el siguiente artículo presentamos una serie de tiempo que corresponde a la demanda de un producto determinado donde en el mes de Julio se observa una demanda que numéricamente escapa de forma significativa respecto al resto de los datos. Para dicha demanda real se ha aplicado el método de Suavizamiento Exponencial para distintos valores de alfa (0,1; 0,5 y 0,9) como también el método de Medias Móviles para 3 y 5 períodos (n=3 y n=5) obtenidos con la ayuda de Excel.

pronosticos-datos-atipicos

Para favorecer la interpretación de los resultados y por separado se muestra el ajuste de los métodos de pronóstico de demanda anteriormente identificados en las siguientes gráficas:

ajuste-pronostico-de-demand

En el caso del método de Suavizamiento Exponencial se puede observar que mientras mayor sea el valor de alfa el pronóstico reacciona con mayor fuerza a la presencia del dato atípico u outlier. Adicionalmente y luego del efecto del outlier el pronóstico se ajusta nuevamente a valores cercanos a los que se observan en la serie de tiempo. Notar adicionalmente que en los casos de α=0,1 y α=0,5 los pronósticos superan la demanda real en el resto de los períodos, es decir, de Agosto a Diciembre.

Por otra parte y luego de pronosticar la demanda utilizando el método de Media Móvil Simple, se observa que a medida que mayor sea el valor de n los efectos del outlier tienden a perpetuarse en el tiempo. En contraste a lo anterior, al seleccionar n=3 el efecto del outlier se ve reflejado hasta la última oportunidad en que dicho dato real es considerado para efectos de pronósticos, es decir, en la proyección del mes de Octubre (que corresponde al promedio simple de la demanda real de Julio, Agosto y Septiembre).

¿Qué hacer con el outlier?. No es una pregunta con una respuesta sencilla. Una primera recomendación es buscar información complementaria que ayude a explicar las razones de este comportamiento de la demanda que escapa a lo usual. Efectivamente y según los ejemplos presentados anteriormente es difícil extrapolar a futuro un comportamiento que obedece sólo a una causa excepcional. Ahora bien, un dato atípico en casos puntuales puede suponer un cambio sustantivos en las preferencias de los clientes que eventualmente se podría sostener en el tiempo. En dicho caso omitir el dato atípico para efectos de proyección no sería recomendable.