01 · Punto de partida
Contar cuántos sí en n intentos
¿Cuántos clientes compran de 20 que entran? ¿Cuántas piezas fallan en un lote de 50? ¿Cuántos aciertos en 10 preguntas con prob. p cada una? Todos son Binomial(n,p): n ensayos Bernoulli independientes con la misma p, contando éxitos.
Es el puente natural entre la Bernoulli del Tema 16 y la Poisson del Tema 20: sumar ceros y unos ya genera una distribución rica, con forma que va del sesgo a la campana.
- ¿Por qué sumar n Bernoullis ya es un generador exacto?
- ¿Qué forma tiene Bin(n,p) si p es chico, 0,5 o grande?
- ¿Cuándo conviene inversión por CDF en vez de suma?
- ¿Qué media y varianza debe reproducir la muestra?
02 · Definición
Masa, media y dispersión del conteo
Soporte {0,1,…,n}. E[X] = np, Var(X) = np(1−p). Con p = 0,5 es simétrica; con p chico se carga a la izquierda; con p grande, a la derecha. Cada k cuenta C(n,k) ordenamientos con igual probabilidad p^k(1−p)^(n−k).
Suma exacta
n umbrales Uᵢ < p sumados. Sin aproximación: la única fuente de error es el N finito de la muestra.
Forma que migra
p = 0,5 ⇒ campana simétrica. p → 0 ⇒ cola derecha. p → 1 ⇒ espejo. La varianza se maximiza en p = 0,5.
CDF en escalera
F(k) = Σⱼ≤ₖ P(X=j). Invertirla con un solo U es la alternativa O(n) en masa cuando n es grande.
| Caso | Media np | Varianza | Lectura |
|---|---|---|---|
| Bin(10; 0,1) | 1,0 | 0,90 | Sesgada a 0–2, cola derecha |
| Bin(10; 0,5) | 5,0 | 2,50 | Simétrica, campana discreta |
| Bin(10; 0,9) | 9,0 | 0,90 | Espejo: masa en 8–10 |
03 · Anatomía
Suma, inversión y recurrencia
- Suma de Bernoullis O(n)
- Contar cuántos Uᵢ < p en n ensayos. Gasta n uniformes por muestra. Ideal si n ≤ 30 o si ya necesitás los ensayos individuales.
- Inversión por CDF O(n)
- Un solo U comparado contra F(0), F(1), … acumulando masa. Gasta 1 uniforme pero recorre k valores. Base del Tema 2 aplicada a Bin(n,p).
- Recurrencia de la masa
- P(0) = (1−p)^n y P(k+1) = P(k)·(n−k)/(k+1)·p/(1−p). Evita factoriales que desbordan y alimenta la inversión sin combinatorios directos.
- n grande / p chica
- Con n = 1000 y p = 0,002 la suma gasta 1000 U por muestra: conviene Poisson(np) como aproximación (Tema 20) o normal si np(1−p) es grande (Tema 23).
Suma directa
Clara y reutilizable
Devuelve el conteo y los ensayos. La opción por defecto para enseñar y para n chica.
Inversión / recursiva
Ahorra uniformes
Un U por muestra y tabla de masa precomputada. Mejor cuando n es grande y solo importa el total.
04 · Dónde cuenta la binomial
Del ensayo al lote
- 1Calidad y lotes.
Defectuosas en un lote de n con prob. p por unidad: plan de muestreo y aceptación.
- 2Encuestas y conversión.
Compradores entre n visitantes, aciertos en n preguntas, clics en n impresiones.
- 3Puente a geométrica y negativa.
Bin(n,p) fija n y cuenta éxitos; la geométrica fija 1 éxito y cuenta espera; la binomial negativa espera r éxitos. (Temas 18, 26)
- 4Puente a Poisson y normal.
Con n grande y p chica ⇒ Poisson(np); con np(1−p) grande ⇒ campana normal. (Temas 20, 23)
05 · Representación en Python
Suma e inversión cara a cara
Mismos n y p: la suma gasta n uniformes, la inversión uno solo con tabla precomputada por recurrencia.
Python en tu navegador. Subí n a 30 con p = 0,5: la media debe ir a 15.
import random
random.seed(150)
n, p, N = 10, 0.3, 8000
def binomial_suma(n, p):
return sum(1 for _ in range(n) if random.random() < p)
# Tabla de masa por recurrencia (una sola vez)
masa = [0.0] * (n + 1)
masa[0] = (1 - p) ** n
for k in range(n):
masa[k + 1] = masa[k] * (n - k) / (k + 1) * p / (1 - p)
def binomial_inv():
u = random.random()
acum = 0.0
for k, pk in enumerate(masa):
acum += pk
if u < acum:
return k
return n
m1 = [binomial_suma(n, p) for _ in range(N)]
m2 = [binomial_inv() for _ in range(N)]
print("suma media:", round(sum(m1) / N, 3), "teórica:", n * p)
print("inv. media:", round(sum(m2) / N, 3), "teórica:", n * p)
print("P(X=0):", round(m1.count(0) / N, 3), "vs", round((1 - p) ** n, 3))
Media ≈ 3,0 y P(X=0) ≈ 0,028. Ambas funciones deben coincidir en distribución: si difieren, revisá la tabla acumulada.
06 · Exploración
Laboratorio: del sesgo a la campana
Movete n y p con N fijo. Las barras son frecuencia de k = 0…n; los rombos, C(n,k)p^k(1−p)^(n−k). Con p = 0,5 ves campana; con p = 0,1, sesgo a la izquierda.
Binomial por suma
X = Σ 1{Uᵢ < p}, i = 1…n
Con n 10, p 0,3 y N 5000, media 3,0.
Barras 0…n vs rombos teóricos. Probá n = 20 con p = 0,5 (campana) y p = 0,1 (sesgo).
Preguntas para explorar
- Con n = 10 y p = 0,3, ¿media y varianza teóricas? Leelas en el panel.
- Dejá n = 10 y llevá p a 0,5. ¿La forma se simetriza? ¿La varianza sube a 2,5?
- Subí n a 30 con p = 0,1. ¿La media va a 3 pero con más barras activas?
Ver respuestas sugeridas
- Media 3,0 y varianza 2,1.
- Sí: Bin(10; 0,5) es simétrica y np(1−p) = 2,5, la máxima para ese n.
- Sí: media 3,0 igual, pero el soporte se estira a 0…30 y la masa se reparte en más k.
07 · Comprensión
Confusiones frecuentes
«Bin(n,p) es n veces una Bernoulli»
Es la suma de n Bernoullis, no el producto ni n·B₁. Multiplicar un solo ensayo por n solo da {0, n}, no el conteo 0…n.
«Los ensayos pueden tener distinta p»
Entonces no es binomial sino Poisson-binomial: la masa C(n,k)p^k(1−p)^(n−k) exige la misma p e independencia.
«Uso factoriales para C(n,k)»
Desborda rápido y pierde precisión. Usar recurrencia P(k+1)/P(k) o math.comb con escala logarítmica.
«Con N = 200 ya valido la cola»
Las colas (ej. P(X=0) = 0,028) necesitan miles de réplicas: con N chico la cola observada es 0 por azar, no por bug.
08 · Práctica guiada
Ejercicios con Python
Ejercicio 1: lote con defectos
Lote n = 20, p = 0,1 por unidad, N = 8000 (semilla 151): estimá media (≈ 2) y P(0 defectos) (≈ 0,9^20 ≈ 0,122).
import random
random.seed(151)
n, p, N = 20, 0.1, 8000
m = [sum(1 for _ in range(n) if random.random() < p) for _ in range(N)]
print(round(sum(m) / N, 3), "vs", n * p)
print(round(m.count(0) / N, 3), "vs", round((1 - p) ** n, 3))
Ver solución razonada
≈ 2,0 y ≈ 0,12 (típicamente 1,9–2,1). Si la media da ≈ 4, estás contando con p = 0,2 o n = 40.
Ejercicio 2: simetría en p = 0,5
Con n = 12, p = 0,5 y N = 8000, verificá que P(X=k) = P(X=12−k) en la muestra (ej. k = 3 vs 9).
import random
random.seed(152)
n, p, N = 12, 0.5, 8000
m = [sum(1 for _ in range(n) if random.random() < p) for _ in range(N)]
for k in [3, 4, 5]:
print(k, round(m.count(k) / N, 3), "vs", round(m.count(n - k) / N, 3))
Ver solución
Pares ≈ iguales (ej. 0,054 vs 0,054): la simetría se ve salvo ruido Monte Carlo de ±0,01 con este N.
Ejercicio 3: costo suma vs inversión
Con n = 100 y p = 0,3, contá uniformes por muestra de cada método. La suma gasta 100; la inversión, 1.
Ver una posible respuesta
import random
random.seed(153)
n, p, N = 100, 0.3, 2000
usados_suma = n * N
masa = [(1 - p) ** n]
for k in range(n):
masa.append(masa[-1] * (n - k) / (k + 1) * p / (1 - p))
usados_inv = N
print("U por muestra suma:", usados_suma // N, "vs inv:", usados_inv // N)
m = [sum(1 for _ in range(n) if random.random() < p) for _ in range(500)]
print("media (500):", round(sum(m) / len(m), 2), "vs 30.0")
100 U contra 1 U por muestra, igual distribución. Con n = 1000 la diferencia decide el método.
09 · Síntesis
Ideas para recordar
- Bin(n,p) = suma de n Bernoulli(p): P(X=k) = C(n,k)p^k(1−p)^(n−k).
- Media np, varianza np(1−p), máxima en p = 0,5.
- Suma O(n) en uniformes; inversión O(n) en recorrido con 1 uniforme.
- Recurrencia evita factoriales que desbordan.
- Puente a geométrica (espera), Poisson (n grande, p chica) y normal (campana).
En el próximo tema dejamos n fijo y contamos eventos en el tiempo: la Poisson.