01 · Punto de partida
Cuánto tarda la k-ésima llegada
¿Cuánto hasta el tercer cliente, la quinta falla, la décima llamada? Si cada espera es Exp(λ), la espera acumulada es Gamma(α,λ): α cuenta cuántas exponenciales se suman y λ mantiene la tasa.
Es la generalización continua de la Erlang y la madre de la chi-cuadrado: con α entero basta sumar, con α real hace falta un método general como Marsaglia-Tsang.
- ¿Por qué sumar α exponenciales da Gamma(α,λ)?
- ¿Qué forma toma con α < 1, α = 1 y α grande?
- ¿Cómo se escala la tasa con Y/λ?
- ¿Cuándo usar suma, Marsaglia-Tsang o librería?
02 · Definición
Forma α, tasa λ y casos famosos
Soporte [0,∞). E[X] = α/λ, Var(X) = α/λ². Con α = 1 es Exp(λ); con α entero es Erlang; con λ = 1/2 y α = ν/2 es chi-cuadrado con ν grados.
Suma exacta entera
Con α = k entero: X = Σ Exp(λ). Sin rechazo, O(k): ideal para Erlang de k chico.
α manda la forma
α < 1 ⇒ pico en 0 con cola larga; α = 1 ⇒ exponencial; α grande ⇒ campana asimétrica que tiende a normal.
Escala 1/λ
Generar con tasa 1 y dividir por λ. Un solo generador base sirve para toda tasa.
| Caso | Media α/λ | Varianza | Lectura |
|---|---|---|---|
| Gamma(1,2) | 0,50 | 0,25 | Exponencial λ = 2 |
| Gamma(3,1) | 3,00 | 3,00 | Erlang: pico en 2, cola derecha |
| Gamma(9,3) | 3,00 | 1,00 | Casi campana, misma media que Erlang |
03 · Anatomía
Suma, Marsaglia-Tsang y escala
- Suma de exponenciales O(α)
- Con α = k entero: −Σ ln(Uᵢ)/λ. Gasta k uniformes por muestra. Perfecta si k ≤ 10 y didáctica siempre.
- Marsaglia-Tsang para α ≥ 1
- Propuesta normal con d = α−1/3 y c = 1/√(9d): v = (1+cZ)³ aceptada con test logarítmico. O(1) por muestra, exacta y con colas reales.
- Boost para α < 1
- Generar G ~ Gamma(α+1,1) y devolver G·U^(1/α). Reduce el caso difícil al caso fácil con un uniforme extra.
- Escala de tasa
- Todo se genera con λ = 1 y se divide por λ al final. Validar media y varianza después de escalar, no antes.
Suma directa
Clara con α entera
La opción por defecto para Erlang chica: sin rechazo y con la intuición de esperas acumuladas.
Marsaglia-Tsang + boost
General y rápida
Cubre todo α > 0 con costo casi constante. Lo que usan las librerías por dentro.
04 · Dónde suma la gamma
De la espera al modelo
- 1Fiabilidad y colas.
Tiempo hasta la k-ésima falla o llegada: Erlang con α entera.
- 2Chi-cuadrado.
Gamma(ν/2,1/2): base de tests e intervalos de varianza. (Tema 38)
- 3Mezclas y Bayes.
Prior conjugada de Poisson y exponencial: tasas aleatorias con forma α.
- 4Puente a normal.
Con α grande, (X−α/λ)/√(α/λ²) ⇒ N(0,1): otra campana por suma.
05 · Representación en Python
Suma entera frente a gammavariate
Mismos α y λ: la suma didáctica contra random.gammavariate (general). Ambas deben calzar en media y varianza.
Python en tu navegador. Llevá α a 9 con λ = 3: la media sigue en 3 pero la varianza cae a 1.
import random
import math
random.seed(220)
alpha, lam, N = 3, 1.5, 8000
inv_lam = 1.0 / lam
def gamma_erlang(k, lam):
return -sum(math.log(1 - random.random()) for _ in range(k)) / lam
m1 = [gamma_erlang(alpha, lam) for _ in range(N)]
random.seed(220)
m2 = [random.gammavariate(alpha, inv_lam) for _ in range(N)]
def resumen(m):
media = sum(m) / N
var = sum((x - media) ** 2 for x in m) / N
return round(media, 3), round(var, 3)
print("erlang:", resumen(m1), "vs (2.0, 1.333)")
print("librería:", resumen(m2), "vs (2.0, 1.333)")
Media ≈ 2,0 y var ≈ 1,333 con α = 3 y λ = 1,5. Ojo: gammavariate pide escala θ = 1/λ, no tasa.
06 · Exploración
Laboratorio: α esculpe, λ escala
Movete α con λ y N fijos. El histograma usa 20 bines hasta el cuantil 99,5 % (cola aparte); los rombos son la probabilidad teórica por bin. Con α = 1 ves exponencial; con α = 6, campana asimétrica.
Gamma por suma y MT
X = Y/λ · Y ~ Gamma(α,1)
Con α 3, λ 1 y N 6000, media 3 y var 3.
20 bines hasta el cuantil 99,5 % más cola. Probá α = 0,5 (pico en 0) y α = 8 (campana).
Preguntas para explorar
- Con α = 3 y λ = 1, ¿media y varianza teóricas?
- Bajá α a 1. ¿Recuperás la exponencial del Tema 22? ¿Media y var?
- Duplicá λ a 2 con α = 3. ¿La media se parte a la mitad? ¿Y la varianza?
Ver respuestas sugeridas
- Media 3 y varianza 3.
- Sí: Gamma(1,λ) = Exp(λ), media 1 y var 1 con λ = 1.
- Sí: media 3/2 = 1,5 y var 3/4 = 0,75. Escalar la tasa comprime todo.
07 · Comprensión
Confusiones frecuentes
«Gamma es solo para α entera»
La suma cubre α entera (Erlang); Marsaglia-Tsang + boost cubre todo α > 0, incluido α < 1.
«Tasa y escala son lo mismo»
Se invierten: escala θ = 1/λ. gammavariate(α, θ) con θ = λ simula Gamma(α,1/λ) sin querer.
«La media alcanza para validar»
Gamma(3,1) y Gamma(9,3) comparten media 3 con varianzas 3 y 1. Validar media + varianza + forma.
«Con α grande da igual el método»
La suma gasta α uniformes por muestra: con α = 100 es 100× más cara que Marsaglia-Tsang O(1).
08 · Práctica guiada
Ejercicios con Python
Ejercicio 1: tercera llegada
α = 3, λ = 2, N = 8000 (semilla 221): estimá media (≈ 1,5) y varianza (≈ 0,75).
import random
import math
random.seed(221)
alpha, lam, N = 3, 2.0, 8000
m = [-sum(math.log(1 - random.random()) for _ in range(alpha)) / lam
for _ in range(N)]
media = sum(m) / N
print(round(media, 3), "vs 1.5")
print(round(sum((x-media)**2 for x in m)/N, 3), "vs 0.75")
Ver solución razonada
≈ 1,5 y ≈ 0,75 (típicamente 1,45–1,55). Si la media da ≈ 6, usaste escala θ = 2 en vez de tasa.
Ejercicio 2: chi-cuadrado como gamma
Generá χ² con ν = 4 como Gamma(2; 0,5) con N = 8000 y verificá media ≈ 4 y var ≈ 8.
import random
random.seed(222)
N = 8000
m = [random.gammavariate(2, 2.0) for _ in range(N)]
media = sum(m) / N
print(round(media, 3), "vs 4.0")
print(round(sum((x-media)**2 for x in m)/N, 3), "vs 8.0")
Ver solución
≈ 4,0 y ≈ 8,0. χ²(ν) = Gamma(ν/2, escala 2): aquí α = 2 y θ = 2.
Ejercicio 3: escala de tasa
Generá 3000 Gamma(4,1) y dividí por λ = 2: debe dar Gamma(4,2) con media ≈ 2.
Ver una posible respuesta
import random
random.seed(223)
alpha, lam, N = 4, 2.0, 3000
base = [random.gammavariate(alpha, 1.0) for _ in range(N)]
m = [x / lam for x in base]
media = sum(m) / N
print(round(media, 3), "vs 2.0")
print(round(sum((x-media)**2 for x in m)/N, 3), "vs 1.0")
Media ≈ 2,0 y var ≈ 1,0 = α/λ². Generar con tasa 1 y escalar alcanza para toda λ.
09 · Síntesis
Ideas para recordar
- Gamma(α,λ): media α/λ, varianza α/λ², escala Y/λ.
- α entera ⇒ suma de exponenciales O(α), exacta.
- α ≥ 1 ⇒ Marsaglia-Tsang; α < 1 ⇒ boost con U^(1/α).
- Cuidar tasa λ vs escala θ = 1/λ en cada librería.
- Contiene a exponencial, Erlang y chi-cuadrado.
En el próximo tema abrimos el catálogo: beta, Weibull, lognormal y triangular.