Representación de cuartiles con BoxPlot


Boxplot es un tipo de gráfico que permite visualizar de forma fácil la distribución de valores de una serie o categoría.



Atlas SBI no dispone de un tipo concreto para generar este tipo de gráficos, sin embargo podemos crear un gráfico de tipo Boxplot definiendo dos series.

En este artículo vamos a ver como realizar un gráfico Boxplot para analizar la distribución de los precios de venta de cursos de las diferentes oficinas de una empresa.

Puedes encontrar más información sobre como se calcula e interpreta un Boxplot en nuestro artículo Diagrama BoxPlot o en Wikipedia

Obtención de los datos

Nuestra consulta tendrá cuatro Pasos/Steps (consulta como crear steps aquí)
  1. DatabaseQuery: Calculará los cuartiles y el RIC de cada una de las categorías, 
  2. DatabaseQuery: Calculará el máximo, mínimo, la media y la desviación estándar de cada categoría, 
  3. JoinInMemory: Une en una tabla los dos pasos anteriores (como hacer joins in memory),
  4. ExpressionColumn: Calculamos los límites superior e inferior a partir del RIC 
El motivo por el cual no hacemos el cálculo de los cuartiles y el resto de cálculos estadísticos en una única sentencia, es por que para calcular el máximo, mínimo, media y desviación estándar es necesario que la cláusula Select tenga un Group By por oficina, mientras que la función percentile_disc que calcula los cuartiles no puede llevar group by.

Calculo de cuartiles


Para calcular los cuartiles utilizaremos la función Percentile_disc de SQL Server (Oracle también dispone de esta función aunque con palabras clave y opciones algo distintas. Con la siguiente sentencia calculamos los tres cuartiles (25%, 50% o mediana y 75%, así como la diferencia entre el primer y tercer cuartil (RIC), que utilizaremos en el cuarto paso para calcular los límites superior e inferior.

Select Distinct Oficina
  ,PERCENTILE_DISC(0.25) WITHIN GROUP (ORDER BY TotalInscripcion) 
     OVER (PARTITION BY Oficina) AS Q1Cont  
  ,PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY TotalInscripcion) 
     OVER (PARTITION BY Oficina) AS MedianCont  
  ,PERCENTILE_DISC(0.75) WITHIN GROUP (ORDER BY TotalInscripcion) 
     OVER (PARTITION BY Oficina) AS Q3Cont  
  ,PERCENTILE_DISC(0.75) WITHIN GROUP (ORDER BY TotalInscripcion) 
     OVER (PARTITION BY Oficina) 
  - PERCENTILE_DISC(0.25) WITHIN GROUP (ORDER BY TotalInscripcion) 
     OVER (PARTITION BY Oficina) As RIC
From InscripcionesCurso
Where Estado = 'RESERVA' or Estado = 'OVERBOOKING'

Cálculo de máximo y mínimo


El cálculo del máximo y el mínimo es necesario para calcular los límites superior e inferior del BoxPlot, y de paso calculamos otros cálculos estadísticos como la media o la desviación estándar que pueden darse como información adicional en el drill-down del gráfico.

Select Oficina
  ,Max(TotalInscripcion) as Maximo
  ,Min(TotalInscripcion) as Minimo
  ,Avg(TotalInscripcion) as Media
  ,Stdev(TotalInscripcion) as DesvSTD
From InscripcionesCurso
Where Estado = 'RESERVA' or Estado = 'OVERBOOKING'
Group By Oficina

Unión de la tabla

En el tercer paso unimos las dos tablas en una nueva mediante un InMemory Join, uniendo por los campos "Oficina".



Cálculo del limite superior e inferior


Finalmente con un paso tipo Expression column calculamos el límite inferior definido como el máximo entre el valor mínimo y la resta de 1,5 veces el RIC al primer cuartil, con la siguiente fórmula
iif([Q1Cont]-(1.5*[RIC])<[Minimo],[Minimo],[Q1Cont]-(1.5*[RIC]))

y el límite superior que se define como el mínimo entre el máximo valor y la suma de 1,5 veces el RIC al tercer cuartil.
iif([Q3Cont]+(1.5*[RIC])>[Maximo], [Maximo], [Q3Cont]+(1.5*[RIC]))

Definición del gráfico

Una vez tenemos la fuente de datos con toda la información necesaria, diseñaremos el gráfico, para ello crearemos dos series: Caja y Mediana


Para la caja elegiremos el tipo Vela que nos dará la caja y los bigotes, mientras que para la mediana elegimos el tipo Barra de Rango que permite dibujar una barra que empieza fuera del valor 0.



Ligar datos

Para ambas series, en la sección Ligar datos, elegiremos la oficina como argumento, lo que variará será la definición del valor, que en la serie Cajas definiremos, asignando al Bajo el campo Inferior, al Cierre el campo Q3Cont, al apertura el Q1Cont y al Mayor el campo Inferior.


Mientras que a la mediana, en ambos valores seleccionaremos el campo MedianCont, con lo que conseguiremos que nuestra barra quede limitada a una línea.


Vista Series

Finalmente, en el apartado vista de las series acabaremos de dar formato a nuestras series,  quitando la reducción y ajustando el grosor para la serie Caja


y ampliando la anchura a 0,5 en la serie mediana (o en su defecto hasta que coincida con el ancho de la caja).


Finalmente podemos quitar la leyenda para que no muestre información confusa



0 comentarios :

Publicar un comentario

Lo más visto