Mapas de calor y diagramas de dispersión: visualización de correlaciones
Al finalizar este tema
Podrás visualizar la relación entre dos variables mediante un diagrama de dispersión y comprender de un vistazo las correlaciones entre múltiples variables utilizando un mapa de calor.
¿Qué es la correlación?
"Cuanto mayor es la estatura, mayor es el peso corporal": esta es una correlación positiva. Es la tendencia en la que, cuando una variable aumenta, la otra también tiende a aumentar.
"Cuando la temperatura sube, las ventas de chocolate caliente disminuyen": esta es una correlación negativa. Es la tendencia en la que, cuando una variable aumenta, la otra tiende a disminuir.
La "intensidad de esta tendencia", expresada numéricamente, se denomina coeficiente de correlación.
| Valor | Significado |
|---|---|
| +1.0 | Correlación positiva perfecta (ambas aumentan juntas) |
| +0.7 ~ +0.9 | Correlación positiva fuerte |
| +0.3 ~ +0.7 | Correlación positiva débil a moderada |
| 0 | Sin correlación |
| -0.3 ~ -0.7 | Correlación negativa débil a moderada |
| -1.0 | Correlación negativa perfecta (se mueven en direcciones opuestas) |
Diagrama de dispersión: observar la relación entre dos variables
import seaborn as snsimport matplotlib.pyplot as plt
sns.scatterplot(data=df, x='experience', y='salary')plt.title('Experiencia vs. Salario')plt.show()Si los puntos se agrupan hacia la parte superior derecha, indica una correlación positiva; si se agrupan hacia la parte inferior derecha, indica una correlación negativa; y si los puntos están dispersos en todas las direcciones, no hay correlación.
Añadir línea de tendencia
sns.regplot(data=df, x='experience', y='salary', scatter_kws={'alpha': 0.5}, line_kws={'color': 'red'})regplot muestra un diagrama de dispersión y una línea de regresión simultáneamente. Observando qué tan bien la línea se ajusta a los puntos, se puede evaluar visualmente la fuerza de la correlación.
Matriz de correlación: múltiples variables a la vez
Si hay dos variables, un solo diagrama de dispersión es suficiente. Pero, ¿qué ocurre si hay diez? Para visualizar todas las combinaciones, se necesitarían 45 diagramas de dispersión. En este caso, se utiliza una matriz de correlación.
# Calcular matriz de coeficientes de correlacióncorr = df[['salary', 'experience', 'age', 'projects']].corr()print(corr)salary experience age projects
salary 1.000 0.850 0.620 0.430
experience 0.850 1.000 0.780 0.350
age 0.620 0.780 1.000 0.120
projects 0.430 0.350 0.120 1.000Una matriz numérica no es fácil de interpretar de un vistazo. Un mapa de calor es la representación visual de esta matriz, donde los valores se codifican mediante colores.
Mapa de calor: visualización de la matriz de correlación
plt.figure(figsize=(8, 6))sns.heatmap(corr, annot=True, # Mostrar números en las celdas fmt='.2f', # Dos decimales cmap='coolwarm', # Rojo (positivo) ~ Azul (negativo) vmin=-1, vmax=1, # Rango de colores fijo square=True, # Celdas cuadradas linewidths=0.5) # Líneas entre celdasplt.title('Correlación entre variables')plt.tight_layout()plt.show()Cómo interpretar un mapa de calor:
- Celdas rojas: fuerte correlación positiva (las variables aumentan o disminuyen juntas).
- Celdas azules: fuerte correlación negativa (las variables se mueven en direcciones opuestas).
- Celdas blancas: no hay correlación (las variables son independientes).
- Diagonal: siempre 1.0 (correlación de una variable consigo misma).
Consideraciones importantes para la interpretación
Correlación no implica causalidad
La "cantidad de helado vendido" y el "número de ahogamientos" pueden tener un coeficiente de correlación alto. Esto no significa que el helado cause ahogamientos; ambas variables están influenciadas por una variable oculta: el "verano (temperatura)".
La correlación solo indica que "las variables se mueven juntas". Es diferente de la causalidad, que implica que "una variable provoca la otra".
Relaciones no lineales
El coeficiente de correlación (de Pearson) solo mide relaciones lineales. Una relación en forma de U (por ejemplo, el rendimiento es alto con un nivel moderado de estrés, pero disminuye si el estrés es demasiado alto) puede tener un coeficiente de correlación cercano a 0. Siempre verifique visualmente mediante un diagrama de dispersión.
pairplot: matriz de diagramas de dispersión
Cuando hay pocas variables, pairplot es útil porque muestra todos los pares de diagramas de dispersión en una cuadrícula:
sns.pairplot(df[['salary', 'experience', 'age', 'projects']], diag_kind='kde')plt.show()- Diagonal: distribución de cada variable (histograma o KDE)
- Resto: diagrama de dispersión para todos los pares de variables
Si hay más de cinco variables, el gráfico se vuelve demasiado pequeño y difícil de leer. Es más eficiente usar un mapa de calor para ver las tendencias generales y ampliar en un diagrama de dispersión solo los pares de interés.
Clave
El diagrama de dispersión muestra la relación entre dos variables; el mapa de calor muestra de un vistazo las correlaciones entre múltiples variables. El coeficiente de correlación va de -1 (correlación negativa perfecta) a +1 (correlación positiva perfecta); si es 0, no hay relación lineal. Correlación no implica causalidad: no se fíe solo de los números; verifique siempre con un diagrama de dispersión.