Validación y Análisis · Tema 12

Bondad de ajuste

¿Estos datos pueden venir de la distribución que tu modelo supone? La pregunta madre de chi-cuadrado y Kolmogorov-Smirnov, con p-valor y sin fetichismo.

01 · Punto de partida

El modelo supone; los datos confirman o incomodan

Todo generador de tu simulación supone una distribución: llegadas Poisson, tiempos exponenciales, errores normales. Si el supuesto es falso, todo lo demás (réplicas, intervalos, decisiones) se apoya en arena. La bondad de ajuste pregunta, antes de simular en serio:

  • ¿Qué distribución H0 propone el modelo?
  • ¿Qué tan lejos están los datos de lo esperado?
  • ¿Esa distancia es azar muestral o desajuste real?
  • ¿Con qué riesgo de equivocarnos decidimos?

02 · Definición

Hipótesis, distancia y p-valor

H₀

Hipótesis nula

«Las llegadas son Poisson(5)» o «el dado es justo». Es precisa y falsable; nunca se «acepta», solo se deja de rechazar.

D

Distancia

Un número que resume el desajuste: chi-cuadrado suma (O−E)²/E; K-S toma el máximo |F̂−F|. A más D, peor encaje.

p

p-valor

Probabilidad de ver una D tan grande si H0 fuera cierta. p chico = «esto sería rarísimo bajo H0» → se rechaza.

Lectura correcta del veredicto con α = 0,05.
p-valorDecisiónLectura honesta
p = 0,003Se rechaza H0Evidencia fuerte de desajuste (riesgo 5% de falsa alarma).
p = 0,42No se rechazaSin evidencia de desajuste; no prueba que H0 sea cierta.
p = 0,06No se rechazaZona gris: repetir con más n antes de dictaminar.

03 · Método

Protocolo en 5 pasos

  1. 1
    Declarar H0 y α antes de mirar.

    Ej.: «H0: llegadas ∼ Poisson(5), α = 0,05». El umbral se firma antes, no después del p.

  2. 2
    Elegir la distancia según el dato.

    Discreto por clases → chi-cuadrado (Tema 13). Continuo sin agrupar → K-S (Tema 14). Sin normalidad → no paramétricos (Temas 15–17).

  3. 3
    Calcular D con parámetros honestos.

    Si estimaste parámetros con los mismos datos, el test se vuelve conservador: hay que corregirlo o partir la muestra.

  4. 4
    Traducir D a p y comparar con α.

    p ≤ α → se rechaza. p > α → no se rechaza (nunca «se acepta»).

  5. 5
    Informar tamaño del efecto, no solo p.

    ¿Cuánto se desvía y dónde? Un p = 0,01 con desvío irrelevante no voltea una decisión; un p = 0,08 con desvío grave obliga a repetir.

H₀ + α previos→distancia D→p vs. α→efecto + n

04 · Errores y potencia

Los dos riesgos y el n que manda

Error tipo I (α)

Falsa alarma

Rechazar una H0 verdadera. Lo fijás vos (0,05): de cada 20 H0 verdaderas, una será rechazada por azar. Es el precio del juicio.

Error tipo II (β)

No ver el desajuste

No rechazar una H0 falsa por poco n. Potencia = 1−β: con n grande, hasta desvíos chicos se detectan; con n chico, solo catástrofes.

p-valor no es…
Ni P(H0 cierta), ni tamaño del efecto, ni importancia práctica. Solo rareza de D bajo H0.
Significación práctica
¿El desvío mueve la decisión? Un dado 1% cargado con n=10000 da p chico e irrelevancia total.
n manda
Con n=20 casi nada se rechaza; con n=2000 casi todo. Informá siempre D, p y n juntos.

05 · Representación en Python

Distancia y veredicto sin librerías mágicas

Antes de los tests formales (Temas 13–14), el mecanismo desnudo: distancia máxima entre proporciones observadas y esperadas.

Python en tu navegador. H0: dado justo (1/6 por cara). Cargá el dado y mirá cómo D crece.

# H0: dado justo. n=60, esperado 10 por cara.
obs = [12, 9, 11, 8, 10, 10]  # tiradas observadas
esp = [10, 10, 10, 10, 10, 10]
D = max(abs(o - e) for o, e in zip(obs, esp))
print("obs:", obs)
print("D = máx|O-E| =", D)
print("Lectura: D=2 con n=60 es compatible con azar -> no se rechaza")

Cambá obs a [20, 5, 5, 10, 10, 10]: D=10 grita desajuste sin necesidad de tablas.

El n manda: mismo desvío, distinto juicio

# Misma proporción 40/60, distinto n
for n, o1 in [(20, 8), (200, 80)]:
    p1 = o1 / n
    print(f"n={n}: p1={p1:.2f} (desvío 0.10 de 0.50)")
print("Con n=20 es azar; con n=200 es evidencia. D solo no juzga.")

06 · Exploración

Laboratorio: ¿encaja con uniforme?

H0: 6 clases equiprobables (dado justo). Mové el sesgo (carga hacia la clase 6), el n y la carga puntual. Las barras verdes son observadas; la línea blanca, lo esperado (n/6). D = máx|O−E| en conteos y p aproximado por simulación honesta.

EXPERIMENTO 12

Distancia D y rareza p

H₀: uniforme · α = 0,05

Los resultados numéricos aparecen debajo.
D = máx|O−E|0
p aprox.1,00
Clase vista0
Veredicto α=0,05No se rechaza

Sin carga y n=60, el histograma abraza lo esperado: no hay evidencia de desajuste.

Cada barra es una clase con su conteo. La clase seleccionada muestra su desvío O−E. El p se estima simulando 500 muestras uniformes con la misma n.

Preguntas para explorar

  1. Sin carga y n=60: ¿D y p? Subí a n=240 sin carga: ¿D crece o se estabiliza? ¿Y el p?
  2. Poné carga 40% con n=60: ¿qué clase se dispara y cuánto vale D? ¿El veredicto cambia?
  3. Con carga 20%: probá n=24 y n=240. ¿Mismo desvío, mismo veredicto? ¿Qué manda: el efecto o el n?
Ver respuestas sugeridas
  1. D ≈ 3–5 por azar, p ≈ 0,5: compatible. Con n=240, D absoluto crece un poco pero el relativo se achica; el p sigue alto: no hay desajuste real.
  2. La clase 6 se dispara (~+15 sobre 10): D ≈ 15, p ≈ 0,00 → se rechaza. El ojo lo ve antes que el número.
  3. Mismo efecto relativo, veredicto opuesto: con n=24 el azar lo disimula (p alto, impotencia); con n=240 lo delata (p ≈ 0). Mandan ambos: efecto + n.

07 · Comprensión

Confusiones frecuentes

«p = 0,42 prueba que H0 es cierta»

No: dice que los datos son compatibles con H0 (y con muchas otras). Probar verdad exigiría potencia infinita.

«p = 0,04 significa efecto grande»

Significa rareza, no tamaño. Con n gigante, desvíos irrelevantes dan p minúsculo. Informá D y el gráfico.

«Si no rechazo con n=15, el modelo ajusta»

Con n=15 casi nada se rechaza: es impotencia. La no-rechazo solo vale con n y potencia declaradas.

«Elijo el test después de mirar»

Elegir chi o K-S según cuál «pasa» es p-hacking. El test se elige por tipo de dato antes de calcular (Temas 13–14).

08 · Práctica guiada

Ejercicios con Python

Ejercicio 1: distancia a ojo antes del p

¿D y lectura informal con α = 0,05?

obs = [20, 5, 5, 10, 10, 10]
esp = [10]*6
D = max(abs(o-e) for o, e in zip(obs, esp))
print("D =", D, "-> desajuste evidente en clases 1-2, se rechazará")
Ver solución razonada

D = 10 sobre esperado 10 (100% de desvío en clase 1). Ningún azar razonable con n=60 produce eso: el p formal será ≈ 0 y H0 se rechaza.

Ejercicio 2: el n manda

Misma proporción, ¿qué cambia?

for n in [30, 300]:
    o = [int(0.4*n)] + [int(0.6*n/5)]*5
    print(n, o, "D rel =", round(max(abs(x-n/6) for x in o)/(n/6), 2))
Ver solución

D relativo ≈ 1,4 en ambos, pero el p con n=300 será mucho menor: mismo efecto, más evidencia. Por eso D, p y n van siempre juntos.

Ejercicio 3: no-rechazo no es prueba

Dos H0 compatibles con los mismos datos: ¿qué concluís?

Ver una posible respuesta
print("Uniforme p=0.42 y Poisson(5) p=0.31: ambas compatibles")
print("Conclusión: los datos no distinguen; pedir más n o mejor diseño")

Compatibilidad múltiple es normal con poco n. No se «acepta» ninguna: se reportan ambas y se pide el experimento que las separe.

09 · Síntesis

Ideas para recordar

  • H0 precisa + α previo + distancia D + p + efecto + n: el juicio completo, nunca solo p.
  • Se rechaza o no se rechaza; jamás se «acepta» H0.
  • p chico = rareza bajo H0, no tamaño ni importancia del efecto.
  • El n manda en la potencia: no-rechazo con poco n es impotencia.
  • El gráfico observado vs. esperado dice dónde; el p dice si es azar.

En los próximos temas formalizaremos D: chi-cuadrado para clases y Kolmogorov-Smirnov sin agrupar.