¿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

Cómo calcular una probabilidad

Después de esta lección: Puedo calcular la probabilidad de un suceso a partir de una tabla de recuentos.

Lección de 55 min2 comandosLaboratorio JupyterLab de ciencia de datos: pandas, Matplotlib y scikit-learn en el navegador

Una probabilidad va de 0 a 1

La probabilidad de un suceso es un número entre 0 y 1 que dice cuántas veces esperas que ocurra. Se calcula contando los casos favorables y dividiéndolos entre los casos posibles.

Con ese cálculo puedes responder preguntas como esta: si mañana llueve, ¿qué probabilidad hay de que la tienda de bicis tenga un día muy ocupado?

Al final de esta lección

Nota

Puedo calcular la probabilidad de un suceso a partir de una tabla de recuentos.

Palabras clave

PalabraQué significaEjemplo
Sucesoalgo que puede ocurrir o noque llueva
Probabilidadcasos favorables entre casos posibles, de 0 a 1
Suceso contrarioque el suceso no ocurra
Yque ocurran los dos sucesos a la vez
Condicionalla probabilidad de un suceso sabiendo que otro ocurrió
Independientesdos sucesos que no se influyen

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

Una probabilidad sale de contar casos

Si todos los casos son igual de posibles, la probabilidad es casos favorables / casos posibles. Un dado tiene 6 caras y una sola es un 4, así que la probabilidad de sacar un 4 es 1 / 6.

El resultado va de 0, que es imposible, a 1, que es seguro. El suceso contrario tiene probabilidad 1 menos la del suceso.

Cuenta los días que cumplen cada condición

Comando
docker exec jupyter python3 -c "import csv; d=list(csv.DictReader(open('hires.csv'))); b=[r for r in d if int(r['hires'])>=300]; r=[x for x in d if x['weather']=='rainy']; rb=[x for x in r if int(x['hires'])>=300]; print(len(d), len(b), len(r), len(rb))"

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: días de lluvia y días ocupados

Ocupado (300 o más)No ocupadoTotal
Llueve2595120
No llueve106139245
Total131234365

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

La probabilidad condicional reduce el grupo

A veces ya sabes algo. Si hoy llueve, solo importan los 120 días de lluvia. La probabilidad de «ocupado sabiendo que llueve» es 25 / 120, que es 0,208.

Compárala con los días sin lluvia: 106 / 245 es 0,433. Saber el tiempo cambia la probabilidad, así que «ocupado» y «lluvia» no son independientes.

Compara una condicional con su inversa

Comando
docker exec jupyter python3 -c "import csv; d=list(csv.DictReader(open('hires.csv'))); b=[r for r in d if int(r['hires'])>=300]; r=[x for x in d if x['weather']=='rainy']; rb=[x for x in r if int(x['hires'])>=300]; print(round(len(rb)/len(r),3), round(len(rb)/len(b),3))"

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

Un error muy común

Advertencia

Mucha gente cree que «ocupado si llueve» y «llueve si ocupado» son la misma probabilidad. No lo son: son 25 / 120 = 0,208 y 25 / 131 = 0,191. Antes de dividir, pregunta cuál es el grupo que ya conoces.

Y se multiplica, o se suma

Si dos sucesos son independientes, la probabilidad de que ocurran los dos es el producto. Con dos dados, sacar dos seises es 1 / 6 por 1 / 6, que es 1 / 36.

Si dos sucesos no pueden ocurrir a la vez, la probabilidad de «uno o el otro» es la suma. Si pueden coincidir, resta la parte que has contado dos veces.

Cuenta las formas de tirar dos dados

Código: python
# Todas las formas de tirar dos dados.
total = 0
suman_siete = 0
dos_seises = 0
for primero in range(1, 7):
    for segundo in range(1, 7):
        total = total + 1
        if primero + segundo == 7:
            suman_siete = suman_siete + 1
        if primero == 6 and segundo == 6:
            dos_seises = dos_seises + 1
print("formas:", total)
print("suman 7:", suman_siete, "de", total)
print("dos seises:", dos_seises, "de", total)
# Cambia el 7 por un 10 y vuelve a ejecutar.
# ¿Sale una probabilidad mayor o menor?

Ejemplo resuelto: un árbol en forma de tabla

Primer dadoSegundo dadoCuentaProbabilidad
661 forma1 / 36
suman 76 formas6 / 36 = 1 / 6
suman 103 formas3 / 36 = 1 / 12

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

Más lejos: sábados ocupados

Con la primera orden de la lección, cambia la condición de lluvia por otra de las columnas del archivo, por ejemplo weekday igual a Sat.

Calcula la probabilidad de «ocupado sabiendo que es sábado» y compárala con la de un día cualquiera. Escribe qué esperas antes de ejecutar.

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.