Método de Monte Carlo · Tema 32

Planteo estratégico de experimentos

Qué preguntar primero y dónde gastar: embudo en 3 etapas del descarte a la confirmación.

01 · Punto de partida

Primero descartar, después afinar

Con 8 precios posibles y presupuesto para 80 000 evals, repartir 10 000 a cada uno es torpe. Mejor: screening barato para descartar 6, refinamiento caro en los 2 finalistas y confirmación del ganador. La estrategia gasta donde decide.

Estratégico = qué etapas, con qué N cada una y con qué regla se pasa a la siguiente.

  • ¿Cuántas políticas entran al embudo?
  • ¿Qué N barato descarta sin riesgo?
  • ¿Con qué regla pasan 2 a la final?
  • ¿Qué N confirma al ganador?

02 · Definición

Tres etapas, tres presupuestos

🔍

Screening

8 políticas × 1 000: ranking grueso ±10. Descarta lo malo, no elige lo mejor.

🔬

Refinamiento

2 finalistas × 15 000: ±2. Desempata con IC que no se toquen.

✅

Confirmación

Ganador × 30 000 con otra semilla: informe final con IC₉₅.

Embudo ejemplo con 80 000 evals.
EtapaCeldas × nSubtotal
Screening8 × 1 0008 000
Refinamiento2 × 15 00030 000
Confirmación1 × 30 00030 000
Reserva—12 000

03 · Reglas

8 baratas→2 caras→1 final
  1. 1
    Pasar con margen.

    Pasan las 2 mejores + las que empaten dentro de ±2SE. No descartar por centésimas.

  2. 2
    Gastar la reserva donde duele.

    Si la final empata, la reserva paga el desempate, no un informe apurado.

  3. 3
    Confirmar con semilla nueva.

    El ganador se re-corre solo y grande: sin reutilizar la suerte que lo hizo ganar.

Reserva 15%
Presupuesto sin asignar para sorpresas: empates, σ mayor que el piloto, bug que obliga a repetir.
Criterio de pase
Regla escrita antes: «pasan top-2 + empates a 1SE». Sin regla, el embudo es favoritismo.
Secuencial
Cada etapa usa lo aprendido: σ reales, ranking real. Diseñar todo de entrada es ciego.

04 · Ejemplos

  1. 1
    8 Q de 60 a 130.

    Screening descarta 60/130; final entre 95/105 con ±2 $.

  2. 2
    4 métodos de integración.

    Piloto común, final con el ganador y N serio.

  3. 3
    Precio × publicidad.

    Grilla 3×3 barata, luego 2×2 fina en la esquina ganadora.

05 · Representación en Python

Embudo que se ejecuta solo

Python en tu navegador. Screening, corte y final con semillas comunes.

import random

verdaderas = {60: 200, 80: 250, 90: 280, 100: 295, 110: 290, 120: 270, 130: 240, 140: 200}

def medir(Q, n, s):
    random.seed(s)
    return sum(random.gauss(verdaderas[Q], 15) for _ in range(n)) / n

Qs = list(verdaderas)
screen = {Q: medir(Q, 300, 7) for Q in Qs}
top2 = sorted(screen, key=screen.get, reverse=True)[:2]
print("screening:", {Q: round(screen[Q], 1) for Q in Qs})
print("finalistas:", top2)
final = {Q: sum(medir(Q, 3000, s) for s in [11, 22]) / 2 for Q in top2}
print("final:", {Q: round(final[Q], 1) for Q in top2})

06 · Exploración

Laboratorio: el embudo 8 → 2

Ocho Q con screening de n₁ cada una (puntos con bigotes). Las dos verdes pasan a la final. Mové n₁ y mirá si el top-2 real sobrevive al descarte.

EXPERIMENTO 32

Barato para descartar

screening n₁ → top-2 → final

Los resultados numéricos aparecen debajo.
Top-2 real100, 110
Top-2 hallado—
Acierto—
Lectura—

Tocá «Screening» para descartar.

Verdaderas: pico en 100–110. Con n₁ = 100 el ruido mete colados; con n₁ = 1 500 el top-2 es estable.

Preguntas para explorar

  1. Con n₁ = 100, ¿el top-2 hallado es siempre el real?
  2. ¿Qué n₁ estabiliza el pase sin gastar de más?
  3. ¿Por qué guardar 15% de reserva aunque el screening salga bien?
Ver respuestas sugeridas
  1. No: SE ≈ 1,5 con diferencias de 5–15: se cuelan 90 o 120.
  2. ~400–800: SE ≈ 0,5–0,8, suficiente para descartar colas.
  3. La final puede empatar o σ salir mayor: la reserva paga el desempate.

07 · Comprensión

Confusiones frecuentes

«Reparto parejo es justo»

Es injusto con la decisión: lo parejo gasta en colas ya descartadas.

«Screening elige al ganador»

Descarta perdedores. Elegir pide la final con ± chico y otra semilla.

«Sin reserva, más N útil»

Sin reserva, un empate te deja sin balas. 15% de aire es barato.

«Confirmar con la misma suerte»

Reutilizar la semilla ganadora infla al ganador (maldición del ganador). Semilla nueva.

08 · Práctica guiada

Ejercicios con Python

Ejercicio 1: screening barato

Rankeá 8 Q con n₁ = 300 y una semilla.

import random

verd = {60: 200, 80: 250, 90: 280, 100: 295, 110: 290, 120: 270, 130: 240, 140: 200}
random.seed(7)
print(sorted(verd, key=lambda Q: sum(random.gauss(verd[Q], 15) for _ in range(300))/300, reverse=True)[:3])
Ver solución razonada

Top ~[100, 110, 90]: el pico sobrevive aunque el orden baile. Para descartar alcanza.

Ejercicio 2: regla de pase

Pasá top-2 + empates a 1SE con n₁ = 500.

import random
import statistics

verd = {60: 200, 80: 250, 90: 280, 100: 295, 110: 290, 120: 270, 130: 240, 140: 200}
random.seed(11)
meds = {Q: sum(random.gauss(verd[Q], 15) for _ in range(500))/500 for Q in verd}
top = sorted(meds, key=meds.get, reverse=True)
se = 15/(500**0.5)
pasan = [Q for Q in top if meds[Q] >= meds[top[1]] - se]
print(pasan)
Ver solución

Pasan 2–3: los del pico más algún empate. No descartar por centésimas.

Ejercicio 3: presupuesto total

Calculá total 8·400 + 2·8000 + 20000 con reserva incluida.

Ver una posible respuesta
total = 8*400 + 2*8000 + 20000
print(total, "reserva:", int(total*0.15), "gran total:", int(total*1.15))

~39 200 + 15% ≈ 45 000. Presupuestar con aire desde el día 1.

09 · Síntesis

Ideas para recordar

  • Embudo 8 → 2 → 1: barato para descartar, caro para desempatar.
  • Pasar top-2 + empates a 1SE, no solo top-2 seco.
  • Reserva 15% para empates y σ sorpresa.
  • Confirmar al ganador con semilla nueva y N grande.
  • Cada etapa con su N justificado por e de esa etapa.

En el próximo tema mediremos qué mueve la aguja: el análisis de sensibilidad.