Probabilidad y Estadística · Tema 25

Selección de una distribución para un modelo

Elegir el azar correcto según el fenómeno: mapa de decisión, preguntas que filtran y verificación con datos y colas.

01 · Punto de partida

El azar se elige, no se adivina

Ya conocés 8 familias (temas 17 a 24). Ahora la pregunta es cuál usar para cada variable del simulador. La respuesta sale del fenómeno, no del gusto: ¿es sí/no, conteo con n, conteo en tiempo, espera o medida? Tres preguntas filtran el 90 % de los casos; los datos confirman (tema 34).

Elegir mal es caro: normal para esperas genera tiempos negativos; exponencial para medidas simétricas esconde el centro; Poisson con picos subestima refuerzos.

  • ¿La variable cuenta, mide o marca sí/no?
  • ¿Hay n fijo, ventana de tiempo o etapas?
  • ¿La tasa es pareja o hay picos/dependencia?
  • ¿Los datos sostienen la forma elegida?

02 · Definición

Mapa de decisión en 4 preguntas

0/1

¿Sí/no?

Un intento → Bernoulli. n intentos → Binomial. Hasta el primero → Geométrica.

#/t

¿Conteo?

n fijo → Binomial. Ventana de tiempo → Poisson. Sin n ni ventana clara → revisar.

⏱/📏

¿Tiempo o medida?

Espera 1 etapa → Exponencial. Varias etapas → Gamma. Medida simétrica → Normal. Solo rango → Uniforme.

Fenómeno → candidata inicial.
FenómenoCandidataParámetro clave
Compra por visitaBernoulli/Binomialp = tasa
Llegadas/horaPoissonλ = tasa
Espera entre llegadasExponencialλ igual tasa
Atención en 3 pasosGamma/Erlangk = 3, λ por paso
Medida con centroNormalμ, σ
Solo min–maxUniformea, b

03 · Filtros que descartan

Preguntas que eliminan candidatas

Filtros duros

Descartan de una

¿Negativos imposibles? Fuera normal sin truncar. ¿Picos horarios? Fuera tasa única. ¿p que cambia? Fuera binomial simple.

Filtros blandos

Piden datos

¿Simétrica o sesgada? ¿Colas largas? ¿Moda interior o en 0? El histograma (tema 29) responde.

Soporte
[0,∞) descarta normal pura; {0,1} descarta conteos; n fijo descarta Poisson.
Tasa
Picos piden tramos o mixtas; tasa pareja sostiene Poisson/Exp.
Etapas
1 etapa Exp; k etapas Gamma; paralelas otra (mínimos/máximos).
Parsimonia
Entre dos que ajustan, la más simple (menos parámetros) gana hasta tener más datos.

04 · Ejemplos

Cinco decisiones típicas

Fenómeno→Candidata→Verifica
  1. 1
    Conversión.

    Sí/no por visita → Bernoulli(p), conteo diario → Binomial. Verificar p estable.

  2. 2
    Llegadas.

    8/hora parejas → Poisson(8). Con pico, λ por hora.

  3. 3
    Espera.

    Entre llegadas con tasa pareja → Exp(8/hora). Media 7,5 min.

  4. 4
    Servicio 3 pasos.

    Gamma/Erlang k = 3. Más regular que exponencial simple.

  5. 5
    Medida.

    Peso 100 ± 2 g simétrico → Normal. Tiempo con mínimo → no normal.

05 · Representación en Python

Función que elige y genera

Python en tu navegador. El mapa hecho código: cada rama un generador.

import random

def generar(familia, **p):
    if familia == "bernoulli":
        return 1 if random.random() < p["p"] else 0
    if familia == "binomial":
        return sum(random.random() < p["p"] for _ in range(p["n"]))
    if familia == "poisson_knuth":
        import math
        L, k, q = math.exp(-p["lam"]), 0, 1.0
        while True:
            k += 1; q *= random.random()
            if q <= L: return k-1
    if familia == "exp":
        return random.expovariate(p["lam"])
    if familia == "normal":
        return random.gauss(p["mu"], p["sigma"])
    if familia == "uniforme":
        return random.uniform(p["a"], p["b"])

random.seed(251)
print("venta:", generar("bernoulli", p=0.12))
print("llegadas:", generar("poisson_knuth", lam=8))
print("espera:", round(generar("exp", lam=8), 3))

Consejo: esta función es tu catálogo: cada variable del simulador llama con su familia y parámetros declarados.

Chequeo rápido de candidata

import random, statistics
random.seed(4)
# ¿Exp(0.5) para esperas? media debe ≈ s ≈ 2
xs = [random.expovariate(0.5) for _ in range(3000)]
print(round(statistics.mean(xs), 2), round(statistics.stdev(xs), 2))

06 · Exploración

Laboratorio: catálogo vivo

Elegí el fenómeno: el laboratorio propone familia, parámetros y genera N valores con su histograma + curva exacta. Compará formas y colas antes de decidir en tu modelo.

EXPERIMENTO 25

Fenómeno → distribución

catálogo: Bern · Bin · Pois · Exp · Norm

Los resultados numéricos aparecen debajo.
Propuesta—
Media sim (teo)—
Cola guía sim—
Por qué—

Cada fenómeno trae su familia natural.

El deslizador «Ajuste» mueve el parámetro clave: p, λ, μ o σ según el fenómeno. La curva blanca es la exacta.

Preguntas para explorar

  1. En llegadas, subí λ al máximo. ¿La forma se vuelve campana? ¿Por qué?
  2. En espera, bajá λ al mínimo. ¿Qué pasa con la cola?
  3. ¿Qué fenómeno NO admite normal sin truncar? ¿Por qué?
Ver respuestas sugeridas
  1. Sí: Poisson grande se simetriza (puente a normal, tema 23). Tasa alta estabiliza relativamente.
  2. Se alarga muchísimo: tasa baja = esperas larguísimas probables. Dimensionar con colas, no con media.
  3. Espera y reintentos (≥ 0 con pico en 0/chico): la campana simétrica generaría negativos y escondería la asimetría.

07 · Comprensión

Confusiones frecuentes

«Cualquiera sirve si calibro parámetros»

No: forma equivocada con parámetros óptimos sigue equivocada en colas. Primero familia, después números.

«Normal para todo continuo»

Solo medidas simétricas sin límites duros. Tiempos y conteos piden sus familias.

«Poisson con picos promediados»

Promediar picos esconde el refuerzo necesario. Partir en tramos con λ propio.

«Elegir es definitivo»

Es hipótesis inicial: se verifica con histograma y colas (tema 34) y se cambia si no cierra.

08 · Práctica guiada

Ejercicios con Python

Ejercicio 1: clasificar 5 variables

Compra por visita, llegadas/hora, espera, peso de pieza, intentos hasta cierre. Asigná familia y justificá en una línea.

mapa = {
 "compra": "Bernoulli(p): sí/no por visita",
 "llegadas": "Poisson(lam): conteo por hora, tasa pareja",
 "espera": "Exp(lam): tiempo entre llegadas",
 "peso": "Normal(mu,sigma): medida simétrica",
 "cierre": "Geom(p): intentos hasta primero",
}
for k, v in mapa.items():
    print(k, "→", v)
Ver solución razonada

El mapa del laboratorio en 5 líneas. Cada justificación menciona soporte/tasa/forma: así se audita.

Ejercicio 2: descartar por soporte

Tiempo de atención ≥ 0 con media 5 y s = 5. ¿Normal N(5,5)? ¿Exponencial Exp(0,2)? ¿Por qué?

# Normal generaría ~16% negativos; Exp tiene E=s=5. Candidata: Exp.
print("P(X<0|N(5,5)) ≈ 0.16 → descarta normal sin truncar")
Ver solución

Exponencial: soporte correcto y firma E = s. Normal pura fabricaría tiempos negativos.

Ejercicio 3: documentar elección

Escribí el bloque de parámetros de tu simulador con familia + motivo para demanda, llegadas y atención.

Ver una posible respuesta
modelo = {
 "demanda": ("uniforme", {"a": 6, "b": 14}, "solo rango confiable"),
 "llegadas": ("poisson", {"lam": 8}, "tasa pareja 8/h"),
 "atencion": ("exponencial", {"lam": 12}, "1 etapa, sin memoria"),
}
print(modelo)

Familia + parámetros + motivo: el contrato mínimo de cada variable aleatoria del modelo.

09 · Síntesis

Ideas para recordar

  • Sí/no → Bernoulli/Binomial/Geométrica; conteo-tiempo → Poisson; espera → Exp/Gamma; medida → Normal; rango → Uniforme.
  • Soporte, tasa y etapas descartan más rápido que los datos.
  • Parsimonia: la más simple que cierra gana hasta tener más datos.
  • La elección es hipótesis: se verifica con histograma y colas (tema 34).
  • Documentá familia + parámetros + motivo por variable.

En el próximo tema calibraremos números: parámetros de una distribución.