Distribución Binomial fácil y con ejemplos en Google Sheets y Python

Existen varias formas de abordar la explicación de conceptos. Una de ellas consiste en soltar la definición formal, dando sus características, como una mera entidad matemática e ir luego desgranando cómo se aplica al mundo real.

A nosotros nos gusta explicar en la dirección contraria, dando ejemplos y viendo esos patrones comunes que poco a poco nos llevan a la idea abstracta, pero siempre con los pies en el suelo y sin olvidar que son matemáticas aplicadas.

Sin embargo, usualmente es necesaria una introducción, para conocer por lo menos cuándo aplicar esta conocida distribución (con permiso de la distribución normal que trataremos en otro artículo).

Seguidme en este viaje, pues veremos aplicaciones concretas y sus soluciones, con las fórmulas incluidas para Google Sheets y también usando código en Python.

¿Qué es la distribución binomial?

Sucesos discretos

Para empezar la distribución binomial trata con sucesos discretos. Discreto quiere decir que solo pueden tomar un valor determinado de entre varias posibilidades.

Los ejemplos típicos de sucesos discretos son por ejemplo: Tirar una moneda al aire, o lamzar un dado. En el primer caso, los únicos resultados pueden ser Cara o Cruz, y en el segundo caso puede ser 1, 2, 3, 4, 5 ó 6.

Ensayos de Bernouilli

La distribución binomial tratará más concretamente con sucesos discretos que solo tienen 2 resultados, a los que se suelen denominar «éxito» y «fracaso«. Este tipo de sucesos discretos con solo dos posibilidades se denominan experimentos o ensayos de Bernouilli. Bernoullis célebres hubo muchos, pero esa es otra historia. Nos referimos aquí a Jacob Bernouilli.

A la probabilidad de que ocurra el éxito la representamos con la letra «p», y la probabilidad de fracaso con la letra «q». Obviamente se cumple siempre que q=1-p

Aclaremos ya desde el primer momento: «éxito» o «fracaso» no tienen aquí connotaciones positivas o negativas. Simplemente son la forma usual de llamar a un resultado o a otro indistintamente.

Una vez lo fijemos por ejemplo diremos que «cruz» será un éxito, y en una moneda equilibrada por tanto p=0.5, pues existe la misma probabilidad de sacar «cara» o «cruz». Igualmente podemos decidir que sacar un 3 en un dado es «éxito» y por tanto p=1/6 y q=5/6

Sucesos independientes

Una restricción más: Los sucesos deben ser independientes entre sí. Aunque a algunos les cueste creer, una moneda al aire no tiene ni idea del resultado de lanzamientos anteriores. Ni un color negro en la ruleta una vez más significa que han conspirado a favor o en contra de nosotros. Simplemente son sucesos independientes cada vez que realizamos la tirada con la misma probabilidad en cada una de ellas.

Lo que nos llama la atención en ciertos casos quizás es la poca probabilidad de que en conjunto tengamos muchas más veces un resultado que otro, pero creedme que en cada «experimento» siempre tendremos una probabilidad «p» de obtener un resultado, y una probabilidad «q» de obtener el contrario. Lo veremos en detalle en los ejemplos.

Probabilidades con distribución Binomial

Resumiendo: La distribución binomial nos servirá (nada más y nada menos) para calcular la probabilidad de obtener un número de veces un resultado (llamemos «x» a este número y «éxito» al resultado concreto) cuando efectuamos «n» ensayos tipo Bernouilli (2 opciones), conociendo la probabilidad «p» de que ocurra éxito en cada uno de esos ensayos.

Parece una definición con muchas restricciones, pero es que el mundo está plagado de tales sucesos a poco que miremos con ojos matemáticos.

Notación

Antes de empezar con los ejemplos de aplicación, daremos la notación que se usa para especificar una distribución binomial.

B(n,p) –> Es la distribución binomial de n experimentos de Bernouilli, siendo p la probabilidad de éxito.

En algunos textos puede aparecer como Bi(n,p) o incluso Bin(n,p)

Así, si quieremos por ejemplo conocer la probabilidad de que al tirar 10 veces una moneda equilibrada, tengamos cara 7 veces exactamente, solo tendremos que calcular P[X=7] en una distribución B(10 , 0.5)

Cálculo de probabilidad de la distribución Binomial

Para los más curiosos, que quieran conocer la expresión para calcular «a mano» la probabilidad de una distribución Binomial, decirles que no la usaremos. No porque no sea interesante, sino porque este artículo trata de aplicaciones prácticas del mundo real, donde se usan herramientas comunes y muchas de ellas gratuitas. En todo caso aquí está:

Las fórmulas y librerías aplicadas son simplemente otra manera más cómoda de realizar dichos cálculos. Lo verdaderamente interesante es saber analizar un problema y conocer cómo se puede resolver. El resto es pura mecánica.

Ejemplo 1: Lanzamientos de una moneda

Empecemos con el ejemplo más fácil posible que hemos avanzado en la introducción, para familiarizarnos con las herramientas.

Enunciado: Calcular la probabilidad de que al lanzar 10 veces una moneda, saquemos en total exactamente 6 veces cara (no necesariamente de forma consecutiva).

En este caso, y usando la notación:

  • n=10 pues realizaremos 10 experimentos de Bernouilli
  • p=1/2 , pues vamos a suponer una moneda justa (equilibrada)
  • x=6, que es el número de veces en el que estamos interesados.

La distribución será B(n,p) = B(10 , 1/2)

Y lo que pretendemos calcular es P[X=6]

Ejemplo 1. Resolución usando Google Sheets

En cualquier celda de la excelente (y gratuita) hoja de cálculo de Google empezamos a teclear el signo = , lo que indicará que es una fórmula, seguido de la palabra BINOMDIST (hay funciones sinónimas como BINOM.DIST) y apertura de paréntesis ( sin espacios, y es en ese momento cuando aparece la ayuda con el significado de cada parámetro que tendremos que usar:

Lo que sigue es fácil, simplemente ponemos cada valor en su lugar, con la excepción del parámetro «acumulado» que por ahora lo dejamos con valor FALSE pues lo explicaremos con otro ejemplo posterior.

Si usas MS Excel, en la mayoría de los casos las funciones serán las mismas.

El contenido de la celda os debe quedar de esta forma: =BINOMDIST(6; 10; 1/2; FALSE)

Y el resultado es P=0,205078125, o lo que es lo mismo, un 20.5 % aprox.

Interpretemos bien este resultado. Lo que tenemos es equivalente a decir que si repetimos 100 veces (100 veces el tirar 10 veces una moneda), en unas 20 ocasiones más o menos tendremos 6 caras exactamente.

Si lo hacemos realmente, veremos que quizás no sea exactamente 20.5 veces. Quizás sucedió 19 o 22, o puede que 21… nunca será exacto el resultado…. Pero….. Lo que la estadística indica es otra cosa: Indica que si somos muy cabezotas y repetimos el experimento 1000 veces, o un millón de veces, cada vez el resultado se acercará más al resultado teórico de 0,205078125. Siempre y cuando la moneda sea perfecta.

Por eso nunca debemos comparar exactamene un resultado teórico de probabilidades contra un único experimento. ¿Nos serviría para decidir si apostamos o no en un juego de este tipo? Por supuesto.

Ejemplo 1. Resolución usando Python

Usaremos una librería muy conocida llamada SciPy, y el entorno de programación de Google Colab, siendo ambas soluciones gratuitas.

¿Porqué usar Python cuando ya tenemos un resultado fácil con hojas de cálculo?

Es una muy buena pregunta, y si solamente os interesa el resultado directo, con Google Sheets es suficiente.

La ventaja de Python radica en que podremos combinar con otras librerías de representación, o en cualquier otro proyecto en el que estemos metidos con este lenguaje tan versátil.

Para los que nunca han programado, nunca es mal momento para comenzar a teclear algo de código. Y hacerlo con un objetivo como puede ser resolver un problema de estadística es perfecto.

La función en concreto que usaremos del paquete SciPy se llama binom.pmf porque utiliza el término «función de probabilidad de masa (probability mass function), pero el cometido es el mismo que en las funciones anteriores de Google Sheets. El código completo es el siguiente:

# Ejemplo 1: Lanzamientos de una moneda

from scipy.stats import binom

# Cálculo de probabilidad
resultado = binom.pmf(k=6, n=10, p=1/2)

# Resultado
print("Probabilidad: ",resultado)

# Probabilidad: 0.2050781249999999

Ejemplo 2: Buscando petróleo

Vayamos a algo un poco más realista.

Enunciado: Una gran compañía petrolera ha excavado 20 pozos de exploración. Habían calculado que la probabilidad de encontrar petróleo en cada uno era de un 20%, pero no han encontrado nada en ninguno de los sondeos… Ya se están planteando si han hecho algo mal. ¿Cúal es la probabilidad de que ocurra lo que están observando?

Usando la notación a la que ya estamos acostumbrados, y teniendo en cuenta que nuestro «acierto» va a ser no encontrar petróleo:

  • n=20 , pues vamos a hacer 20 experimentos.
  • p=0.8, pues cada pozo tendrá un 80% de probabilidad de no tener petróleo
  • X=20, en este caso como «acierto»=»No encontrar petróleo», ya que queremos conocer la probabilidad de que todos los ensayos sean aciertos.

La distribución será B(20, 0.8), y la probabilidad buscada P[X=20]

Ejemplo 2. Resolución usando Google Sheets

El contenido de la celda os debe quedar con la siguiente función: =BINOMDIST(20; 20; 0,8; FALSE)

Y el resultado es 0,0115292150460685, es decir 1.1% aprox.

Interpretemos: La probabilidad de que por puro azar ningún pozo tenga petróleo es de 1.1%. Es una probabilidad muy pequeña... pero cúanto de pequeña debe ser para que concluyamos que algo estamos haciendo mal ( por ejemplo, la probabilidad p no era correcta, no estamos excavando lo suficiente, …).

Lo ideal, y lo honesto, es establecer de anetemano las reglas del juego. Por ejemplo, podríamos decidir que por debajo de un 5% de probabilidad es «estadísticamente significativo» (es el término usado) y que por tanto es muy improbable que lo que estamos observando se deba al puro azar, luego algo estamos haciendo mal. Dejemos de excavar pozos y pensemos, que perforar un pozo cuesta mucho dinero.

Los niveles de significación que se usan normalmente son del 5%, del 2% y para casos muy «finos» del 1%. Lo normal es usar el 5%, o lo que es lo mismo, un nivel de confianza del 95%

Veremos en otro artículo cómo generalizamos estas interpretaciones con el contraste de hipótesis.

Vayamos un paso más, y montemos una tabla y gráfico en Google Sheets para ver cómo varía esta probabilidad final según distintos valores de p de no encontrar petróleo en un pozo.

Lo único que tendremos que hacer es copiar la fórmula en una segunda columna referenciando a cada valor de «p» en la primera columna:

Prob. no encontrar petróleo en pozoProb. de que se deba al azar tras 20 sondeos
00,0000
0,10,0000
0,20,0000
0,30,0000
0,40,0000
0,50,0000
0,60,0000
0,70,0008
0,80,0115
0,90,1216
11,0000
Probabilidad Binomial

Como vemos, para valores de «p» por debajo de 0.75 la probabilidad es casi nula en este caso.

Ejemplo 2. Resolución usando Python

La solución usando Python también es directa con el paquete SciPy:

# Ejemplo 2: Buscando petróleo

# Cálculo de probabilidad
resultado = binom.pmf(k=20, n=20, p=0.8)

# Resultado
print("Probabilidad: ",resultado)

# Probabilidad: 0.011529215046068483

Ejemplo3. Un nuevo fármaco

Enunciado: Un investigador médico decide realizar pruebas con un nuevo fármaco en 5 personas de la misma edad y que tienen una enfermedad específica. Elegirá a otro grupo de 5 personas similares para realizar un estudio comparativo como referencia.

Según las estadísticas actuales, la probabilidad de que una persona en esas condiciones viva más de 2 años es de un 85%. Para poder luego comparar, hállese la probabilidad de que transcurridos 2 años:

a) Vivan las 5 personas del grupo de referencia

b) Vivan al menos 3 personas del grupo de referencia

Primero vamos a establecer cuál es la distribución Binomial con la que trabajaremos: B(5, 0.85)

  • n=5, pues vemos a cada paciente como un ensayo tipo Bernouilli, con «acierto»=»sobrevivir tras 2 años»
  • p=0.85, pues cada paciente tiene un 85% de probabilida de vivir más de 2 años.
  • X variará en cada una de las preguntas:
    • P[X=5] para ver la probabilidad de que tras dos años los 5 pacientes sigan vivos.
    • P[X=3]+P[X=4]+P[X=5] = 1 – ( P[X=1]+P[X=2] ). Usaremos la probabilidad acumulada. Más explicaciones depués.

Ejemplo3. Resolución con Google Sheets

a) Probabilidad de que vivan las 5 personas.

Bien, en este caso la función es directa: =BINOMDIST(5; 5; 0,85; FALSE) , dando un resultado de 0,4437053125 (44.3%)

b) Probabilidad de que vivan al menos 3 personas

Aquí usaremos la probabilidad acumulada, que como su nombre indica es otra manera de sumar varias probabilidades. Si realizamos la probabilidad acumulada hasta X=2, estarems sumando P[X=1] y P[X=2], pero esto es justo lo contrario de lo que queremos calcular, por lo que haremos la siguiente cuenta:

=1 – BINOM.DIST(2; 5; 0,85; TRUE)

Nótese que en el parámetro de acumulación hemos usado TRUE en esta ocasión.

El resultado: 0,973388125 (97.3%)

Ejemplo3. Resolución con Python

# Ejemplo 3: Un nuevo fármaco

# Cálculo de probabilidad
resultado_a = binom.pmf(k=5, n=5, p=0.85)
resultado_b = 1 - binom.cdf(k=2, n=5, p=0.85)


# Resultado
print("Probabilidad a): ",resultado_a)
print("Probabilidad b): ",resultado_b)

# Probabilidad a):  0.44370531249999995
# Probabilidad b):  0.9733881249999999

Otras entradas que te pueden interesar:

Deja un comentario