36. Correlación de Spearman

El coeficiente de Spearman, ρ (rho), mide la intensidad y dirección de una relación monótona usando los rangos de los datos.

36.1 Introducción

La correlación de Spearman es una medida no paramétrica de asociación. En lugar de trabajar directamente con los valores originales, reemplaza cada dato por su posición ordenada, llamada rango.

Es especialmente útil cuando los datos son ordinales, cuando la relación no es lineal pero conserva una dirección general, o cuando no conviene suponer una distribución normal.

36.2 ¿Qué es un rango?

Para obtener los rangos se ordenan los valores de menor a mayor. El menor recibe el rango 1 y el siguiente recibe el rango 2. Si hay valores repetidos, se asigna a todos el promedio de las posiciones que ocuparían.

Ejemplo: en los datos 10, 20, 20, 40, los rangos son 1, 2,5, 2,5 y 4.

36.3 Fórmula sin empates

ρ = 1 − [6 · Σdᵢ²] / [n(n² − 1)]

Aquí dᵢ es la diferencia entre el rango de x y el rango de y, y n es la cantidad de pares. Esta fórmula es práctica cuando no existen valores empatados.

36.4 Cálculo paso a paso

Consideremos los pares:

PersonaxyRango xRango yd
A10301100
B20202200
C30403300
D40104400

En una tabla real, la suma de d² puede ser distinta de cero. Con empates, la forma más segura es calcular la correlación de Pearson sobre los rangos.

36.5 Interpretar ρ

Valor de ρLectura descriptiva
ρ cercano a 1Asociación monótona positiva fuerte
ρ cercano a 0No se observa una asociación monótona clara
ρ cercano a −1Asociación monótona negativa fuerte

El signo indica la dirección y el valor absoluto indica la intensidad. Los límites concretos para decir “débil” o “fuerte” dependen del contexto.

36.6 Laboratorio interactivo

Explorar rangos y correlación

36.7 Spearman como Pearson de los rangos

Una definición general de Spearman es calcular Pearson después de transformar x e y en rangos. Esta versión funciona también cuando existen empates y es la que conviene programar en una aplicación.

1. OrdenarConvertir cada variable en posiciones.
2. PromediarResolver empates con rangos medios.
3. CorrelacionarAplicar Pearson a los rangos.

36.8 Pearson y Spearman

CaracterísticaPearsonSpearman
Trabaja conValores originalesRangos
Relación principalLinealMonótona
Sensibilidad a outliersAltaMenor, aunque no desaparece
Escala ordinalNo es la opción naturalSí resulta adecuada

36.9 Relaciones monótonas y no lineales

Una relación monótona aumenta o disminuye de manera consistente, aunque la velocidad de cambio no sea constante. Por ejemplo, y = √x es creciente y no lineal: Spearman puede detectar su orden, mientras Pearson puede reflejar una relación lineal menos perfecta.

Una relación en forma de U no es monótona en todo su recorrido. En ese caso, un valor cercano a cero no significa que las variables sean independientes.

36.10 El efecto de los empates

Si varios participantes tienen el mismo valor, no se deben inventar rangos consecutivos distintos. Se promedian las posiciones. Por ejemplo, si dos valores ocuparían las posiciones 3 y 4, ambos reciben 3,5.

La fórmula de 1 − 6Σd²/[n(n²−1)] es una simplificación y puede perder exactitud con muchos empates. Pearson sobre rangos es una alternativa general.

36.11 Datos ordinales

Spearman permite analizar respuestas ordenadas como “bajo”, “medio” y “alto”, siempre que sea razonable considerar que existe una relación de orden entre las categorías. No transforma automáticamente categorías sin orden, como colores o países.

36.12 Valores atípicos

Al usar rangos, la magnitud extrema de un dato deja de dominar el cálculo como puede ocurrir con Pearson. Sin embargo, un valor atípico todavía puede modificar su posición y alterar la conclusión. Por eso conviene revisar el gráfico.

36.13 Significancia estadística

Un ρ observado en una muestra no demuestra por sí solo que exista una asociación en toda la población. Para inferir, se puede contrastar la hipótesis nula de ausencia de asociación y calcular un valor p o un intervalo de confianza mediante métodos apropiados.

La significancia depende también del tamaño de muestra: una asociación pequeña puede ser detectable con muchos datos y una asociación grande puede ser incierta con pocos.

36.14 Correlación y causalidad

Un ρ alto no prueba que una variable cause la otra. Puede existir una tercera variable, una causalidad inversa o una coincidencia producida por la selección de los datos. La correlación describe asociación; establecer causalidad requiere un diseño adecuado.

36.15 Implementación en JavaScript

El siguiente ejemplo calcula los rangos medios, aplica Pearson sobre ellos y dibuja el gráfico de rangos. El canvas permanece oculto hasta ejecutar el código.

const datos = [
  { x: 10, y: 30 },
  { x: 20, y: 20 },
  { x: 30, y: 40 },
  { x: 40, y: 10 },
  { x: 50, y: 50 }
];

function rangosMedios(valores) {
  const ordenados = valores
    .map((valor, indice) => ({ valor, indice }))
    .sort((a, b) => a.valor - b.valor);
  const rangos = Array(valores.length);

  let inicio = 0;
  while (inicio < ordenados.length) {
    let fin = inicio;
    while (fin + 1 < ordenados.length && ordenados[fin + 1].valor === ordenados[inicio].valor) fin++;
    const rango = (inicio + 1 + fin + 1) / 2;
    for (let i = inicio; i <= fin; i++) rangos[ordenados[i].indice] = rango;
    inicio = fin + 1;
  }
  return rangos;
}

const rangosX = rangosMedios(datos.map(dato => dato.x));
const rangosY = rangosMedios(datos.map(dato => dato.y));
const mediaX = rangosX.reduce((suma, rango) => suma + rango, 0) / rangosX.length;
const mediaY = rangosY.reduce((suma, rango) => suma + rango, 0) / rangosY.length;
const numerador = rangosX.reduce((suma, rango, indice) => suma + (rango - mediaX) * (rangosY[indice] - mediaY), 0);
const sumaX = rangosX.reduce((suma, rango) => suma + (rango - mediaX) ** 2, 0);
const sumaY = rangosY.reduce((suma, rango) => suma + (rango - mediaY) ** 2, 0);
const rho = numerador / Math.sqrt(sumaX * sumaY);

console.log('Rangos de x:', rangosX);
console.log('Rangos de y:', rangosY);
console.log('Correlación de Spearman:', rho.toFixed(3));

if (typeof document !== 'undefined') {
  const canvas = document.getElementById('canvasSpearmanCodigo');
  const contexto = canvas.getContext('2d');
  const margen = { izquierda: 70, derecha: 780, arriba: 35, base: 390 };
  const escalaX = rango => margen.izquierda + (rango - 1) / 4 * (margen.derecha - margen.izquierda);
  const escalaY = rango => margen.base - (rango - 1) / 4 * (margen.base - margen.arriba);

  contexto.clearRect(0, 0, canvas.width, canvas.height);
  contexto.strokeStyle = '#b8a5d9';
  contexto.lineWidth = 1;
  contexto.beginPath(); contexto.moveTo(margen.izquierda, margen.base); contexto.lineTo(margen.derecha, margen.base); contexto.stroke();
  contexto.beginPath(); contexto.moveTo(margen.izquierda, margen.base); contexto.lineTo(margen.izquierda, margen.arriba); contexto.stroke();
  contexto.fillStyle = '#65468d';
  rangosX.forEach((rango, indice) => {
    contexto.beginPath();
    contexto.arc(escalaX(rango), escalaY(rangosY[indice]), 7, 0, Math.PI * 2);
    contexto.fill();
  });
}

36.16 Errores frecuentes

  • Usar Spearman para datos nominales sin orden.
  • Confundir una relación monótona con cualquier relación curvada.
  • Ignorar los empates o asignarles rangos arbitrarios.
  • Interpretar el coeficiente como prueba de causalidad.
  • Informar ρ sin indicar el tamaño de muestra ni el contexto.

36.17 Qué debes recordar

Spearman = Pearson aplicado a rangos.
Su valor está entre −1 y 1, resume una relación monótona, admite variables ordinales y requiere revisar empates, valores atípicos y el diseño del estudio.

36.18 Conclusión

La correlación de Spearman ofrece una forma clara y flexible de medir asociaciones basadas en el orden. Programarla exige ordenar correctamente, tratar los empates con rangos medios y calcular Pearson sobre las posiciones resultantes. Interpretar el número junto con el gráfico y el contexto es tan importante como obtenerlo.