Método de Monte Carlo · Tema 12

Convergencia de las estimaciones

Cuándo el promedio ya se calmó y cuándo te está engañando: leer la trayectoria antes de creer.

01 · Punto de partida

Converger es calmarse, no acertar una vez

El promedio con N = 50 puede pasar por 3,5 y después irse a 3,8. Eso no es convergencia: es cruce casual. Convergencia es que la trayectoria entre a una banda y ya no salga.

Leer la curva de promedios acumulados es el diagnóstico más barato: si sigue con oleaje, falta N; si está plana, sobra.

  • ¿La curva se aplana o sigue saltando?
  • ¿Los últimos 20% se mueven menos que e?
  • ¿Varias semillas dan la misma calma?
  • ¿Paro o sigo simulando?

02 · Definición

Tres señales de calma

📈

Trayectoria

θ̂ₙ contra n: al inicio oleaje, al final cinta. Se grafica siempre en escala lineal de n.

📏

Oscilación final

Máx − mín de los últimos 20%. Si supera 2e, no convergió para tu e.

🛑

Parada

Regla: parar cuando el semi-ancho 1,96·σ/√n ≤ e durante K bloques seguidos.

Lectura rápida de trayectorias (π ≈ 3,1416).
Lo que vesDiagnósticoAcción
Saltos de ±0,3 con N = 500Oleaje inicial normalSeguir hasta 5 000–10 000
Cinta en 3,14 ± 0,02 desde n = 4 000Convergió para e = 0,02Parar y reportar
Cruza 3,14 pero se va a 3,3Cruce casual, no convergenciaNo parar en el cruce
Dos semillas dan cintas distintasSesgo o bugRevisar F y código

03 · Método

Diagnosticar en 3 pasos

Graficar→Medir→Decidir
  1. 1
    Graficar θ̂ₙ.

    Promedio acumulado cada 50–200 pasos. Más puntos no aclaran, ensucian.

  2. 2
    Medir oscilación y error.

    Rango del último 20% y semi-ancho 1,96·s/√n. Ambos deben ser < e.

  3. 3
    Decidir con regla escrita.

    «Paro si 3 bloques de 1 000 cumplen e». Sin regla, el ojo se autoengaña.

Falsa convergencia
Meseta corta que luego se rompe. Se evita exigiendo varios bloques seguidos, no uno.
Convergencia lenta
σ grande ⇒ cinta ancha. No es bug: pide más N o reducción de varianza (temas 25–28).
Escala log
Graficar error vs N en log-log debe dar recta de pendiente −1/2. Si no, algo anda mal.

04 · Ejemplos

Lo que muestran las curvas

  1. 1
    Moneda.

    Oleaje ±0,1 hasta n ≈ 500; cinta ±0,01 desde n ≈ 10 000.

  2. 2
    π.

    Cruces casuales por 3,14 con n < 1 000; cinta ±0,02 desde n ≈ 8 000.

  3. 3
    Cola pesada.

    Saltos tardíos por valores raros grandes: la cinta se rompe de golpe. Pide N enorme.

05 · Representación en Python

Medir la calma con código

Python en tu navegador. Calculá la trayectoria y la oscilación final: el ojo más la cuenta.

import random

N = 10000
acum = 0
tray = []
for i in range(1, N + 1):
    acum += 1 if random.random()**2 + random.random()**2 <= 1 else 0
    if i % 100 == 0:
        tray.append(4 * acum / i)

final = tray[-20:]
print("pi final:", round(tray[-1], 4))
print("oscilación último 20%:", round(max(final) - min(final), 4))
import random
import statistics

def chequear(f, N, e, bloque=None):
    vals = [f() for _ in range(N)]
    b = bloque or N // 5
    medias = [sum(vals[i:i+b]) / b for i in range(0, N, b)]
    ok = (max(medias[-3:]) - min(medias[-3:])) < e
    return round(sum(vals) / N, 4), "converge" if ok else "seguir"

print(chequear(lambda: random.random() < 0.5, 10000, 0.02))

06 · Exploración

Laboratorio: ¿ya se calmó π?

Elegí N y la precisión e. La curva celeste es π̂ₙ; la banda amarilla es 3,1416 ± e. Abajo medimos la oscilación del último 20%.

EXPERIMENTO 12

Del oleaje a la cinta

π̂ₙ = 4·dentroₙ / n

Los resultados numéricos aparecen debajo.
π final—
Oscilación 20%—
En banda—
Lectura—

Tocá «Estimar π» para ver la trayectoria.

Si la cola de la curva vive dentro de la banda y la oscilación es menor que e, convergió para tu precisión. Si no, falta N.

Preguntas para explorar

  1. Con N = 1 000 y e = 0,02, ¿la cola queda dentro? ¿Y con e = 0,10?
  2. ¿Por qué la misma N converge para e grande y no para e chico?
  3. Repetí dos veces con igual N: ¿la cola termina en el mismo punto?
Ver respuestas sugeridas
  1. No para 0,02 (oscilación ~0,08); sí para 0,10. La convergencia es siempre «para un e».
  2. Porque e chico exige cinta angosta. N fijo da un ancho fijo ~1/√N.
  3. No exacto: varía ±error. Si ambas colas viven en la banda, ambas convergieron aunque difieran.

07 · Comprensión

Confusiones frecuentes

«Cruzó el valor teórico: convergió»

El cruce casual es lo normal en el oleaje. Vale la cinta sostenida, no el toque.

«Plano por 500 pasos = convergencia»

Puede ser meseta falsa. Exigí varios bloques y otra semilla.

«Convergencia significa valor exacto»

Significa error menor que e. Con e = 0,05, 3,12 y 3,17 son ambos «convergidos».

«Si no converge, aumento de a 100»

De a 100 no se sale del oleaje: multiplicá por 4–10. La escala es 1/√N.

08 · Práctica guiada

Ejercicios con Python

Ejercicio 1: medir oscilación

Con π y N = 5 000, calculá el rango de los últimos 10 puntos (cada 100).

import random

N, acum, pts = 5000, 0, []
for i in range(1, N + 1):
    acum += 1 if random.random()**2 + random.random()**2 <= 1 else 0
    if i % 100 == 0:
        pts.append(4 * acum / i)
print("final:", round(pts[-1], 4))
print("oscilación últimos 10:", round(max(pts[-10:]) - min(pts[-10:]), 4))
Ver solución razonada

Oscilación ~0,05–0,10. Para e = 0,02 falta N; para e = 0,10 alcanza.

Ejercicio 2: regla de parada

Pará cuando 3 bloques de 1 000 cumplan semi-ancho ≤ 0,02 para la moneda.

import random
import math

def semi(vals):
    m = sum(vals) / len(vals)
    s = (sum((v - m) ** 2 for v in vals) / len(vals)) ** 0.5
    return 1.96 * s / math.sqrt(len(vals))

bloques, n = 0, 0
while bloques < 3:
    n += 1000
    vals = [random.random() < 0.5 for _ in range(1000)]
    bloques = bloques + 1 if semi(vals) <= 0.02 else 0
print("N total:", n)
Ver solución

Parará cerca de 3 000–5 000. La regla escrita evita parar «a ojo» en un cruce.

Ejercicio 3: dos semillas, una cinta

Corré π con semillas 1 y 2 y N = 10 000: ¿ambas colas caen en 3,14 ± 0,05?

Ver una posible respuesta
import random

def pi(N, semilla):
    random.seed(semilla)
    d = sum(1 for _ in range(N) if random.random()**2 + random.random()**2 <= 1)
    return 4 * d / N

print(pi(10000, 1), pi(10000, 2))

Casi siempre sí: difieren entre sí pero viven en la banda. Eso es convergencia práctica.

09 · Síntesis

Ideas para recordar

  • Convergencia = cola dentro de ±e, no cruce casual.
  • Se diagnostica con trayectoria + oscilación del último 20% + error.
  • La regla de parada se escribe antes: bloques seguidos cumpliendo e.
  • Convergencia es siempre «para un e»: el mismo N vale para 0,10 y no para 0,01.
  • Validar con otra semilla: dos cintas distintas = problema.

En el próximo tema veremos la teoría que lo garantiza: la Ley de los Grandes Números aplicada.