Python & Data Science
Estadística En revisión

Pearson vs Spearman vs Kendall: Cómo elegir la correlación adecuada para tus datos

El problema de ‘helados y quemaduras solares’: Por qué un número no basta

Imagina monitorear las ventas de helado y los casos de quemaduras solares en una playa. La temperatura sube, y ambas aumentan. Traza una gráfica y verás un patrón claro. La correlación mide cuánto se mueven juntas dos variables.

La mayoría de la gente piensa que la correlación es una sola cosa. No lo es. Es una lente. Usa la incorrecta y tus datos parecerán un desastre borroso incluso cuando debajo hay una relación perfecta.

Pearson es el método de línea recta. Busca una tasa de cambio constante. Pero la vida no siempre se mueve en líneas rectas. Algunas cosas crecen exponencialmente — un video viral, el interés compuesto. Pearson llamará a esa relación “débil” solo porque se curva. Spearman y Kendall toman un enfoque diferente. Clasifican los valores en lugar de medirlos directamente, importándoles el orden más que las cantidades exactas.

Ahora observa una relación que es perfectamente consistente pero no una línea recta.

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

# Create a non-linear but perfectly 'upward' relationship
x = np.linspace(1, 10, 100)
y = np.exp(x)  # Exponential growth

df = pd.DataFrame({'X': x, 'Y': y})

plt.figure(figsize=(8, 4))
plt.scatter(df.X, df.Y, alpha=0.6)
plt.title("A Perfect Relationship that Isn't a Straight Line")
plt.xlabel("X (Time)")
plt.ylabel("Y (Growth)")
plt.show()

print(f"Pearson Correlation: {df.X.corr(df.Y, method='pearson'):.3f}")
print(f"Spearman Correlation: {df.X.corr(df.Y, method='spearman'):.3f}")

La puntuación de Pearson sale aproximadamente a 0.71. Suena decente, pero es engañosa. La puntuación de Spearman alcanza un 1.0 perfecto. ¿Por qué? Porque cada vez que X sube, Y siempre sube. Spearman ve la perfección; Pearson solo ve la curva.

Pearson: La regla para líneas rectas

Piensa en la correlación de Pearson como una regla. Mide qué tan estrechamente tus puntos de datos se ajustan a una sola línea recta. Traza una línea limpia a través de tus puntos, y Pearson te lo confirmará.

En otras palabras, Pearson busca una tasa de cambio constante. Si X aumenta en 1, Y debería aumentar en una cantidad fija — digamos, 2. El inconveniente: Pearson es muy sensible a los valores atípicos. Un solo punto aislado puede hundir toda la puntuación.

# Linear data with one extreme outlier
x_lin = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
y_lin = np.array([2, 4, 6, 8, 10, 12, 14, 16, 18, 2]) # The last point is an outlier

df_outlier = pd.DataFrame({'X': x_lin, 'Y': y_lin})
pearson_val = df_outlier.X.corr(df_outlier.Y, method='pearson')

print(f"Pearson with one outlier: {pearson_val:.3f}")

La puntuación cae a 0.54. El noventa por ciento de los datos forma una línea recta perfecta. Sin embargo, ese único ‘2’ al final arrastró la puntuación a casi la mitad. Esto se debe a que Pearson utiliza las distancias reales — los valores sin procesar — para calcular la puntuación.

Spearman: El especialista en ‘rangos’

Spearman funciona de manera diferente. Piénsalo como el primo de Pearson que solo se preocupa por quién quedó en primero, segundo y tercero. La diferencia clave: Spearman no mira tus números, sino sus rangos.

Si tienes alturas de 5’0”, 5’1” y 6’10”, Spearman simplemente ve 1.º, 2.º y 3.º. La diferencia entre el 2.º y el 3.º no importa. Convierte tus datos en una tabla de clasificación.

Eso lo hace una buena opción para datos ‘curvos’ (monótonos). Mientras los valores sigan moviéndose en la misma dirección, Spearman lo maneja bien.

# Let's check the ranks of our exponential data from earlier
df['X_rank'] = df['X'].rank()
df['Y_rank'] = df['Y'].rank()

# Now calculate Pearson on the RANKS
rank_corr = df['X_rank'].corr(df['Y_rank'], method='pearson')
print(f"Pearson on Ranks (which is Spearman): {rank_corr:.3f}")

El resultado es 1.0. Al convertir los valores en rangos, aplanamos la curva en una línea recta de rangos. Con datos sesgados o valores atípicos, Spearman suele ser más honesto que Pearson.

Tau de Kendall: La lógica de los pares

La Tau de Kendall funciona de manera diferente. En lugar de escanear toda la línea o una tabla de clasificación, actúa como un sistema de votación. Examina cada par posible de puntos y se pregunta: ¿estos dos coinciden en la dirección?

Toma dos puntos, A y B. Si el punto B tiene un valor de X mayor que el punto A, verifica si también tiene un valor de Y mayor. Si es así, son ‘concordantes’: están de acuerdo. Si no, son ‘discordantes’: no están de acuerdo. Kendall contabiliza los acuerdos y desacuerdos para calcular el puntaje.

Este es el método más robusto cuando se tienen conjuntos de datos muy pequeños o muchos empates (donde múltiples personas tienen la misma puntuación).

# Small dataset example
x_small = [1, 2, 3, 4, 5]
y_small = [1, 3, 2, 5, 4]

df_small = pd.DataFrame({'X': x_small, 'Y': y_small})
kendall_val = df_small.X.corr(df_small.Y, method='kendall')

print(f"Kendall's Tau on small data: {kendall_val:.3f}")

El resultado es 0.6 — un acuerdo positivo moderado. La mayoría de los pares, aunque no todos, se mueven en la misma dirección. En una muestra pequeña de 5 puntos, Kendall ofrece una estimación más conservadora y confiable. Spearman funciona bien para uso general. Pero cuando el tamaño de la muestra es minúsculo, los investigadores suelen preferir Kendall: tiene mejores propiedades estadísticas en ese rango.

La guía definitiva: ¿Cuál uso?

Elegir la herramienta adecuada no tiene por qué ser un dolor de cabeza. Aquí está el sencillo árbol de decisiones:

  1. Usa Pearson si: Tus datos parecen una línea recta, no tienes valores atípicos importantes y tus datos son ‘normales’ (con forma de campana).
  2. Usa Spearman si: Tus datos forman una curva pero siempre suben (o bajan), tienes valores atípicos o tus datos son ordinales (como ‘Satisfecho’, ‘Neutral’, ‘Insatisfecho’).
  3. Usa Kendall si: Tienes muy pocos puntos de datos o muchos valores empatados.

La regla de ‘Seguridad primero’: En caso de duda, Spearman suele ser más seguro que Pearson. No se dejará ‘engañar’ por una curva o por un solo valor atípico.

Veamos los tres en un conjunto de datos desordenado para ver la diferencia:

# Messy data: monotonic trend with one point that's an extreme value,
# but still doesn't break the ordering
data = {
    'A': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
    'B': [2, 4, 6, 8, 10, 12, 14, 16, 18, 1000] # A huge spike, but still the largest value
}
df_messy = pd.DataFrame(data)

results = {
    'Pearson': df_messy.A.corr(df_messy.B, method='pearson'),
    'Spearman': df_messy.A.corr(df_messy.B, method='spearman'),
    'Kendall': df_messy.A.corr(df_messy.B, method='kendall')
}

for name, val in results.items():
    print(f"{name}: {val:.3f}")

En este resultado desordenado, Pearson muestra un 0.54 — débil, arrastrado por ese único valor enorme. Spearman muestra un 1.0 perfecto. El pico sigue siendo el valor más grande de la serie, por lo que nunca rompe el patrón de “siempre sube”. Spearman ve una relación perfectamente consistente; Pearson solo ve una línea recta destrozada. Aquí está la distinción clave: Spearman es robusto frente a valores atípicos en magnitud, pero no frente a valores atípicos que invierten el orden de los rangos. Si ese valor extremo hubiera caído en medio del grupo, también habría perjudicado a Spearman.

La próxima vez que calcules una correlación, no te conformes con la opción por defecto. Pregúntate: ‘¿Estoy buscando una línea recta, o simplemente una relación?’

Comprueba tu comprensión

Las preguntas a continuación pasan de simple recuerdo hasta diseño abierto, siguiendo aproximadamente la Taxonomía de Bloom.

Recordar ¿A partir de qué calcula realmente su puntuación la correlación de Spearman: los valores brutos o algo distinto?

Entender Con tus propias palabras, explica por qué Pearson da una puntuación “débil” de 0.71 para la relación exponencial (X, exp(X)) a pesar de que la relación es perfectamente consistente: ¿qué está penalizando exactamente Pearson?

Aplicar Usando el ejemplo de datos desordenados corregido del artículo (B = [2,4,…,18,1000]), explica por qué Spearman sigue reportando un 1.0 perfecto a pesar del valor extremo 1000: ¿qué propiedad de los datos lo hace robusto ante ese tipo específico de valor atípico?

Analizar La nota final del artículo explica que Spearman es “robusto a los valores atípicos en magnitud, pero no a los valores atípicos que alteran el orden de los rangos”. Analiza paso a paso qué le pasaría a la puntuación de Spearman si ese mismo valor extremo (1000) se hubiera colocado en la posición 5 en lugar de la posición 10: ¿seguiría Spearman reportando una correlación perfecta?

Evaluar La regla de “Seguridad primero” del artículo dice que “en caso de duda, Spearman suele ser más seguro que Pearson”. Critica esto como valor predeterminado: ¿qué información real descarta Spearman al convertir los valores en rangos, y se te ocurre algún análisis (no solo un coeficiente de correlación) en el que esa información de magnitud perdida realmente importe?

Crear Diseña un análisis de correlación para un nuevo escenario: una empresa quiere saber si hours_of_onboarding_training se relaciona con 90_day_retention, donde los datos tienen 3 empleados que se fueron casi de inmediato (valores atípicos) y una tendencia mayormente monótona para todos los demás. Explica paso a paso qué método(s) de correlación de la guía de referencia del artículo ejecutarías y en qué orden, para generar confianza en que cualquier señal que observes sea real y no un artefacto de esos 3 valores atípicos.


Aplica lo que aprendiste

Escenario: Ejecutaste un análisis de correlación en un conjunto de datos con una tendencia monotónica pero no lineal y un valor atípico de magnitud extrema. Pearson devolvió 0.54; Spearman devolvió 1.0. Un VP del panel de revisión pregunta: “La puntuación de Pearson por defecto parece débil — ¿estás seguro de que hay una relación real aquí?”

Entregable: Un memo para stakeholders de 200–400 palabras (en prosa, no en una celda de notebook) defendiendo tu elección de Spearman sobre Pearson para este conjunto de datos. Escríbelo como si fuera a leerse en voz alta durante la revisión.

Rúbrica (lista de verificación):

  • Cita el ejemplo exponencial del artículo (Pearson ≈ 0.71 vs Spearman = 1.0) para mostrar que un Pearson “bajo” puede indicar curvatura, no debilidad
  • Explica que el 0.54 aquí está determinado por la influencia del único valor atípico en el ajuste de línea recta — no por la ausencia de una relación
  • Nombra el mecanismo: Spearman calcula Pearson sobre los rangos, por eso un pico de magnitud como 1000 deja la puntuación sin afectar siempre que se preserve el orden de los rangos
  • Menciona al menos una advertencia que un revisor agudo detectaría: Spearman descarta la información de magnitud, y también fallaría si el valor atípico invertiera el orden de los rangos (por ejemplo, si 1000 cayera en medio de la lista)
  • Escrito en prosa accesible para stakeholders — sin jerga sin explicar, sin bloques de código, sin “lo verás en el notebook”

Esta traducción fue generada automáticamente y puede contener errores. Si el idioma inglés es tu preferencia, puedes leer el artículo original en inglés .

¿Buscas otra cosa?

Busca en todos los artículos por título, resumen o tema.