Método de Monte Carlo · Tema 25

Técnicas de reducción de varianza

Misma precisión con menos réplicas: el mapa de los cuatro atajos y cuándo conviene cada uno.

01 · Punto de partida

Menos ruido sin más N

Subir N cuesta lineal y baja 1/√N. Las técnicas de reducción atacan σ directamente: con la mitad de σ necesitás la cuarta parte de N. Cuatro ideas cubren casi todo.

Todas son insesgadas si se aplican bien: cambian la varianza, no el valor.

  • ¿Mi f es monótona, suave, con parte conocida?
  • ¿Puedo parear, corregir, estratificar o reponderar?
  • ¿Cuánto cae σ en la práctica?
  • ¿El atajo cuesta más de lo que ahorra?

02 · Definición

El mapa en cuatro

🔁

Antitéticas (26)

Parear U con 1−U: lo alto compensa lo bajo si f es monótona.

🧭

Control (27)

Corregir con una variable conocida y correlacionada: restar lo predecible.

🍰

Estratificado (28)

Partir el dominio y muestrear cada parte: sin huecos ni grumos.

Más Importance Sampling (24) para colas: el cuarteto completo se compara en el tema 29.

Cuándo usar cada una.
TécnicaCuándoAhorro típico
Antitéticasf monótona suave2–5× menos N
ControlHay C conocida correlacionada2–10× si ρ > 0,7
EstratificadoDominio partible2–4×, más en picos
ISColas raras10–100× en colas

03 · Cómo elegir

Diagnosticar→Probar→Medir
  1. 1
    Diagnosticar σ.

    ¿De dónde viene el ruido: monotonía, parte conocida, huecos o cola?

  2. 2
    Probar el atajo.

    Implementar en 10 líneas sobre el mismo piloto y comparar s.

  3. 3
    Medir el factor.

    Factor = (s_crudo/s_nuevo)² = N ahorrado. Si es < 1,5, no complicar.

Factor de ahorro
N_crudo/N_nuevo para igual error. 4× = мышца: de 20 000 a 5 000.
Costo por réplica
Si el atajo duplica el costo por muestra, el factor debe superar 2 para valer.
Combinables
Antitéticas + estratificado o control + IS se suman. Probar de a una y luego combinar.

04 · Ejemplos

Un caso por técnica

  1. 1
    e^x en [0,1].

    Monótona: antitéticas recortan ~3×.

  2. 2
    x² con control x.

    E[x] = 1/2 conocida y correlacionada: control recorta ~4×.

  3. 3
    Pico en 0,9.

    Estratificar 10 franjas evita huecos en el pico.

05 · Representación en Python

Crudo vs antitético en 10 líneas

Python en tu navegador. El mismo N, la mitad de σ.

import random
import math
import statistics

def f(x):
    return math.exp(x)

N = 5000
crudo = [f(random.random()) for _ in range(2*N)]
anti = [(f(random.random()) + f(1 - random.random())) / 2 for _ in range(N)]
# ojo: parear bien usa el mismo U:
anti = []
for _ in range(N):
    u = random.random()
    anti.append((f(u) + f(1-u)) / 2)

print("crudo s:", round(statistics.pstdev(crudo), 4))
print("anti s:", round(statistics.pstdev(anti), 4))

06 · Exploración

Laboratorio: parear achica el ±

Integramos e^x en [0,1] (exacta e−1 ≈ 1,718). Gris: crudo con 2N puntos. Verde: antitético con N pares. Igual costo, distinto ±.

EXPERIMENTO 25

El atajo se mide

factor = (s_crudo/s_anti)²

Los resultados numéricos aparecen debajo.
Crudo ±—
Antitético ±—
Factor ahorro—
Lectura—

Tocá «Comparar» para medir el ahorro.

Barras con bigotes ±2·SE y línea de la exacta. La verde es más corta: mismo costo, más precisión.

Preguntas para explorar

  1. ¿El factor ronda 2–4? ¿Cambia con N?
  2. ¿Por qué el par debe usar el mismo U?
  3. ¿Qué técnica probarías si f tuviera un pico agudo?
Ver respuestas sugeridas
  1. Sí, ~3 y estable: el factor es propiedad de f, no de N.
  2. La correlación negativa exige (U, 1−U): con U distintos son independientes y no compensan.
  3. Estratificado o IS: partir donde está el pico o muestrear ahí.

07 · Comprensión

Confusiones frecuentes

«Reducir varianza cambia el resultado»

No si es insesgada: cambia el ±, no la media. Si cambia la media, hay bug.

«Siempre conviene complicar»

Solo si el factor supera el costo extra. Factor 1,2 con doble código no paga.

«Más técnicas = mejor»

De a una y midiendo. Combinar sin medir esconde cuál aporta.

«Antitéticas sirven para todo»

Solo monótonas suaves. En picos o colas, estratificado o IS ganan.

08 · Práctica guiada

Ejercicios con Python

Ejercicio 1: medir el factor

Calculá (s_crudo/s_anti)² para e^x con N = 3 000.

import random
import math
import statistics

def f(x):
    return math.exp(x)

N = 3000
crudo = [f(random.random()) for _ in range(2*N)]
anti = []
for _ in range(N):
    u = random.random()
    anti.append((f(u) + f(1-u)) / 2)
print("factor:", round((statistics.pstdev(crudo)/statistics.pstdev(anti))**2, 2))
Ver solución razonada

~3: de 6 000 evaluaciones crudas a 3 000 pares para igual ±.

Ejercicio 2: romper el pareo

Probá antitéticas con U distintos y mirá el factor.

import random
import math
import statistics

N = 3000
mal = [(math.exp(random.random()) + math.exp(1-random.random()))/2 for _ in range(N)]
# 1-u con OTRO random: en realidad es otro U, da igual que crudo
print(round(statistics.pstdev(mal), 4))
Ver solución

Factor ~1: sin el mismo U no hay compensación. El detalle lo es todo.

Ejercicio 3: elegir técnica

Para P(Z > 3), ¿antitéticas o IS? Justificá en una línea cada una.

Ver una posible respuesta
print("Antitéticas: no, la cola no es monótona útil con 0 casos.")
print("IS N(3,1): sí, muestrea la cola y pondera.")

Elegir por diagnóstico, no por moda: colas piden IS.

09 · Síntesis

Ideas para recordar

  • Bajar σ a la mitad vale ×4 N: el ahorro se mide con (s_c/s_n)².
  • Cuatro atajos: antitéticas, control, estratificado e IS.
  • Probar sobre el piloto y quedarse si el factor paga el costo.
  • Parear exige el mismo U; ponderar exige w; partir exige cubrir.
  • Los próximos 3 temas detallan cada una.

En el próximo tema empezamos con las variables antitéticas.