Probabilidad y Estadística · Tema 34

Ajuste de distribuciones a datos reales

Probar qué modelo teórico encaja: comparar histograma con candidatas, medir error y elegir sin sobreajustar.

01 · Punto de partida

Que los datos elijan la curva

Ajustar es proponer 2–3 candidatas (tema 25), calibrarlas con momentos (tema 32) y quedarse con la que mejor explica el histograma sin complicarse de más. El ojo compara formas; el número compara errores; la parsimonia desempata.

Un ajuste que ignora colas fabrica riesgo barato; uno con 6 parámetros para 50 datos fabrica humo. Ajustar es decidir con evidencia, no ganar un concurso de curvas.

  • ¿Qué 2–3 candidatas propone el fenómeno?
  • ¿Cuál calca histograma, media y colas?
  • ¿El error justifica un parámetro más?
  • ¿El ajuste aguanta datos nuevos?

02 · Definición

Tres formas de comparar

👁

Visual

Histograma vs f(x), ECDF vs F(x). Detecta modas, colas y mezclas que los números promedian.

Σe²

Error

Suma de (hist − f)² por tramo. Menor error, mejor calce. Chi-cuadrado y KS lo formalizan.

−2

Parsimonia

A igual error, menos parámetros. Cada parámetro debe pagar su error con mejora clara.

Chequeo por candidata.
CandidataSe calibra conFalla si
Normalx̄, sAsimetría, límites duros, dos picos
Uniformemín, máxJoroba central, colas
Exponencial1/x̄Pico interior, simetría

03 · Pasos del ajuste

Receta de 4 pasos

Pasos 1–2

Proponer y calibrar

2–3 familias por fenómeno (tema 25) + momentos con los datos (tema 32). Sin optimización exótica.

Pasos 3–4

Comparar y validar

Histograma + error + colas. La ganadora se prueba en datos nuevos o en mitades: si no aguanta, no era.

Colas mandan
Dos ajustes con igual centro se desempatan en P(X mayor a t): la que calca la cola decide stock y SLA.
Sobreajuste
6 parámetros para 60 datos memorizan ruido. Validar en otra mitad lo delata.
Mezclas
Dos picos piden mezcla o segmentar (mañana/tarde), no forzar una campana.
Empírica
Si ninguna cierra y hay cientos de datos, remuestrear (tema 30) hasta tener teoría.

04 · Ejemplos

Ajustes que cambian modelos

Histograma→2–3 f→Gana simple
  1. 1
    Atención.

    Campana → normal. Pico en 2 con cola → gamma, no normal.

  2. 2
    Demanda.

    Plana → uniforme. Joroba → triangular/normal.

  3. 3
    Llegadas.

    Conteos con media ≈ var → Poisson. Var mayor → binomial negativa.

  4. 4
    Espera.

    Decae de 0 → exponencial. Pico interior → Erlang.

  5. 5
    Doble turno.

    Dos picos → mezcla o segmentar, jamás una sola campana.

05 · Representación en Python

Calibrar 3 y comparar errores

Python en tu navegador. El menor error gana; el empate lo gana la simple.

import random, statistics, math
random.seed(341)
xs = [random.gauss(10, 2) for _ in range(800)]

mu = statistics.mean(xs)
s = statistics.stdev(xs)
a, b = min(xs), max(xs)
m = mu - min(xs)  # para exp desplazada
print("normal:", round(mu,2), round(s,2), "| unif:", round(a,1), round(b,1), "| expmedia:", round(m,2))

Consejo: calibrar es momentos; comparar es histogramas. No mezclar pasos.

Error histograma vs f

import math
# 8 tramos 6-14, normal(10,2) vs uniforme(6,14): ¿cuál calca?
import random, statistics
random.seed(7)
xs = [random.gauss(10,2) for _ in range(2000)]
w = 1.0
def err(f):
    s = 0
    for b in range(6, 14):
        h = sum(1 for x in xs if b <= x < b+1)/(len(xs)*w)
        s += (h - f(b+0.5))**2
    return s
fn = lambda x: math.exp(-0.5*((x-10)/2)**2)/(2*math.sqrt(2*math.pi))
print("normal:", round(err(fn),4), "| unif:", round(err(lambda x: 1/8),4))

06 · Exploración

Laboratorio: torneo de 3 candidatas

Datos verdaderos a elegir: campana, plana, sesgada, bimodal. El laboratorio calibra Normal(x̄,s), Uniforme(mín,máx) y Exponencial desplazada, dibuja las 3 sobre el histograma y declara ganadora por menor Σ(hist−f)². Probá engañarlas con la bimodal.

EXPERIMENTO 34

Ajuste automático

gana menor error · empate: simple

Los resultados numéricos aparecen debajo.
Ganadora—
Err N / U / E—
Cola real P(X mayor a 12)—
n1000

Con la campana gana normal; con la plana, uniforme.

Barras = histograma en densidad 4–16. Curvas: blanca normal, lima uniforme, naranja exponencial desplazada.

Preguntas para explorar

  1. Con bimodal y n = 1000, ¿alguna gana convincente? ¿Qué harías?
  2. Con n = 80, ¿el ganador es estable al pulsar Nueva réplica?
  3. ¿Qué candidata falla siempre en sesgada? ¿Por qué?
Ver respuestas sugeridas
  1. No: las 3 fallan (errores altos). Segmentar mañana/tarde o mezcla: forzar una esconde el valle.
  2. No: con 80 el torneo salta. Ajustar con poco es sortear ganador.
  3. Uniforme (plana no decae) y normal (simétrica): la forma exige decaimiento desde el borde.

07 · Comprensión

Confusiones frecuentes

«Menor error siempre gana»

Con distinta complejidad no: un parámetro más debe pagar con mejora clara y validación. Si no, simple.

«El histograma con k cómodo»

k elegido para favorecer: el torneo se juega con k razonable fijo y se reporta. Cambiar k cambia el marcador.

«Colas no importan si el centro calca»

Importan más: stock y SLA viven en colas. Desempatar por P(X mayor a t), no por el pico.

«Ajuste una vez y para siempre»

Los fenómenos derivan: re-ajustar por ventana y versionar parámetros (temas 26 y 27).

08 · Práctica guiada

Ejercicios con Python

Ejercicio 1: torneo manual

Con 800 N(10,2), calibrá las 3 y compará errores con 14 tramos 4–16.

import random, statistics, math
random.seed(341)
xs = [random.gauss(10,2) for _ in range(800)]
mu, s, a, b = statistics.mean(xs), statistics.stdev(xs), min(xs), max(xs)
lam = 1/(mu-a)
print("mu,s,a,b,lam:", round(mu,2), round(s,2), round(a,1), round(b,1), round(lam,3))
Ver solución razonada

μ ≈ 10, s ≈ 2 calibran normal; a,b extremos calibran uniforme (sensible a atípicos); λ = 1/(μ−a) fuerza exponencial que fallará por simetría.

Ejercicio 2: colas desempatan

Con los mismos datos, compará P(X mayor a 12) real vs normal(x̄,s) vs uniforme(mín,máx).

import random, statistics
random.seed(8)
xs = [random.gauss(10,2) for _ in range(2000)]
real = sum(1 for x in xs if x > 12)/len(xs)
print("real:", round(real,3), "| normal ≈ 0.159 | unif(6,14):", (14-12)/8)
Ver solución

Real ~0,16 calca normal; uniforme da 0,25 (sobrestima). El centro empataba; la cola eligió.

Ejercicio 3: validar en mitades

Partí 1000 datos en 500/500, ajustá en una mitad y medí error en la otra. ¿Cambia el ganador?

Ver una posible respuesta
import random, statistics, math
random.seed(15)
xs = [random.gauss(10,2) for _ in range(1000)]
a, b = xs[:500], xs[500:]
mu = statistics.mean(a)
err = sum((1-0)**2 for _ in [])  # marcador: comparar medias
print("media ajusta:", round(mu,2), "| media valida:", round(statistics.mean(b),2))

Con campana el ganador aguanta; con mezclas o n chico, cambia: señal de no publicar sin validar.

09 · Síntesis

Ideas para recordar

  • 2–3 candidatas por fenómeno, calibradas por momentos.
  • Visual + Σ(hist−f)² + colas: el trío que elige.
  • Empate lo gana la simple; mezclas no se fuerzan.
  • Validar en otros datos: ajuste que no aguanta no era.
  • Informar ganadora + error + n + colas.

En el próximo tema leeremos curvas como un profesional: interpretación gráfica de distribuciones.