¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Correlación y causalidad

Después de esta lección: Puedo medir la relación entre dos variables y explicar por qué no prueba una causa.

Lección de 60 min1 comandoLaboratorio JupyterLab de ciencia de datos: pandas, Matplotlib y scikit-learn en el navegador

La correlación mide cuánto van juntas dos variables

La correlación es un número entre -1 y 1 que mide cuánto van juntas dos variables: cuando una sube, la otra también sube, o baja. Se llama coeficiente de correlación y se escribe r.

Sirve para ver relaciones en tus datos, pero que dos cosas vayan juntas no significa que una cause la otra.

Al final de esta lección

Nota

Puedo medir la relación entre dos variables y explicar por qué no prueba una causa.

Palabras clave

PalabraQué significa
Correlacióncuánto van juntas dos variables
Coeficiente rel número de -1 a 1 que mide la correlación
Diagrama de dispersiónpuntos con una variable en cada eje
Causaalgo que produce un cambio en otra cosa
Variable ocultaun tercer factor que mueve a las dos variables
Valor atípicoun punto muy lejos del resto

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un diagrama de dispersión muestra la relación

Un diagrama de dispersión pone una variable en cada eje y un punto por caso. Si los puntos suben de izquierda a derecha, la relación es positiva. Si bajan, es negativa.

El coeficiente r resume la nube en un número. Vale 1 si todos los puntos están en una recta que sube. Vale -1 si la recta baja, y cerca de 0 si no hay relación en línea recta.

Mide la correlación de dos pares de columnas

Comando
docker exec jupyter python3 -c "import csv,statistics as s; d=list(csv.DictReader(open('hires.csv'))); h=[int(r['hires']) for r in d]; print(round(s.correlation([float(r['temp_c']) for r in d],h),2), round(s.correlation([float(r['rain_mm']) for r in d],h),2))"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Ejemplo resuelto: cómo leer r

Valor de rQué diceEjemplo del laboratorio
Cerca de 1Suben juntas, relación fuerteTemperatura y alquileres: 0,77
Cerca de 0Sin relación en línea rectaDos columnas sin conexión
Cerca de -1Una sube y la otra bajaLluvia y alquileres: -0,41, de fuerza media

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Cómo se calcula el coeficiente r

Para cada caso, resta a x su media y a y la suya, y multiplica las dos distancias. Suma todos esos productos. Divide entre la raíz del producto de las sumas de cuadrados de x y de y.

Si x e y se mueven juntas, los productos son casi todos positivos y r sube.

Ejemplo resuelto: horas de estudio y nota

Horas xNota ydx (media 3)dy (media 4)dx por dydx al cuadradody al cuadrado
12-2-2444
24-10010
3501001
4410010
5521241
Suma6106

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Calcula r con un bucle

Código: python
# Cinco semanas: horas de estudio y nota de una práctica.
horas = [1, 2, 3, 4, 5]
notas = [2, 4, 5, 4, 5]

n = len(horas)
media_x = sum(horas) / n
media_y = sum(notas) / n

arriba = 0
suma_x = 0
suma_y = 0
for i in range(n):
    dx = horas[i] - media_x
    dy = notas[i] - media_y
    arriba = arriba + dx * dy
    suma_x = suma_x + dx ** 2
    suma_y = suma_y + dy ** 2

r = arriba / (suma_x * suma_y) ** 0.5
print("r:", round(r, 3))
# Cambia el último 5 de notas por un 1 y vuelve a ejecutar.
# ¿Qué le pasa a r?

Un error muy común

Advertencia

Mucha gente cree que si dos variables van juntas, una causa la otra. No es así: los helados y las gafas de sol se venden más en verano, y ninguno causa al otro. Antes de hablar de causa, busca un tercer factor, y mejor aún un experimento.

Una correlación puede tener tres explicaciones

Si A y B van juntas, puede que A cause B, que B cause A o que una variable oculta mueva a las dos. En las bicis, el calor sube los alquileres y las ventas de helados. Helados y bicis irían juntos sin que ninguno cause al otro.

Un valor atípico también puede subir o bajar r. Mira siempre el diagrama antes de fiarte del número.

Para ir más lejos: elige tus dos columnas

Con la orden de r, cambia temp_c por otra columna numérica y mide su relación con los alquileres. Antes de ejecutar, escribe si esperas un r positivo, negativo o cercano a cero.

Después escribe una frase que describa la relación sin usar la palabra «causa».

Sobre este laboratorio y su código: Laboratorio JupyterLab de ciencia de datos: pandas, Matplotlib y scikit-learn en el navegador

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.