Correlación: Pearson, Spearman, qué reportar

r
estadistica
Qué mide una correlación. Pearson para relaciones lineales, Spearman para monótonas no-lineales, Kendall para muestras pequeñas. La regla de oro: visualiza siempre antes de reportar.

¿Qué mide una correlación?

Una correlación es un número entre −1 y +1 que cuantifica la asociación entre dos variables numéricas:

  • +1: relación monótona positiva perfecta (cuando X sube, Y sube).
  • −1: relación monótona negativa perfecta (cuando X sube, Y baja).
  • 0: sin relación monótona (no implica “sin relación de ningún tipo”).

Hay tres coeficientes habituales, Pearson, Spearman y Kendall, y elegir el correcto importa más de lo que parece.

Pearson: el clásico paramétrico

cor(mtcars$mpg, mtcars$wt)
#> [1] -0.8676594

Pearson mide relación lineal. Devuelve un número alto cuando los puntos se alinean en una recta. Devuelve algo cercano a cero cuando los puntos se distribuyen sin patrón lineal, aunque haya un patrón claro no lineal.

Supuestos para interpretar Pearson:

  1. Relación aproximadamente lineal. Si la relación es curva, Pearson la subestima o miente.
  2. Sin outliers extremos. Pearson es muy sensible a un solo punto fuera de rango.
  3. Normalidad bivariada (estricto pero relajable con n grande por CLT).

Spearman: cuando la relación es monótona pero no lineal

Spearman calcula Pearson sobre los rangos, no sobre los valores brutos:

cor(mtcars$mpg, mtcars$wt, method = "spearman")
#> [1] -0.886422

Ventajas:

  • Captura relaciones monótonas no lineales. Si Y crece con X pero la forma es exponencial o logarítmica, Spearman se mantiene cerca de ±1. Pearson cae.
  • Robusto a outliers: un punto extremo cambia su rango, pero no su contribución desmesurada.
  • No asume normalidad: funciona con datos ordinales.

Cuándo usarlo: cuando ves una relación clara en el gráfico pero no es recta, o cuando hay outliers que distorsionan Pearson.

Kendall: para muestras pequeñas u ordinales

cor(mtcars$mpg, mtcars$wt, method = "kendall")
#> [1] -0.7278321

Conceptualmente: la probabilidad de que dos pares de observaciones estén ordenados de la misma forma menos la probabilidad de que estén en orden inverso.

Ventajas sobre Spearman:

  • Más robusto con n muy pequeño.
  • Interpretación probabilística directa.
  • Mejor cuando hay muchos empates (ties).

Es menos popular que Spearman pero igualmente válido. Si ves Kendall en un paper, sabes que el autor pensó en pequeño tamaño muestral o muchos empates.

cor() vs cor.test()

cor() devuelve solo el coeficiente. Para reportar de forma defendible necesitas el intervalo de confianza y el p-value:

cor.test(mtcars$mpg, mtcars$wt)
#>
#>  Pearson's product-moment correlation
#>
#> data:  mtcars$mpg and mtcars$wt
#> t = -9.559, df = 30, p-value = 1.294e-10
#> alternative hypothesis: true correlation is not equal to 0
#> 95 percent confidence interval:
#>  -0.9337868 -0.7440872
#> sample estimates:
#>        cor
#> -0.8676594

Reporta siempre el IC, no solo el coeficiente y el p-value. “r = −0.87 (IC 95 %: −0.93 a −0.74)” es mucho más informativo que “r = −0.87, p < 0.001”.

La regla de oro: visualiza SIEMPRE

Esto es lo más importante del tutorial. Nunca reportes una correlación sin haber mirado el gráfico de dispersión.

El cuarteto de Anscombe (1973) ilustra por qué:

# Cuatro datasets con MISMA correlación, media y varianza
anscombe |>
  with(c(
    cor(x1, y1),   # 0.816
    cor(x2, y2),   # 0.816
    cor(x3, y3),   # 0.816
    cor(x4, y4)    # 0.817
  ))

Los cuatro tienen r ≈ 0.82. Pero:

  • Set 1: relación lineal real.
  • Set 2: relación claramente cuadrática (no lineal).
  • Set 3: una sola observación atípica distorsiona la recta.
  • Set 4: un punto influyente con todos los demás verticales.

Visualízalos:

library(ggplot2)
library(tidyr)

anscombe |>
  pivot_longer(everything(),
               names_to = c(".value", "set"),
               names_pattern = "([xy])(\\d)") |>
  ggplot(aes(x, y)) +
  geom_point(size = 2) +
  geom_smooth(method = "lm", se = FALSE) +
  facet_wrap(~ set)

El número (r ≈ 0.82) no distingue casos donde la correlación es un resumen útil de casos donde la correlación es una mentira estadística. El gráfico sí.

Acompaña siempre cualquier correlación con un geom_point().

Matrices de correlación

Cuando quieres ver muchas correlaciones a la vez:

# Matriz numérica
cor(mtcars[, c("mpg", "wt", "hp", "disp")])
#>            mpg         wt         hp       disp
#> mpg   1.0000000 -0.8676594 -0.7761684 -0.8475514
#> wt   -0.8676594  1.0000000  0.6587479  0.8879799
#> hp   -0.7761684  0.6587479  1.0000000  0.7909486
#> disp -0.8475514  0.8879799  0.7909486  1.0000000

Para visualizar:

# install.packages("corrplot")
library(corrplot)
mat <- cor(mtcars[, 1:7])
corrplot(mat, method = "color", type = "upper", addCoef.col = "black",
         tl.col = "black", tl.srt = 45)

O para algo más completo (scatter plots + densidades + correlaciones):

# install.packages("GGally")
library(GGally)
ggpairs(mtcars[, c("mpg", "wt", "hp", "disp")])

ggpairs te enseña los gráficos de dispersión Y las correlaciones a la vez. Cuando tienes 5-10 variables, es lo mejor que existe para inspección rápida.

Correlación ≠ causación

La sección obligatoria. “Las ventas de helados y los ahogamientos están correlacionados”, los dos suben en verano. No hay causa entre ellos. Hay una variable confundidora (calor).

Hallar r = 0.9 entre A y B significa que están asociados. No significa que A cause B, ni que B cause A. Las opciones son:

  1. A causa B.
  2. B causa A.
  3. Una tercera variable C causa ambas.
  4. Coincidencia (con muchas variables, las correlaciones espurias son inevitables).

Para distinguirlas, hace falta diseño experimental o argumento causal cuidadoso. Una correlación sola no es evidencia causal. Reportarla como si lo fuera es el error que cuesta papers rechazados y proyectos abandonados.

Trampas habituales

  • Reportar Pearson cuando los datos son ordinales o muy sesgados. Spearman es el default sensato cuando hay duda.
  • Correlacionar y olvidarse del scatter plot. Anscombe lo demuestra: cuatro patrones radicalmente distintos, una sola correlación. El gráfico es obligatorio.
  • Confundir el p del test de correlación con la fuerza. Con n = 10000, r = 0.05 da p < 0.001, estadísticamente significativo pero prácticamente irrelevante. Lee el IC y el coeficiente, no el p-value solo.
  • Correlación de Pearson con outliers extremos. Un solo punto fuera de rango puede llevar r de 0 a 0.9 (o al revés). Si los datos tienen colas largas, usa Spearman o investiga el outlier antes de reportar.

En la siguiente entrega

Has aprendido a medir asociación entre dos variables. El siguiente paso es modelar esa relación: predecir el valor de una variable a partir de otra. Eso es la regresión lineal, el modelo más útil que existe en estadística aplicada. Abre el bloque 3 y es lo siguiente.