Correlación: Pearson, Spearman, qué 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.8676594Pearson 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:
- Relación aproximadamente lineal. Si la relación es curva, Pearson la subestima o miente.
- Sin outliers extremos. Pearson es muy sensible a un solo punto fuera de rango.
- Normalidad bivariada (estricto pero relajable con
ngrande 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.886422Ventajas:
- 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.7278321Conceptualmente: 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
nmuy 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.8676594Reporta 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.0000000Para 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:
- A causa B.
- B causa A.
- Una tercera variable C causa ambas.
- 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
pdel test de correlación con la fuerza. Conn = 10000,r = 0.05dap < 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
rde 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.