Método de Monte Carlo · Tema 22

Integración en intervalos infinitos

Lo infinito se recorta o se dobla: truncar con cota de cola o mapear (0,1) al infinito.

01 · Punto de partida

No se puede sortear hasta infinito

U(a,b) con b = ∞ no existe. Hay dos salidas: truncar en [0,L] y acotar la cola que se pierde, o transformar (0,1) en (0,∞) con un cambio de variable y sortear exponenciales.

El ejemplo guía: ∫₀^∞ e^(−x) dx = 1. Cabe en la cabeza y prueba ambos caminos.

  • ¿La cola más allá de L es despreciable?
  • ¿Qué L deja sesgo menor que mi e?
  • ¿Qué cambio x = φ(u) mapea (0,1) al infinito?
  • ¿Muestreo directo de la cola en vez de truncar?

02 · Definición

Dos caminos al infinito

✂️

Truncamiento

Integrar hasta L con Monte Carlo clásico. Sesgo = cola. Fácil y auditable si la cola decae.

🔄

Transformación

x = φ(u) con φ:(0,1)→(0,∞). Sin sesgo, pero f·φ′ puede tener más varianza.

📨

Muestreo directo

Sortear de la cola (exponencial) y promediar el resto. Puente al tema 23.

Mapa (0,1) → infinito con su jacobiano.
BlancoCambio x = φ(u)Integral
(0,∞)x = −ln(1−u)∫₀¹ f(φ(u))·φ′(u) du
(0,∞)x = u/(1−u)∫₀¹ f(u/(1−u))/(1−u)² du
(−∞,∞)x = tan(π(u−1/2))Con jacobiano π·sec²

03 · Método

Elegir camino en 3 preguntas

Cola→Sesgo→Camino
  1. 1
    Medir la cola.

    Para e^(−x), cola(L) = e^(−L). Con L = 7, sesgo ≈ 0,001: despreciable.

  2. 2
    Si decae rápido, truncar.

    Elegir L con sesgo < e/2 y gastar el resto en N. Simple y robusto.

  3. 3
    Si no, transformar.

    Mapear y promediar f(φ)·φ′ en (0,1). Sin sesgo, vigilar la varianza cerca de u = 1.

Sesgo de truncamiento
Lo que falta más allá de L. Se acota analíticamente o agrandando L hasta que no se mueva.
Jacobiano φ′
El precio del doblez: estira el diferencial dx = φ′(u)du. Si explota, la varianza explota.
Cola pesada
Decae lento (1/x²): truncar pide L enorme. Mejor muestreo de la cola o importance sampling.

04 · Ejemplos

Tres infinitos domados

  1. 1
    ∫₀^∞ e^(−x) = 1.

    Truncar en L = 8 (sesgo 0,0003) o sortear exponenciales directo.

  2. 2
    Normal (−∞,∞).

    Truncar en [−5,5] (cola ~10⁻⁶) o mapear con tan.

  3. 3
    ∫₁^∞ 1/x² = 1.

    Con x = 1/(1−u): integral en (0,1) de 1. Sin truncar.

05 · Representación en Python

Truncar y transformar, lado a lado

Python en tu navegador. Ambos deben dar ~1: uno con sesgo controlado, otro sin sesgo.

import random
import math

def truncada(N, L=8):
    m = sum(math.exp(-random.uniform(0, L)) for _ in range(N)) / N
    return L * m  # sesgo = exp(-L)

def transformada(N):
    # x = -ln(1-u), dx = du/(1-u); e^-x * dx = du: integral exacta 1
    tot = 0
    for _ in range(N):
        u = random.random()
        x = -math.log(1 - u)
        tot += 1.0  # f*phi' = 1
    return tot / N

N = 20000
print("truncada:", round(truncada(N), 4), "sesgo ~", round(math.exp(-8), 5))
print("transformada:", round(transformada(N), 4))

06 · Exploración

Laboratorio: cortar la cola de e^(−x)

Mové el corte L. La zona verde es lo integrado; la gris la cola perdida e^(−L). Con L chico hay sesgo; con L grande, más varianza por el ancho.

EXPERIMENTO 22

Sesgo vs varianza

Î(L) = L·promedio en [0,L]

Los resultados numéricos aparecen debajo.
Estimada [0,L]—
Exacta [0,L]—
Cola e^(−L)—
Lectura—

Tocá «Integrar» para truncar.

Con L = 2 la cola es 0,135: sesgo enorme. Con L = 8 es 0,0003: despreciable frente al error Monte Carlo.

Preguntas para explorar

  1. Con L = 2 y N gigante, ¿la estimada llega a 1? ¿Por qué no?
  2. Con L = 10, ¿el error es sesgo o varianza?
  3. ¿Qué L elegirías para e = 0,005?
Ver respuestas sugeridas
  1. No: llega a 1 − e^(−2) ≈ 0,865. El sesgo no lo baja N.
  2. Varianza: la cola es 0,00005 y el SE con N = 8 000 es ~0,01.
  3. L = 6 (cola 0,0025 < e/2) y N para SE ≈ 0,0025.

07 · Comprensión

Confusiones frecuentes

«Uniforme hasta infinito»

No existe. O se trunca o se transforma: no hay U(0,∞).

«L grande siempre es mejor»

Baja el sesgo pero sube la varianza (ancho L). Hay L óptimo, no máximo.

«Transformar quita el error»

Quita el sesgo, no la varianza: f·φ′ puede ser más ruidosa que la original.

«La cola se ignora»

Se acota y se reporta. Ignorarla es sesgar en silencio.

08 · Práctica guiada

Ejercicios con Python

Ejercicio 1: truncar e^(−x)

Con L = 5 y N = 20 000, compará con 1 − e^(−5).

import random
import math

L, N = 5, 20000
m = sum(math.exp(-random.uniform(0, L)) for _ in range(N)) / N
print(L*m, 1-math.exp(-L))
Ver solución razonada

Ambas ~0,993. La diferencia con 1 (0,007) es la cola, no el azar.

Ejercicio 2: mapa 1/x²

Con x = 1/(1−u), mostrá que ∫₁^∞ 1/x² = promedio de 1.

import random

N = 10000
m = sum(1.0 for _ in range(N)) / N
print(m)
Ver solución

Da 1 exacto en media: el jacobiano cancela a f. El mapa perfecto existe a veces.

Ejercicio 3: elegir L

¿Qué L deja cola menor que 0,001 para e^(−x)?

Ver una posible respuesta
import math

for L in [5, 6, 7, 8]:
    print(L, round(math.exp(-L), 5))

L = 7 (0,00091). Regla: e^(−L) < e/2 para que el sesgo no domine.

09 · Síntesis

Ideas para recordar

  • Sin U(0,∞): truncar con cola acotada o transformar (0,1)→∞.
  • Truncar es simple; el sesgo es la cola e^(−L).
  • Transformar quita sesgo con jacobiano φ′; vigilar varianza.
  • Elegir L con sesgo < e/2 y N para el resto.
  • Reportar L + sesgo + N + SE: doble auditoría.

En el próximo tema sortearemos cualquier F sin rodeos: el muestreo directo.