<< Back

¿Cómo identificar y filtrar outliers (valores atípicos) en Tableau?

Todos sabemos las ventajas de Tableau para visualizar y tomar decisiones de forma muy rápida con nuestros datos de manera visual, pero ¿qué ocurre si quiero eliminar ciertos valores que se pueden considerar atípicos o outliers? Vamos a ver como podemos hacerlo con un par de cálculos y de forma totalmente dinámica en Tableau.

¿Qué es un outlier?

Empecemos con algo más de información sobre los outliers o valores atípicos:

En estadística, tales como muestras estratificadas, un valor atípico (en inglés outlier) es una observación que es numéricamente distante del resto de los datos. Las estadísticas derivadas de los conjuntos de datos que incluyen valores atípicos serán frecuentemente engañosas. Por ejemplo, en el cálculo de la temperatura media de 10 objetos en una habitación, si la mayoría tienen entre 20 y 25ºC, pero hay un horno a 350°C, la mediana de los datos puede ser 23, pero la temperatura media será 55. En este caso, la mediana refleja mejor la temperatura de la muestra al azar de un objeto que la media. Los valores atípicos pueden ser indicativos de datos que pertenecen a una población diferente del resto de las muestras establecidas.
Los valores atípicos son en ocasiones una cuestión subjetiva, y existen numerosos métodos para clasificarlos. El método más impartido académicamente por su sencillez y resultados es el test de Tukey, que toma como referencia la diferencia entre el primer cuartil (Q1) y el tercer cuartil (Q3), o rango intercuartílico. En un diagrama de caja se considera un valor atípico el que se encuentra 1,5 veces esa distancia de uno de esos cuartiles (atípico leve) o a 3 veces esa distancia (atípico extremo).

https://es.wikipedia.org/wiki/Valor_at%C3%ADpico

Como bien menciona el artículo de la Wikipedia, una forma muy rápida de identificar en Tableau valores atípicos es utilizar un diagrama de caja o box plot en inglés.

¿Cómo crear un diagrama de caja en Tableau?

Muy fácil. Imaginemos que tenemos una tienda online y vendemos productos. Nuestra famosa fuente de datos de Tableau Superstore, y queremos analizar el descuento con el que hemos vendido cada pedido que han comprado nuestros clientes. Una forma bien fácil de analizar esta información sería utilizar la media del descuento en columnas. Añadir el el identificador del pedido en detalle y cambiar el tipo de marca a círculos. De este modo tendríamos un gráfico como el siguiente:

Para añadir el diagrama de caja tenemos simplemente que ir al menú de analytics y arrastrar el box plot o diagrama de caja a la visualización.

Y ya tenemos nuestro diagrama de caja, el cual nos muestra la media, los valores entre el cuartíl 1 y el cuartíl 3 y los famosos “bigotes” que indican hasta donde llegan los datos con valores 1.5 veces más altos o bajos que el rango intercuartílico (IQR por sus siglas en inglés).

Todos los datos que están más allá de esa línea vertical serían casos atípicos leves. Por supuesto podría seleccionar esas marcas y excluirlas de mi visualización pero ¿y si quiere que se filtre de manera dinámica?

Cómo calcular Q1, Q3 y el rango intercuartílico (IQR)

Para realizar los distintos cálculos que nos permitan identificar esos outliers tendremos que usar los famosos cálculos de tabla (table calculations) de Tableau. En concreto, el WINDOW_PERCENTILE.

Podríamos primero calcular el primer y el tercer cuartíl de nuestra medida AVG([Discount)] con las siguientes fórmulas.

Q1:

WINDOW_PERCENTILE(AVG([Discount]),0.25)

Q3:

WINDOW_PERCENTILE(AVG([Discount]),0.75)

Podríamos también calcular el famoso rango intercuartílico, IQR que no es más que la diferencia entre el Q3 y el Q1:

WINDOW_PERCENTILE(AVG([Discount]),0.75) - 
WINDOW_PERCENTILE(AVG([Discount]),0.25)

Y podríamos de la misma manera identificar ese valor a partir del cual, si el descuento es mayor que dicho valor, sería un valor atípico. Recordemos que por definición estos son aquellos con un valor 1.5 veces superior al Q3 o al Q1. Si quisiéramos identificar sólo los casos que son atípicos por arriba, es decir, con un descuento atípicamente alto necesitaríamos calcular los valores superiores que Q3 + 1.5 * IQR. Es decir:

WINDOW_PERCENTILE(AVG([Discount]),0.75)+
1.5*(WINDOW_PERCENTILE(AVG([Discount]),0.75)-
WINDOW_PERCENTILE(AVG([Discount]),0.25))

Como en definitiva lo que nos gustaría es saber si el descuento de cada venta es superior a dicho valor, podría añadir una condición más a mi cálculo para que evalue si el valor de cada venta es mayor o igual a dicha cifra, y en caso afirmativo que me devuelva un valor True o Verdadero, para identificarlos fácilmente. Podríamos hacer esto modificando ligeramente nuestro cálculo:

AVG([Discount])>= (WINDOW_PERCENTILE(AVG([Discount]),0.75)+
1.5*(WINDOW_PERCENTILE(AVG([Discount]),0.75)-
WINDOW_PERCENTILE(AVG([Discount]),0.25)))

Por verlo más fácilmente en una imagen en Tableau:

Recordad que esto sólo identificaría los valores atípicos superiores, pero el proceso para los inferiores sería muy similar con única diferencia que nuestro valor tendría que ser menor o igual que 1.5 veces el rango intercuartílico menos el Q1.

Asegurarse de que Tableau realiza el cálculo para las dimensiones que nos interesan: compute using…

Si ahora añadimos dicho cálculo al color en Tableau posiblemente no funcione como esperábamos. Esto es debido a que al tratarse de un cálculo de tabla (table calculation) tenemos que indicarle a Tableau cómo queremos que realiza el cálculo en base a las dimensiones de nuestro gráfico.

En este caso particular sólo tengo una dimensión, así que voy a indicarle a Tableau que realice el cálculo en base al Order ID.

Este sería el resultado:

Ahora podría utilizar dicho cálculo como filtro para analizar todos los datos excluyendo los valores atípicos, o analizar sólo los atípicos por ejemplo. O utlizar mi nuevo cálculo en otro tipo de gráfico para destacar esos casos atípicos en otros tipos de análisis, como por ejemplo el siguiente:

Y por supuesto, sigo contando con todas las ventajas de Tableau. Si a continuación quiero analizar los casos atípicos para alguna dimensión adicional, sólo tendría que especificar a Tableau cómo quiero que realice el cálculo que identifica a esos valores atípicos. Si mantengo el compute using Order ID podría analizar los atípicos por categoría de producto:

Si queréis probar los cálculos, mi consejo es que realicéis al principio distintos cálculos para el Q1, Q3, IQR, etc. Y los incluyáis en la visualización como líneas de referencia como aprendizaje para entender mejor cómo Tableau calcula cada una de las operaciones. El problema de utilizar varios cálculos es que cuando tenéis el cálculo de Outliers final tendríais que especificar cómo Tableau calcula cada uno de los WINDOW_PERCENTILE y lleva al final algo más de trabajo, por eso finalmente lo he realizado todo en solo cálculo.

Leave a Reply

Your email address will not be published. Required fields are marked *