Casi todos los proyectos de ciencia de datos implican estudiar las correlaciones entre variables. Una correlación es el resumen estadístico de la relación entre dos conjuntos de variables. Es una parte central del análisis exploratorio de datos y un elemento clave en numerosas técnicas avanzadas de machine learning. Si estás pensando en adentrarte en la ciencia de datos, tarde o temprano en tu camino tendrás que aprender sobre correlación.
En este tutorial, explicaremos qué es la correlación y su relevancia al realizar proyectos de ciencia de datos. También revisaremos los distintos coeficientes de correlación que podemos usar para medir la fuerza y la dirección de la relación entre variables. Usaremos código en Python para ver ejemplos prácticos de cómo medir y visualizar correlaciones de forma sencilla.
- ¿Qué es la correlación?
- Coeficientes de correlación
- Calcular la correlación en Python
- Correlación no implica causalidad
- Conclusión
¿Qué es la correlación?
La correlación es el análisis estadístico de la relación o dependencia entre dos variables. Nos permite estudiar tanto la intensidad como la dirección de la relación entre dos conjuntos de variables.
Estudiar la correlación puede ser muy útil en muchas tareas de ciencia de datos. Para empezar, es un componente clave del análisis exploratorio: el estudio inicial que hacemos sobre los datos para ver su aspecto, resumir sus características principales y detectar patrones y anomalías.
Además, las correlaciones tienen muchas aplicaciones reales. Pueden ayudarnos a responder preguntas como si existe un vínculo entre democracia y crecimiento económico, o si el uso del coche se correlaciona con el nivel de contaminación del aire.
Por último, el estudio de la correlación es fundamental en machine learning. Por ejemplo, algunos algoritmos no funcionarán bien si dos o más variables están estrechamente relacionadas, lo que suele conocerse como multicolinealidad. La correlación también es la base del análisis de componentes principales, una técnica lineal de reducción de dimensionalidad muy útil en proyectos de machine learning.
Existen distintos tipos de correlación:
- Correlación positiva: dos variables están positivamente correlacionadas cuando sus valores se mueven en la misma dirección. Por ejemplo, en la imagen siguiente, a medida que aumenta el valor de X, también lo hace el de Y a un ritmo constante:

- Correlación nula: no hay relación en el cambio de las variables X e Y. En este caso, los valores son completamente aleatorios y no muestran señal de correlación, como se ve en la imagen siguiente:

- Correlación negativa: por último, X e Y estarán negativamente correlacionadas cuando sus valores cambian en direcciones opuestas; aquí, a medida que aumenta X, Y disminuye a un ritmo constante:

Representar los datos es la forma más rápida y eficaz de descubrir el tipo de correlación entre variables. La manera típica de visualizar dependencias entre dos variables es con un diagrama de dispersión. En él, el eje x muestra el valor de la primera variable y el eje y el de la segunda. Las tres imágenes anteriores son tipos de diagramas de dispersión. Echa un vistazo a este vídeo tutorial para ver cómo crear uno en Python.
Sin embargo, a veces no basta con visualizar la correlación: también necesitaremos medir cuán fuerte es. Ahí es donde entran los coeficientes de correlación.
Coeficientes de correlación
Un coeficiente de correlación es un resumen estadístico que mide la fuerza y la dirección con la que dos variables se asocian entre sí.
Una de las ventajas de los coeficientes de correlación es que estiman la relación de forma estandarizada: el valor del coeficiente siempre está en la misma escala, desde -1,0 hasta 1,0.
Hay varios coeficientes de correlación. Elegir uno u otro depende de lo que sepamos sobre la estructura de la relación entre las variables. Aun así, en general se recurre al más conocido: el coeficiente de correlación de Pearson.
Coeficiente de correlación de Pearson
El coeficiente de correlación de Pearson (r) es una puntuación que mide la fuerza de una relación lineal entre dos variables. Se calcula dividiendo la covarianza de X e Y entre el producto de las desviaciones estándar de cada variable, como muestra la fórmula siguiente:

El coeficiente se basa en dos supuestos. Primero, asume que las variables siguen una distribución normal o gaussiana. Si los datos no son normales, puede que otros coeficientes sean más fiables.
Segundo, asume que existe una relación lineal entre las dos variables, es decir, que los cambios en los datos pueden modelarse con una función lineal (sus valores aumentan o disminuyen simultáneamente a un ritmo constante). Cuanto más se acerque la relación entre ambas a una línea recta, más fuerte será su correlación lineal y mayor el valor absoluto del coeficiente de Pearson. Por ejemplo, en la siguiente imagen, todos los puntos pueden modelarse perfectamente con una recta, lo que da un coeficiente de 1,0.

Un coeficiente de -1,0 indica una correlación negativa perfecta, mientras que un coeficiente de 1,0 muestra una correlación positiva perfecta. Por el contrario, un coeficiente de 0,0 indica que no hay correlación lineal entre las variables.
Interpretar el coeficiente se complica cuando su valor se acerca a cero. Se han propuesto varias reglas prácticas para interpretarlo. Una de las más populares fue formulada por Dennis E. Hinkle y sus coautores en su libro Applied Statistics for the Behavioral Sciences:
Regla práctica para interpretar el coeficiente de correlación. Hinkle, Wiersma, & Jurs.
Es importante destacar que un coeficiente de Pearson cercano a 0,0 solo indica que no hay relación lineal entre las variables. Pero podría existir una relación no lineal fuerte. Si la relación entre dos variables es no lineal, el ritmo de aumento o disminución puede cambiar a medida que cambia una variable, dibujando un patrón curvo en los datos. Esa tendencia podría modelarse mejor con una función no lineal, como una función cuadrática o cúbica.
Por ejemplo, la siguiente imagen muestra cómo varía el nivel de felicidad de las personas trabajadoras en función de las horas trabajadas por semana. Vemos que, a medida que aumentan las horas, también lo hace la felicidad, pero empieza a caer a partir de unas 35 horas. El modelo lineal (línea roja) no se ajusta bien a los datos. En cambio, un modelo cuadrático (línea azul), también conocido como modelo polinómico de grado 2, parece una opción mucho mejor para capturar la curvatura. Cuando la relación es no lineal, la correlación suele subestimar su intensidad. Es lo que ocurre en este ejemplo, donde el coeficiente es 0,127, lo que dice poco sobre la relación no lineal entre felicidad y horas trabajadas.

Otros coeficientes de correlación
La mayor limitación del coeficiente de Pearson es que asume una relación lineal entre las dos variables. Sin embargo, con frecuencia las variables se relacionan de forma no lineal. Además, los datos pueden no seguir una distribución gaussiana. Para solventarlo, se han propuesto otros estimadores, como los coeficientes de correlación rho de Spearman y tau de Kendall.
Mientras que el coeficiente de Pearson asume relaciones lineales, los de Spearman y Kendall asumen que la relación es simplemente monótona. En una relación monótona, las variables tienden a moverse en la misma dirección relativa, pero no necesariamente a un ritmo constante. En otras palabras, toda relación lineal es monótona, pero no toda relación monótona es lineal.

En lugar de calcularse con la covarianza y las desviaciones estándar de las variables, se basan en el rango relativo de los valores. Esta particularidad los hace robustos frente a valores extremos y adecuados para ciertos tipos de no linealidades.
Al igual que con el coeficiente de Pearson, las puntuaciones de Spearman y Kendall van de -1 a 1 para variables perfectamente correlacionadas de forma negativa y positiva, respectivamente.
Aun así, por lo general se puede recurrir al coeficiente de Pearson. Los estimadores basados en rangos resultan especialmente útiles en conjuntos de datos pequeños y en pruebas de hipótesis específicas.
Calcular la correlación en Python
Hay varios paquetes de Python que nos ayudan a medir la correlación. En esta sección, nos centraremos en las funciones disponibles en tres librerías muy conocidas: SciPy, NumPy y pandas.
Para probar las funciones, imagina que queremos estudiar la relación entre la experiencia laboral (medida en años) y el salario (en dólares) en una startup pequeña pero exitosa con 16 personas en plantilla.
experience = [1, 3, 4, 5, 5, 6, 7, 10, 11, 12, 15, 20, 25, 28, 30,35]
salary = [20000, 30000, 40000, 45000, 55000, 60000, 80000, 100000, 130000, 150000, 200000, 230000, 250000, 300000, 350000, 400000]
Como vemos en el siguiente gráfico, existe una correlación positiva fuerte entre ambas variables: las personas con más experiencia tienden a tener salarios más altos.

SciPy es una gran librería para realizar operaciones estadísticas. El módulo scipy.stats incluye la función pearsonr(x, y) para calcular el coeficiente de correlación de Pearson entre dos muestras.
import scipy.stats as stats
corr, _ = stats.pearsonr (experience, salary)
corr
0.9929845761480398
Podríamos calcular los coeficientes de Spearman y Kendall del mismo modo:
spearman_corr, _ = stats.spearmanr(experience, salary)
spearman_corr
0.9992644353546791
kendall_corr, _ = stats.kendalltau(experience, salary)
kendall_corr
0.9958246164193105
NumPy es un paquete muy popular que ofrece un amplio conjunto de funciones matemáticas avanzadas, incluida np.corrcoef(), que devuelve una matriz de coeficientes de correlación de Pearson:
import numpy as np
np.corrcoef(experience, salary)
array([[1. , 0.99298458],
[0.99298458, 1. ]])
Una matriz de correlación es una tabla que muestra los coeficientes de correlación entre variables. Cada celda muestra la correlación entre dos variables. La diagonal incluye los coeficientes entre cada variable y ella misma, que siempre valen 1,0. Los otros valores representan la correlación entre experiencia y salario. En este caso, como solo calculamos la correlación de dos variables, los valores son los mismos.
Por último, normalmente necesitaremos calcular la correlación para variables almacenadas en DataFrames de pandas. Imagina que tenemos un DataFrame con información sobre las personas de la startup:

Si quisiéramos calcular la correlación entre dos columnas, podemos usar el método .corr() de pandas, así:
import pandas as pd
df['experience'].corr(df['salary'])
0.9929845761480398
.corr() incluye el parámetro "method", que permite calcular los tres coeficientes de correlación. Por defecto, calcula el de Pearson.
print(df['experience'].corr(df['salary'], method='spearman'))
print(df['experience'].corr(df['salary'], method='kendall'))
0.9992644353546791
0.9958246164193105
Si quisiéramos explorar la correlación entre todos los pares de variables, podemos aplicar directamente .corr() al DataFrame, lo que produce de nuevo una matriz de correlación con el coeficiente de todos los pares de variables:
df.corr()

La matriz de correlación puede ser muy grande y difícil de interpretar si el DataFrame tiene muchas columnas. Para extraer ideas de manera más efectiva, podemos usar un mapa de calor: una técnica de visualización en la que cada valor se representa con un color según su intensidad en una escala. La forma más rápida de crear un mapa de calor es con la función heatmap(), disponible en la librería seaborn:
import seaborn as sns
sns.heatmap(df.corr(), vmin=-1, vmax=1,
annot=True,cmap="rocket_r")
plt.show()

Correlación no implica causalidad
No podemos terminar este tutorial sin una advertencia importante: correlación no implica causalidad.
La correlación solo cuantifica la fuerza y la dirección de la relación entre dos variables. Puede haber una correlación fuerte entre dos variables, pero eso no permite concluir que una cause a la otra. Cuando las correlaciones fuertes no son causales, las llamamos espurias.
Dos escenarios pueden llevar a correlaciones espurias:
- Primero, puede que exista una tercera variable "de confusión" que esté causando ambas. Imagina que hay una correlación positiva fuerte entre el consumo de helado y el número de golpes de calor en una población. Podríamos llegar a la conclusión absurda de que comer helado provoca golpes de calor. Sin embargo, lo que ocurre es que ambas variables dependen de una tercera, probablemente la temperatura. Cuanto más alta es, más gente quiere helado y más probables son los golpes de calor.
- Un segundo motivo para ser cauteloso es que las dependencias entre variables podrían deberse simplemente al azar. Esto ocurre a menudo, y más cuando trabajamos con muestras pequeñas.
Por último, otra razón para tomar la correlación con cautela es que el mundo es complejo. Una correlación más fuerte entre dos variables puede llevarnos fácilmente a pensar que una causa a la otra. La creencia de que un efecto tiene una única causa se llama monocausalidad, pero rara vez es así. Varias variables pueden estar detrás de un efecto. Por tanto, para hablar de causalidad, primero debemos considerar todos los elementos de un sistema y evaluarlos no solo cuantitativamente (métodos estadísticos), sino también cualitativamente.
Por estos motivos, antes de sacar conclusiones sobre las relaciones en nuestros datos, es importante realizar un análisis más exhaustivo y detallado para identificar posibles correlaciones espurias.
Conclusión
Esperamos que te haya gustado este tutorial. La correlación es un tema importante que toda persona que aspire a trabajar en ciencia de datos debería aprender. En DataCamp, tenemos muchos cursos de estadística donde tratamos correlación, causalidad y otros conceptos clave, tanto con Python como con R.
Cuando tengas una base sólida, te recomendamos probar DataLab, el cuaderno de datos con IA de DataCamp para escribir código y aplicar lo aprendido sin tener que instalar nada.
