Modelos y Simulación · Tema 34

Análisis de resultados

Tablas, gráficos y lectura crítica de salidas: convertir registros en conclusiones que se sostienen.

01 · Punto de partida

De registros a lectura

En el Tema 33 cada corrida dejó su ficha: métricas + traza + estado. Ahora hay una tabla con decenas de filas y la pregunta incómoda: ¿qué dicen, en conjunto, esos números? Analizar es agregar por escenario, mostrar la variabilidad y comparar con honestidad, sin recortar lo que molesta.

El programador tiende a mirar la media ganadora y dar por terminado el partido. Pero con azar, dos medias distintas pueden ser el mismo ruido con distinto disfraz. La lectura crítica pregunta siempre por la dispersión antes de declarar un ganador.

  • ¿Cuál es el centro de cada escenario y cuánto varía?
  • ¿Qué gráfico muestra eso sin esconder nada?
  • ¿La diferencia entre escenarios supera al ruido?
  • ¿La conclusión sobrevive si cambio la semilla?

02 · Vocabulario mínimo

Agregación, variabilidad y comparación

∑

Agregación

Resumir las réplicas de un escenario: media, mediana, mínimo y máximo de la respuesta.

±

Variabilidad

Cuánto bailan las réplicas: desvío y error de la media, que se achica con más réplicas.

⇄

Comparación

Diferencia entre escenarios leída contra su ruido: efecto grande con poco ruido convence.

Qué mostrar según la pregunta.
PreguntaTablaGráfico honesto
¿Cómo evoluciona en el tiempo?Serie por pasoLínea con zona de warm-up marcada
¿Cuánto varía entre réplicas?Media ± desvío por escenarioPuntos de réplicas + media
¿A supera a B?Diferencia de medias con errorBarras con barras de error
¿Ya converge?Media acumulada por nCurva que se estabiliza (Tema 32)

03 · Tres operaciones

Agregar, mostrar, comparar

  1. 1
    Agregar.

    Por escenario: n, media, desvío y error (2·desvío/√n). Nunca una media sin su n.

  2. 2
    Mostrar.

    Puntos de réplicas más media con error. El gráfico que oculta los puntos oculta la evidencia.

  3. 3
    Comparar.

    Diferencia de medias contra su error combinado. Si los intervalos se solapan mucho, no hay ganador todavía.

Solo medias

Rápido y engañoso

«7,9 contra 6,8: gana B». Sin dispersión ni n, nadie sabe si es efecto o suerte de pocas réplicas.

Medias con dispersión

Más lento y honesto

«7,9 ± 1,2 contra 6,8 ± 1,1 con n = 20». El solapamiento avisa cuándo pedir más réplicas.

Media
Centro de las réplicas de un escenario.
Desvío
Dispersión típica entre réplicas.
Error de la media
Incertidumbre del centro: cae como 1/√n al replicar.
Efecto
Diferencia de medias entre escenarios.

04 · Protocolo

La lectura en cinco pasos

Agregar→Mostrar→Comparar→Chequear→Concluir

Chequear es repetir la lectura con otra semilla y sin outliers: si la conclusión cambia, no era conclusión. Solo lo que sobrevive al chequeo se escribe como hallazgo. El Tema 35 verificará el programa; el Tema 36, el modelo contra la realidad.

05 · En Python

Agregar por escenario con stdlib

La tabla del Tema 33 se resume por escenario con medias y desvíos. Sin librerías externas: sumas, conteos y statistics:

Python en tu navegador. Agregar y comparar son diccionarios y aritmética.

import statistics

tabla = [
    {"escenario": "A", "media": 8.1},
    {"escenario": "A", "media": 7.7},
    {"escenario": "B", "media": 6.9},
    {"escenario": "B", "media": 6.7},
]

def resumir(filas):
    xs = [f["media"] for f in filas]
    m = statistics.mean(xs)
    sd = statistics.pstdev(xs) if len(xs) > 1 else 0.0
    return {"n": len(xs), "media": m, "sd": sd,
            "err": 2 * sd / (len(xs) ** 0.5) if xs else 0.0}


print("A:", resumir([f for f in tabla if f["escenario"] == "A"]))
print("B:", resumir([f for f in tabla if f["escenario"] == "B"]))

Comparar dos escenarios

El efecto es la diferencia de medias; su referencia es el error combinado. Si el efecto es chico frente al error, faltan réplicas:

def comparar(ra, rb):
    efecto = ra["media"] - rb["media"]
    ref = (ra["err"] ** 2 + rb["err"] ** 2) ** 0.5
    veredicto = "se distinguen" if abs(efecto) > ref else "se solapan: pedir más réplicas"
    return {"efecto": efecto, "ref": ref, "veredicto": veredicto}


ra = {"media": 7.9, "err": 0.6}
rb = {"media": 6.8, "err": 0.6}
print(comparar(ra, rb))

06 · Exploración

Laboratorio: ¿gana B o es ruido?

Dos escenarios del mismo banco: A con 1 cajero y B con 2 (mejora real ajustable). Cada punto es una réplica; las barras muestran media ± error. Achicá el error con más réplicas y decidí cuándo la ventaja es creíble.

EXPERIMENTO 34

A contra B

efecto contra ruido

Los resultados numéricos aparecen debajo.
Media A0
Media B0
Efecto A−B0
LecturaSe solapan

Con 10 réplicas, el efecto se distingue del ruido.

Nubes de puntos: réplicas de cada escenario. Barras: media más menos error. Si las barras se solapan mucho, el ganador no está probado.

Preguntas para explorar

  1. Con mejora en 0 y pocas réplicas, ¿alguna semilla muestra un «ganador» falso? ¿Qué lo delata?
  2. Con mejora en 1,5, subí de 4 a 25 réplicas. ¿Cuándo dejan de solaparse las barras?
  3. ¿Por qué el laboratorio pide media, error y n juntos, y no solo las medias?
Ver respuestas sugeridas
  1. Sí: con mejora 0 cualquier diferencia es ruido. Lo delata el error grande frente al efecto y que otra semilla invierte el «ganador».
  2. Las barras se separan al crecer n porque el error cae como 1/√n mientras el efecto real se mantiene.
  3. Porque la media sin error ni n no dice si la diferencia es efecto o suerte: el trío es la unidad mínima de honestidad.

07 · Comprensión

Confusiones frecuentes

«La media lo dice todo»

La media sin dispersión ni n es muda: 7,9 contra 6,8 puede ser efecto real o ruido con n = 3.

«Barras separadas es prueba final»

Es indicio, no prueba formal: confirma con más réplicas y otra semilla antes de decidir.

«Un gráfico lindo valida»

El gráfico comunica; no valida. La validez del modelo se discute en los Temas 35 y 36, no en el diseño gráfico.

«El outlier se borra»

Solo con motivo registrado (fallo, corte, bug) y mostrando el antes y el después. Borrar por fealdad es fraguar.

08 · Práctica guiada

Ejercicios con Python

Ejercicio 1: resumir un escenario

Resumí 4 réplicas de un escenario: informá n, media y desvío.

import statistics

xs = [8.1, 7.7, 8.3, 7.9]
print("n:", len(xs))
print("media:", round(statistics.mean(xs), 2))
print("sd:", round(statistics.pstdev(xs), 2))
Ver solución razonada

Da n: 4, media: 8.0 y sd: 0.22: el centro más su dispersión, siempre juntos.

Ejercicio 2: calcular el error

Con desvío 1,2 y n = 4, 16 y 36, ¿cómo cae el error de la media?

sd = 1.2
for n in [4, 16, 36]:
    print(n, round(2 * sd / (n ** 0.5), 2))
Ver solución

Da 1.2, 0.6 y 0.4: cuadruplicar n parte el error a la mitad. Rendimientos decrecientes, pero seguros.

Ejercicio 3: decidir si pedir más réplicas

Con efecto 0,5 y referencia 0,9, ¿hay ganador o faltan réplicas?

Ver una posible respuesta
efecto, ref = 0.5, 0.9
print("se distinguen" if abs(efecto) > ref else "se solapan: pedir más réplicas")

Imprime se solapan: pedir más réplicas: el efecto cabe dentro del ruido y declarar ganador sería apresurado.

09 · Síntesis

Ideas para recordar

  • Analizar es agregar por escenario, mostrar dispersión y comparar contra el ruido.
  • Ninguna media viaja sola: siempre con error y n.
  • El gráfico honesto muestra los puntos, no solo las barras.
  • El solapamiento pide más réplicas, no conclusiones.
  • En Python: statistics para resumir y diferencia de medias contra error combinado.

En el próximo tema auditaremos el programa mismo: la verificación.