EDA Avanzada: Exploración de Datos con Estadística Descriptiva y Visualización

¿Qué cubre el análisis de datos exploratorios avanzados?

  • Calcular la varianza de una variable.
  • Evaluar la distribución de los datos.
  • Informar sobre cuartiles, cuantiles y rango intercuartil.
  • Explorar datos categóricos.
  • Transformar los datos para satisfacer tus necesidades.

Varianza

Calcular la media, mediana y moda es un buen comienzo para comprender la forma general de un conjunto de datos. Pero esas tres estadísticas solo cuentan parte de la historia.

Considera los dos conjuntos siguientes:

dataset_one = [-4, -2, 0, 2, 4]
dataset_two = [-400, -200, 0, 200, 400]

Ambos tienen la misma media y mediana (0), pero claramente no representan la misma dispersión. Ahí entra en juego la varianza, que describe qué tan dispersos están los datos.

Distancia desde la media

Intuitivamente, queremos que la varianza sea mayor cuando los datos están más dispersos y menor cuando están más concentrados. Una primera idea sería usar el rango, pero solo considera los extremos.

En cambio, podemos medir cuánto se aleja cada punto de la media:

$$\text{diferencia} = X – \mu$$

Donde \( X \) es un punto de datos y \( \mu \) la media.

Promedio de las distancias

Podemos combinar las diferencias en una sola medida tomando su promedio. Sin embargo, si los valores por encima y por debajo de la media se cancelan (por ejemplo, [-5, 5]), el promedio sería 0, aunque los datos estén claramente dispersos.

Cuadrar las diferencias

Para evitar la cancelación, elevamos al cuadrado las diferencias:

$$\text{diferencia} = (X – \mu)^2$$

De este modo, los valores negativos desaparecen y las grandes desviaciones pesan más.

La varianza \( \sigma^2 \) se define entonces como:

$$\sigma^2 = \frac{\sum_{i=1}^n (x_i – \mu)^2}{n}$$

Varianza en Python

import numpy as np

dataset = [3, 5, -2, 49, 10]
variance = np.var(dataset)
print(f"Varianza: {variance:.2f}")

Salida:

Varianza: 328.56

La varianza no se interpreta directamente, sin tener en cuenta la escala de los datos. Esta crece con la magnitud de los valores porque está en unidades al cuadrado. Por eso, comparar una varianza de 328.56 en dos contextos distintos (media = 13 o media = 1200) no tiene sentido absoluto. En el primer caso, las desviaciones son grandes respecto a la media y en el segundo, son minúsculas.

Entonces:

La varianza no es una medida relativa, y solo tiene valor comparativo si las variables están en la misma escala.

Desviación estándar

La varianza tiene un inconveniente: sus unidades están al cuadrado como ya vimos anteriormente. Por eso usamos la desviación estándar, que devuelve las unidades originales:

$$\sigma = \sqrt{\sigma^2}$$

Desviación estándar con NumPy

import numpy as np

dataset = [4, 8, 15, 16, 23, 42]
standard_deviation = np.std(dataset)
print(f"Desviación estándar: {standard_deviation:.2f}")

Salida:

Desviación estándar: 12.32

Interpretación práctica

La desviación estándar permite interpretar cuán inusual es un valor.  Al encontrar el número de desviaciones estándar que un punto de datos está alejado de la media, podemos comenzar a investigar qué tan inusual es realmente ese punto de datos. 

  • ~68% de los datos están dentro de de la media.
  • ~95% dentro de .
  • ~99.7% dentro de .

Si un punto se encuentra a más de tres desviaciones estándar, es un valor atípico.

Describiendo un histograma

Media y Mediana

Ambas indican el centro de los datos. En distribuciones simétricas, suelen coincidir.

Dispersión (Spread)

Se describe con los valores mínimo y máximo, tomados con la media y la mediana, comienzan a indicar la forma del conjunto de datos subyacente.

Sesgo (Skewness)

  • Simétrico: la media ≈ mediana.
  • Sesgo a la derecha: cola larga hacia la derecha, media > mediana.
  • Sesgo a la izquierda: cola larga hacia la izquierda, media < mediana.

Modalidad

La modalidad describe el número de picos en un conjunto de datos. 

  • Unimodal: un solo pico.
  • Bimodal o multimodal: varios picos.
  • Uniforme: sin agrupaciones claras.

Valores atípicos (Outliers)

Son puntos lejanos al resto del conjunto de datos. Conviene investigarlos: pueden ser errores o indicios interesantes.

Cuartiles

Dividen los datos en cuatro partes iguales:

  • Q1: 25% inferior
  • Q2: 50% (la mediana)
  • Q3: 75% superior

Ejemplo:

import numpy as np

dataset = [-108, 4, 8, 15, 16, 23, 42]

q1 = np.quantile(dataset, 0.25)
q2 = np.quantile(dataset, 0.50)
q3 = np.quantile(dataset, 0.75)

print(q1, q2, q3)

Salida:

4.0 15.0 23.0

Cuantiles

Los cuantiles dividen los datos en grupos de igual tamaño.
Por ejemplo:

  • Deciles: 10 grupos
  • Percentiles: 100 grupos
import numpy as np

dataset = [5, 10, -20, 42, -9, 10]
quantiles = np.quantile(dataset, [0.2, 0.4, 0.6, 0.8])
print(quantiles)

Salida:

[-11.8  -3.6   9.2  23.6]

Rango intercuartil (IQR)

El rango intercuartil mide la amplitud del 50% central de los datos, entre el tercer cuartil (Q3) y el primer cuartil (Q1).

$$IQR = Q3 – Q1$$

Es más robusto ante valores atípicos que el rango total.

from scipy.stats import iqr

dataset = [4, 10, 38, 85, 193]
interquartile_range = iqr(dataset)
print(f"IQR: {interquartile_range}")
IQR: 75.0

Diagramas de caja (Boxplots)

Los diagramas de caja son una de las formas más comunes de visualizar un conjunto de datos. Al igual que los histogramas , los diagramas de caja dan una idea de la tendencia central y la dispersión de los datos.

Los boxplots resumen visualmente la distribución: