01 · Punto de partida
Todo Monte Carlo es un promedio
Probabilidades, áreas, integrales, ganancias: todas se escriben como esperanzas y todas se estiman igual, con la media muestral. Un solo estimador para todo el curso.
Su fuerza está en lo que promete: en promedio acierta (insesgado) y con N grande se clava en el valor (consistente).
- ¿Qué esperanza estoy estimando?
- ¿Qué promedio la estima?
- ¿Con qué varianza?
- ¿Cuándo deja de temblar?
02 · Definición
Tres virtudes del promedio
Insesgado
En promedio da en el blanco: E[θ̂] = θ. No subestima ni sobrestima sistemáticamente.
Varianza σ²/N
Su dispersión cae con N. Más datos, menos temblor, con regla exacta.
Consistente
Con N → ∞ se pega a θ. Es la promesa que la Ley de los Grandes Números cumple.
| θ buscado | g(Xᵢ) por réplica | θ̂ |
|---|---|---|
| P(cara) | 1/0 | caras/N |
| Media del dado | valor 1–6 | suma/N → 3,5 |
| π | 1 si dentro else 0 | 4·dentro/N |
| Integral de f | f(xᵢ) | (b−a)·promedio |
| Ganancia media | gananciaᵢ | suma/N |
03 · Propiedades
Por qué funciona, en criollo
- 1Insesgado.
Cada g(Xᵢ) apunta a θ en promedio, y el promedio de apuntadores también. Sin truco.
- 2Varianza conocida.
Var(θ̂) = σ²/N con σ² la varianza de una réplica. Se estima con la muestra.
- 3Consistente.
Varianza → 0 cuando N → ∞: el temblor muere y queda θ.
- Estimador
- Regla con datos: θ̂. El valor real θ es fijo y desconocido; el estimador tiembla alrededor.
- Sesgo
- Error sistemático: E[θ̂] − θ. El promedio muestral tiene sesgo 0; un generador malo sí sesga.
- Error estándar
- Desvío del estimador: σ/√N. Es el «±» que acompaña a todo promedio Monte Carlo.
04 · Ejemplos
Promedios que ya usaste
- 1Moneda.
θ = 0,5, σ = 0,5. Con N = 10 000, error ≈ 0,005.
- 2Dado.
θ = 3,5, σ ≈ 1,7. Con N = 1 000, error ≈ 0,05.
- 3Utilidad.
θ ≈ 50, σ ≈ 15. Con N = 900, error ≈ 0,5 $.
05 · Representación en Python
El patrón de tres líneas
Python en tu navegador. Todo estimador es sum(...) / N más su error.
import random
import statistics
N = 10000
dados = [random.randint(1, 6) for _ in range(N)]
theta = sum(dados) / N
sigma = statistics.pstdev(dados)
print("theta:", round(theta, 3))
print("error:", round(sigma / (N ** 0.5), 4))
import random
def estimar(f, N):
vals = [f() for _ in range(N)]
return sum(vals) / N
print(estimar(lambda: random.random() < 0.5, 5000))
print(estimar(lambda: random.randint(1, 6), 5000))
06 · Exploración
Laboratorio: el dado se rinde a 3,5
Cada punto es el promedio acumulado de dados. Al principio salta de 1 a 6; después se enrosca en 3,5 con banda ±2·error.
Promediar domestica el azar
θ̂ₙ = (g₁ + … + gₙ) / n
Tocá «Tirar dados» para promediar.
Línea celeste: promedio acumulado. Banda amarilla: 3,5 ± 2·error final. El promedio entra a la banda y ya no sale.
Preguntas para explorar
- Con N = 200, ¿el promedio puede dar 3,2 o 3,8?
- Con N = 15 000, ¿se sale de 3,5 ± 0,05?
- ¿Por qué el primer dado pesa más que el dado 5 000?
Ver respuestas sugeridas
- Sí: error ≈ 0,12. Es ruido, no sesgo.
- Rara vez: error ≈ 0,014. La banda lo contiene el ~95%.
- El primero aporta 1/1; el 5 000 aporta 1/5000 al promedio. El pasado amortigua.
07 · Comprensión
Confusiones frecuentes
«Promediar quita el sesgo del generador»
No: si el dado está cargado, el promedio converge al valor cargado. Insesgado vale con F correcta.
«Mediana y media dan igual»
Solo en simétricas. Para colas (ganancias, tiempos) difieren: Monte Carlo estándar usa la media.
«Un promedio con N = 30 ya es θ»
Es θ̂ con error grande. Sin ± no hay estimación.
«Si el promedio dio exacto, convergió»
Pudo ser suerte cruzando la línea. La convergencia se juzga con el error y R réplicas.
08 · Práctica guiada
Ejercicios con Python
Ejercicio 1: media y error del dado
Estimá con N = 2 000 y reportá con su error.
import random
import statistics
N = 2000
ds = [random.randint(1, 6) for _ in range(N)]
m = sum(ds) / N
print(m, statistics.pstdev(ds) / (N ** 0.5))
Ver solución razonada
~3,5 ± 0,04. El segundo número es tan importante como el primero.
Ejercicio 2: estimador genérico
Usá estimar(f, N) para π con indicadora.
import random
def estimar(f, N):
return sum(f() for _ in range(N)) / N
p = estimar(lambda: random.random()**2 + random.random()**2 <= 1, 10000)
print(4 * p)
Ver solución
~3,14. El mismo estimar sirve para moneda, dado y π: cambia f, no el patrón.
Ejercicio 3: sesgo a propósito
Simulá un dado cargado (6 con p = 0,5) y mostrá que el promedio converge… al valor cargado.
Ver una posible respuesta
import random
def dado_cargado():
return 6 if random.random() < 0.5 else random.randint(1, 5)
N = 20000
print(sum(dado_cargado() for _ in range(N)) / N)
Da ~4,5, no 3,5. El promedio es fiel a la F sorteada: si F está mal, converge mal.
09 · Síntesis
Ideas para recordar
- θ̂ = promedio de g(Xᵢ): un estimador para probabilidades, áreas, integrales y medias.
- Insesgado (apunta bien), varianza σ²/N (tiembla poco con N), consistente (llega).
- Siempre con error σ/√N: el promedio solo es la mitad del informe.
- En Python:
sum(f() for _ in range(N)) / N. - La garantía vale con F correcta e iid; si no, converge al valor equivocado.
En el próximo tema veremos la convergencia de las estimaciones: cómo leer cuándo el promedio ya se calmó.