Probabilidad y Estadística · Tema 41

Replicaciones de una simulación

Cuántas corridas para confiar: piloto, error estándar y criterio de parada para pedir R sin desperdiciar cómputo.

01 · Punto de partida

R se calcula, no se adivina

¿10, 100 o 5000 corridas? La respuesta es las que pidan tu margen: con piloto de R₀ estimás s, con SE = s/√R proyectás, y parás cuando 2·SE ≤ E deseado. Pedir de menos es ruido; de más, cómputo tirado.

La regla de oro: R ≥ (2s/E)² para ±E al 95 %. Cuadruplicar afina a la mitad.

  • ¿Qué margen E necesito para decidir?
  • ¿Qué s da el piloto?
  • ¿Qué R pide (2s/E)²?
  • ¿Cuándo parar en secuencial?

02 · Definición

Piloto, SE y parada

R₀

Piloto

30–100 corridas para estimar s y orden de magnitud. Barato y orienta el R final.

s/√R

Proyección

SE cae con √R. Con s = 8 y E = 1: R ≈ (16/1)² = 256.

⏹

Parada

Seguir hasta 2·SE ≤ E o tope de cómputo. Informar R, E y s finales.

s = 8: R por margen E (95 %).
E4210,5
R16642561024

03 · Costo y estrategia

Precisión se compra cuadrática

Secuencial

Parar cuando alcanza

De a tandas (50): recalcular s y parar en E. No pagar de más cuando s sale chica.

Fijo justificado

R por fórmula

Con s conocida de pilotos previos: R directo con margen. Reproducible y presupuestable.

Piloto
R₀ = 50: s₀ orienta. Si s₀ salta, agrandar piloto antes de proyectar.
Muestras comunes
Mismas semillas A/B: comparan con menos R (tema 40 y 43).
Calentamiento
En sistemas con transitorio, descartar arranque: R mide régimen, no arranque.
Tope
Tiempo máximo: si no alcanza E, informar E logrado, no prometer.

04 · Ejemplos

R que alcanzan

Piloto s→R=(2s/E)²→Verifica
  1. 1
    Ventas.

    s = 8, E = 1 → R ≈ 256 corridas de 12 días.

  2. 2
    Espera.

    s = 2, E = 0,2 → R ≈ 400 días simulados.

  3. 3
    Conversión.

    p = 0,12, E = 0,01 → n ≈ 4000 visitas (tema 33).

  4. 4
    Juego.

    s grande pide miles de peleas para balance fino.

  5. 5
    A/B.

    Diferencia 2 con s = 8: R ≈ 250 por brazo para detectarla.

05 · Representación en Python

Piloto que pide R

Python en tu navegador. Del piloto al R final.

import random, statistics, math
random.seed(411)
tot = lambda: sum(random.uniform(6,14) for _ in range(12))
piloto = [tot() for _ in range(50)]
s = statistics.stdev(piloto)
E = 1.0
print("s:", round(s,2), "| R:", math.ceil((1.96*s/E)**2))

Consejo: con otro seed s ronda 8 y R 250: el piloto es estable para planificar.

Parada secuencial

import random, statistics
random.seed(3)
E, Rs, acc = 1.0, [], []
while True:
    acc.append(sum(random.uniform(6,14) for _ in range(12)))
    Rs.append(acc[-1])
    if len(Rs) >= 30:
        s = statistics.stdev(Rs)
        if 1.96*s/(len(Rs)**0.5) <= E or len(Rs) >= 2000:
            break
print("paró en:", len(Rs))

06 · Exploración

Laboratorio: bandas que piden R

Totales 12×U(6,14) (μ = 120, s ≈ 8). Curva = media acumulada; banda = ±2·SE(n) con s final. La línea punteada marca tu E objetivo: el R donde la banda entra en ±E es el R pedido.

EXPERIMENTO 41

Media ± 2SE(n)

R ≥ (2s/E)²

Los resultados numéricos aparecen debajo.
s piloto0,0
R pedido0
2SE final0,00
Veredicto—

Con E = 1, R ≈ 250 alcanza; con 0,5 hacen falta ~1000.

Eje x 1 a R máx (log para ver el arranque). La banda se angosta como 1/√n.

Preguntas para explorar

  1. Con E = 2, ¿qué R pide? ¿Y con E = 0,5? ¿Factor?
  2. ¿Las 3 curvas entran en la banda al final? ¿Qué significa si una escapa?
  3. Si s fuera 16, ¿R para E = 1? ¿Por qué σ manda el costo?
Ver respuestas sugeridas
  1. ~64 y ~1024: 16× por 4× precisión. Costo cuadrático.
  2. Sí, ~95 % de las veces cada una. Si escapa mucho, revisar s o seed (pero 5 % falla por diseño).
  3. ~1024: doble σ exige 4× R. Reducir σ (muestras comunes, estratificar) abarata más que comprar R.

07 · Comprensión

Confusiones frecuentes

«R fijo de manual (100) sirve»

A veces sobra, a veces falta 10×. R sale de s y E, no de costumbre.

«Piloto de 10 alcanza»

s con 10 salta: proyecta cualquier cosa. Piloto 30–100 para s estable.

«Parar al ver estabilizado a ojo»

Sesga a rachas buenas. Regla 2SE ≤ E escrita antes.

«Más R arregla sesgo»

No: afina el número equivocado. Sesgo se corrige en modelo, no con R.

08 · Práctica guiada

Ejercicios con Python

Ejercicio 1: R para E = 2 y 0,5

Con s = 8, calculá R con (1,96·s/E)². ¿Factor entre ambos?

import math
for E in [2, 0.5]:
    print(E, math.ceil((1.96*8/E)**2))
Ver solución razonada

62 y 984: 16× por 4× precisión. Así se presupuesta cómputo.

Ejercicio 2: verificar piloto

Con 3 seeds, ¿s piloto de 50 cuánto varía? ¿R pedido cuánto?

import random, statistics, math
for seed in [1,2,3]:
    random.seed(seed)
    s = statistics.stdev(sum(random.uniform(6,14) for _ in range(12)) for _ in range(50))
    # generator fix: list
    random.seed(seed)
    xs = [sum(random.uniform(6,14) for _ in range(12)) for _ in range(50)]
    s = statistics.stdev(xs)
    print(seed, round(s,2), math.ceil((1.96*s/1)**2))
Ver solución

s 7–9, R 200–300: el piloto orienta con ±30 %. Para afinar, piloto 100.

Ejercicio 3: tope de cómputo

Si el tope es R = 200 con s = 8, ¿E logrado? E = 1,96·s/√R.

Ver una posible respuesta
import math
print(round(1.96*8/math.sqrt(200),2))

E ≈ 1,11: informar «120 ± 1,1 (95 %, R = 200)». Honesto y útil aunque no llegue a 1.

09 · Síntesis

Ideas para recordar

  • R = (z·s/E)²: E manda, s cuesta.
  • Piloto 30–100 para s; secuencial con regla escrita.
  • Cuadruplicar parte el error a la mitad.
  • Muestras comunes y menos σ abaratan más que R.
  • Informar R, s, E y seed: precisión reproducible.

En el próximo tema mediremos la precisión lograda: estimación del error.