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₉₅.
| Etapa | Celdas × n | Subtotal |
|---|---|---|
| Screening | 8 × 1 000 | 8 000 |
| Refinamiento | 2 × 15 000 | 30 000 |
| Confirmación | 1 × 30 000 | 30 000 |
| Reserva | — | 12 000 |
03 · Reglas
- 1Pasar con margen.
Pasan las 2 mejores + las que empaten dentro de ±2SE. No descartar por centésimas.
- 2Gastar la reserva donde duele.
Si la final empata, la reserva paga el desempate, no un informe apurado.
- 3Confirmar 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
- 18 Q de 60 a 130.
Screening descarta 60/130; final entre 95/105 con ±2 $.
- 24 métodos de integración.
Piloto común, final con el ganador y N serio.
- 3Precio × 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.
Barato para descartar
screening n₁ → top-2 → final
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
- Con n₁ = 100, ¿el top-2 hallado es siempre el real?
- ¿Qué n₁ estabiliza el pase sin gastar de más?
- ¿Por qué guardar 15% de reserva aunque el screening salga bien?
Ver respuestas sugeridas
- No: SE ≈ 1,5 con diferencias de 5–15: se cuelan 90 o 120.
- ~400–800: SE ≈ 0,5–0,8, suficiente para descartar colas.
- 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.