11. Visualización avanzada de la estadística descriptiva

Cuando los datos tienen múltiples variables, no basta con ver medias o desviaciones. Es clave visualizar relaciones para detectar patrones, tendencias y correlaciones.

11.1 Pairplots y relaciones entre variables

Un pairplot (diagrama de pares) muestra:

  • Histogramas o KDEs en la diagonal → distribución de cada variable.
  • Diagramas de dispersión en la parte inferior → relación entre pares de variables.
  • Colores (hue) para comparar categorías.

import seaborn as sns
import matplotlib.pyplot as plt

# Dataset clásico
titanic = sns.load_dataset("titanic")

# Pairplot con variables seleccionadas
sns.pairplot(titanic, vars=['age', 'fare', 'pclass'], hue='survived', markers=["o", "s"])
plt.show()
                        

👉 Interpretación:

  • Se puede observar si la tarifa (fare) o la clase (pclass) tienen relación con la supervivencia.
  • La distribución de edad (age) de los supervivientes y no supervivientes puede ser diferente.
  • Pairplots ayudan a formular hipótesis sobre qué variables son más predictivas.
Pairplot de las variables del dataset Titanic

11.2 Gráficos de dispersión con ajuste lineal

El scatterplot muestra relación entre dos variables. Podemos añadir una recta de regresión para ver tendencia.


import seaborn as sns
import matplotlib.pyplot as plt

titanic = sns.load_dataset("titanic")

# Relación entre tarifa y edad
sns.scatterplot(x="age", y="fare", data=titanic, hue="class", alpha=0.7)
plt.title("Edad vs Tarifa (Titanic)")
plt.show()

# Con línea de tendencia
sns.lmplot(x="age", y="fare", data=titanic, hue="class", lowess=True, height=5, aspect=1.2)
plt.title("Edad vs Tarifa con tendencia suavizada")
plt.show()
                        

👉 Aquí lowess=True aplica una regresión suavizada no lineal, útil en relaciones curvas.

Nota: El parámetro lowess=True requiere la librería statsmodels. Si no la tienes instalada, puedes añadirla a tu entorno con el comando: pip install statsmodels.
Gráfico de dispersión de Edad vs Tarifa en el Titanic
Gráfico de dispersión de Edad vs Tarifa con tendencia suavizada

11.3 Heatmaps para correlaciones

Los mapas de calor (heatmaps) permiten visualizar rápidamente correlaciones entre variables numéricas.


import seaborn as sns
import matplotlib.pyplot as plt

titanic = sns.load_dataset("titanic")

# Seleccionar solo columnas numéricas relevantes
titanic_corr = titanic[["age", "fare", "sibsp", "parch", "survived"]].corr()

plt.figure(figsize=(6,5))
sns.heatmap(titanic_corr, annot=True, cmap="viridis", center=0, fmt=".2f")
plt.title("Mapa de calor de correlaciones - Titanic")
plt.show()
                        

👉 Observaciones típicas:

  • fare (tarifa) correlaciona con la clase socioeconómica y la supervivencia.
  • sibsp (hermanos/esposos a bordo) y parch (padres/hijos a bordo) tienen correlación moderada.
Mapa de calor de correlaciones del dataset Titanic

11.4 Conclusión práctica

  • Pairplots: muestran distribución y relaciones entre todas las variables numéricas.
  • Scatter + ajuste lineal: detectan tendencias entre dos variables.
  • Heatmaps de correlación: resumen rápido de cómo interactúan múltiples variables.
  • Estas herramientas son esenciales en el análisis exploratorio de datos (EDA) antes de aplicar modelos estadísticos o de machine learning.