01 · Punto de partida
Cuántos llegan por intervalo
¿Cuántas llamadas entran por minuto? ¿Cuántos clientes llegan por hora? ¿Cuántos clics raros ocurren por día? Todos son Poisson(λ): conteo de eventos en un intervalo fijo cuando los eventos son independientes y con tasa media λ.
Es el límite de la Binomial del Tema 19 con n grande y p chica (λ = np), y la contracara del tiempo exponencial del Tema 22: contar eventos o medir esperas son dos vistas del mismo proceso.
- ¿Por qué multiplicar uniformes hasta cruzar e^(−λ) da Poisson?
- ¿Qué significa que media y varianza valgan lo mismo?
- ¿Cuándo Poisson aproxima a Binomial y cuándo a normal?
- ¿Qué método usar si λ = 2 y si λ = 200?
02 · Definición
Masa, equidispersión y memoria del proceso
Soporte {0,1,2,…} sin tope. F en escalera infinita. La igualdad media = varianza se llama equidispersión: es la firma para auditar el generador. Los tiempos entre eventos son Exp(λ) independientes.
Producto de Knuth
Multiplicar Uᵢ hasta que el producto caiga bajo e^(−λ). El conteo de factores de más es Poisson(λ). Exacto y sin tablas.
Interarribos Exp
Sumar −ln(U)/λ hasta superar 1 (intervalo unidad). Cada suma es una espera; contarlas es contar eventos. Misma ley, otra intuición.
Equidispersión
Media ≈ varianza ≈ λ en la muestra. Si la varianza duplica a la media, no es Poisson: hay ráfagas o sobredispersión.
| Caso | Media = Var | P(X=0) | Lectura |
|---|---|---|---|
| Poisson(1) | 1,0 | 0,368 | Ralo: muchos ceros, cola corta |
| Poisson(4) | 4,0 | 0,018 | Típico: campana asimétrica 1–8 |
| Poisson(10) | 10,0 | 0,00005 | Denso: casi simétrico, ancho √10 |
03 · Anatomía
Knuth, inversión y λ grande
- Knuth por productos O(λ)
- Fijar L = e^(−λ), multiplicar q *= U hasta q ≤ L. Gasta media λ+1 uniformes por muestra. Perfecto si λ ≤ 20.
- Inversión por CDF O(λ)
- Un U contra F(0), F(1), … con recurrencia P(k+1) = P(k)·λ/(k+1). Un uniforme por muestra, ideal con tabla precomputada y λ moderada.
- Interarribos exponenciales
- Acumular −ln(U)/λ hasta pasar 1. Matemáticamente idéntico a Knuth (producto ↔ suma de logs). Útil para simular además los instantes de llegada, no solo el conteo.
- λ grande (≥ 30)
- Knuth gasta 30+ U por muestra y e^(−λ) subfluye a 0 en doble. Pasar a normal N(λ,λ) redondeada o a rechazo PTRS (Tema 39): aproximado pero O(1).
Knuth / interarribos
Exacto y sin tablas
La opción por defecto con λ chica o media. Además enseña la conexión Poisson ↔ exponencial.
Normal o rechazo
Rápido con λ grande
Con λ ≥ 30 la campana N(λ,λ) es buena base; el rechazo la corrige. Validar media, varianza y cola.
04 · Dónde late Poisson
Del conteo al proceso
- 1Llegadas y colas.
Llamadas, clientes, paquetes por intervalo: demanda del simulador de colas.
- 2Eventos raros.
Fallas, errores, mutaciones, clics con p chica: Bin(n,p) con n grande ⇒ Poisson(np).
- 3Thinning.
Quedarse con cada evento con prob. p: Poisson(λ) ⇒ Poisson(λp) con una Bernoulli por evento. (Tema 16)
- 4Puente a exponencial.
Contar eventos en [0,1] o medir esperas Exp(λ) es el mismo proceso visto de dos lados. (Tema 22)
05 · Representación en Python
Knuth e interarribos lado a lado
Mismo λ, dos escrituras del mismo proceso: producto contra umbral, o suma de exponenciales contra 1.
Python en tu navegador. Subí λ a 10: la varianza debe seguir a la media.
import random
import math
random.seed(160)
lam, N = 4.0, 8000
L = math.exp(-lam)
def poisson_knuth(lam, L):
k, q = 0, 1.0
while True:
q *= random.random()
if q <= L:
return k
k += 1
def poisson_exparribos(lam):
t, k = 0.0, 0
while True:
t += -math.log(1 - random.random()) / lam
if t > 1.0:
return k
k += 1
m1 = [poisson_knuth(lam, L) for _ in range(N)]
m2 = [poisson_exparribos(lam) for _ in range(N)]
media1 = sum(m1) / N
var1 = sum((x - media1) ** 2 for x in m1) / N
print("knuth media:", round(media1, 3), "var:", round(var1, 3), "teo:", lam)
print("exparribos media:", round(sum(m2) / N, 3))
print("P(X=0):", round(m1.count(0) / N, 4), "vs", round(math.exp(-lam), 4))
Media ≈ 4,0, var ≈ 4,0 y P(X=0) ≈ 0,0183. Si la varianza se despega de la media, el generador no es Poisson.
06 · Exploración
Laboratorio: de ralo a denso
Movete λ con N fijo. Las barras son frecuencia 0…20 (+ cola ≥21); los rombos, e^(−λ)λ^k/k!. Con λ = 1 dominan 0–2; con λ = 10 aparece la campana ancha.
Poisson por Knuth
q *= U hasta q ≤ e^(−λ)
Con λ 4,0 y N 6000, media y varianza ≈ 4.
21 barras 0–20 más cola. Probá λ = 1 (ralo) y λ = 10 (denso casi simétrico).
Preguntas para explorar
- Con λ = 4, ¿media, varianza y P(X=0) teóricas? Leelas en el panel.
- Bajá a λ = 1. ¿P(X=0) sube a ≈ 0,368? ¿La varianza baja a 1?
- Subí a λ = 12. ¿Por qué la forma se parece a una normal?
Ver respuestas sugeridas
- Media 4, varianza 4 y P(X=0) = e^(−4) ≈ 0,0183.
- Sí: e^(−1) ≈ 0,368 y Var = 1. Casi todo cae en 0, 1 y 2.
- Por el teorema central del límite: Poisson(λ) es suma de λ Poisson(1); con λ grande la campana N(λ,λ) la aproxima.
07 · Comprensión
Confusiones frecuentes
«Poisson es Binomial con decimales»
No: Poisson cuenta 0,1,2,… sin tope n. Solo coincide como límite Bin(n,λ/n) con n grande y p = λ/n chica.
«La media alcanza para validar»
Una geométrica o una binomial pueden compartir media con otra λ. La firma Poisson es media = varianza + P(X=0) = e^(−λ).
«Knuth sirve para cualquier λ»
Solo hasta λ ≈ 20–30: el costo crece con λ y e^(−λ) subfluye. Con λ grande, normal o rechazo.
«λ puede ser negativo o conteo con tope»
λ > 0 es tasa media; el soporte es infinito. Un conteo 0…n con tope es binomial, no Poisson.
08 · Práctica guiada
Ejercicios con Python
Ejercicio 1: call center
λ = 6 llamadas/minuto, N = 6000 (semilla 161): estimá media (≈ 6), varianza (≈ 6) y P(0) (≈ 0,0025).
import random
import math
random.seed(161)
lam, N = 6.0, 6000
L = math.exp(-lam)
def poisson(lam, L):
k, q = 0, 1.0
while True:
q *= random.random()
if q <= L:
return k
k += 1
m = [poisson(lam, L) for _ in range(N)]
media = sum(m) / N
print(round(media, 3), "vs", lam)
print(round(sum((x - media) ** 2 for x in m) / N, 3), "vs", lam)
print(round(m.count(0) / N, 4), "vs", round(math.exp(-lam), 4))
Ver solución razonada
≈ 6,0, ≈ 6,0 y ≈ 0,0025 (típicamente 0,001–0,004). Con N = 6000 se esperan ~15 ceros: pocos pero visibles.
Ejercicio 2: límite binomial
Compará Bin(1000; 0,004) por suma contra Poisson(4) con 3000 réplicas: medias y P(X=0) deben coincidir.
import random
import math
random.seed(162)
n, p, lam, N = 1000, 0.004, 4.0, 3000
L = math.exp(-lam)
b = [sum(1 for _ in range(n) if random.random() < p) for _ in range(N)]
random.seed(162)
k, q = 0, 1.0
poi = []
for _ in range(N):
kk, qq = 0, 1.0
while True:
qq *= random.random()
if qq <= L:
poi.append(kk)
break
kk += 1
print(round(sum(b) / N, 3), "vs", round(sum(poi) / N, 3), "vs 4.0")
print(round(b.count(0) / N, 3), "vs", round(poi.count(0) / N, 3))
Ver solución
Ambas ≈ 4,0 y P(0) ≈ 0,018. Es la ley de los eventos raros: n grande × p chica con np fijo ⇒ Poisson.
Ejercicio 3: thinning que escala la tasa
Generá 3000 Poisson(8) y quedate con cada evento con p = 0,25: debe dar Poisson(2).
Ver una posible respuesta
import random
import math
random.seed(163)
lam, p, N = 8.0, 0.25, 3000
L = math.exp(-lam)
def poisson(lam, L):
k, q = 0, 1.0
while True:
q *= random.random()
if q <= L:
return k
k += 1
adelgazada = [sum(1 for _ in range(poisson(lam, L)) if random.random() < p)
for _ in range(N)]
media = sum(adelgazada) / N
print(round(media, 3), "vs", lam * p)
print(round(sum((x - media) ** 2 for x in adelgazada) / N, 3), "vs", lam * p)
Media y varianza ≈ 2,0. Cada evento sobrevive como Bernoulli(p): thinning de Poisson es Poisson(λp).
09 · Síntesis
Ideas para recordar
- Poisson(λ): P(X=k) = e^(−λ)λ^k/k!, media = varianza = λ.
- Knuth (productos) e interarribos Exp: exactos, O(λ), ideales con λ ≤ 20.
- Inversión con recurrencia P(k+1) = P(k)·λ/(k+1): 1 uniforme por muestra.
- Límite de Bin(n,λ/n); con λ grande ⇒ campana N(λ,λ).
- Auditar media + varianza + P(X=0) = e^(−λ).
En el próximo tema cambiamos de conteos a continuo: la uniforme continua U(a,b).