Método de Monte Carlo · Tema 28

Muestreo estratificado

Partir para no perderse el pico: cada parte con sus muestras garantizadas.

01 · Punto de partida

El azar deja huecos donde más importa

Con f = 10 solo en [0,9, 1] y N = 100, el crudo puede no pisar el pico: estima 0. Estratificar garantiza 10 puntos en el pico y 90 fuera: el pico siempre aparece, ponderado por su ancho.

Es la técnica más noble: siempre ayuda (o empata), nunca sesga si se pondera por anchos.

  • ¿Dónde están los picos o las zonas distintas?
  • ¿En cuántos estratos parto?
  • ¿Cuántos puntos por estrato?
  • ¿Cómo pondero al agregar?

02 · Definición

Partir, muestrear, ponderar

🍰

Estrato

Una parte del dominio: [0, 0,9) y [0,9, 1]. Disjuntos que cubren todo.

🔢

Asignación

Proporcional (n_h ∝ Vol_h, simple) o Neyman (más donde hay más varianza).

⚖️

Ponderación

Î = Σ w_h·m_h. El peso es el volumen, no la cantidad de puntos.

Asignaciones para el pico [0,9, 1] con N = 100.
Esqueman en picoResultado
Crudo~10, a veces 0Tiembla o da 0
Proporcional10 garantizadosEstable, sin sesgo
Neyman (más al pico)30–50Aún mejor si el pico varía

03 · Algoritmo

Partir→Asignar→Ponderar
  1. 1
    Partir donde cambia f.

    Picos, saltos o colas en estratos propios. 4–10 estratos bastan.

  2. 2
    Asignar n_h.

    Proporcional por defecto; Neyman n_h ∝ w_h·s_h si el piloto mide s_h.

  3. 3
    Muestrear y ponderar.

    Uniforme dentro de cada estrato y Σ w_h·m_h. Varianza = Σ w_h²·s_h²/n_h.

Neyman
Más puntos donde hay más varianza: n_h ∝ w_h·s_h. Pide piloto por estrato.
Post-estratificar
Clasificar después de sortear: ayuda menos pero no cuesta nada.
Estratos vacíos
Prohibidos: cada estrato lleva ≥ 2 puntos para estimar su s_h.

04 · Ejemplos

  1. 1
    Pico 10 en [0,9, 1].

    El laboratorio: de 0 inestable a 1,00 exacto por estrato.

  2. 2
    e^(−10x).

    Primer 10% concentra casi todo: estrato fino ahí.

  3. 3
    Riesgo por segmentos.

    Clientes oro/plata/bronce: un estrato por segmento con su tasa.

05 · Representación en Python

Estratificar el pico en 12 líneas

Python en tu navegador. El crudo falla; el estratificado clava el 1.

import random

def f(x):
    return 10.0 if x >= 0.9 else 0.0

N = 200
crudo = sum(f(random.random()) for _ in range(N)) / N

n1, n2 = int(0.9*N), N - int(0.9*N)
m1 = sum(f(random.uniform(0, 0.9)) for _ in range(n1)) / n1
m2 = sum(f(random.uniform(0.9, 1)) for _ in range(n2)) / n2
est = 0.9*m1 + 0.1*m2
print("crudo:", round(crudo, 3), "estratificado:", round(est, 3), "(real 1.0)")

06 · Exploración

Laboratorio: garantizar el pico

f vale 10 solo en la franja amarilla [0,9, 1]. Grises: puntos crudos (a veces ninguno en el pico). Verdes: 10% forzado al pico. Barras: crudo vs estratificado.

EXPERIMENTO 28

Sin huecos en el pico

Î = 0,9·m₁ + 0,1·m₂

Los resultados numéricos aparecen debajo.
Crudo—
Estratificado—
Puntos en pico (crudo)—
Lectura—

Tocá «Muestrear» para comparar.

Si el crudo no pisa el pico, estima 0. El estratificado siempre pone 10% ahí: estima 1,00 con error mínimo.

Preguntas para explorar

  1. Con N = 50, ¿el crudo suele dar 0, 2 o disparate? ¿El estratificado?
  2. ¿Por qué ponderar por 0,9/0,1 y no por conteos?
  3. ¿Cuándo conviene Neyman sobre proporcional?
Ver respuestas sugeridas
  1. Crudo: 0 si falla el pico (30% de las veces). Estratificado: 1,00 siempre.
  2. Los pesos son volúmenes teóricos, no conteos ruidosos. Ponderar por conteos sesga.
  3. Cuando un estrato varía más: más n_h donde hay más s_h.

07 · Comprensión

Confusiones frecuentes

«Más estratos siempre mejor»

Cada estrato necesita ≥ 2 puntos: 50 estratos con N = 100 dejan ruido por todos lados.

«Pondero por cuántos cayeron»

No: por volúmenes w_h. Los conteos son aleatorios; los volúmenes son exactos.

«Estratificar sesga»

Solo si se pondera mal o falta un estrato. Bien ponderado es insesgado.

«Con f plana no sirve»

Empata: no ahorra pero tampoco empeora. El costo es partir, casi nulo.

08 · Práctica guiada

Ejercicios con Python

Ejercicio 1: crudo que da 0

Repetí el crudo con N = 50 cinco veces y contá los ceros.

import random

def f(x):
    return 10.0 if x >= 0.9 else 0.0

for _ in range(5):
    print(sum(f(random.random()) for _ in range(50)) / 50)
Ver solución razonada

Verás algún 0,0: P(ninguno en el pico) = 0,9⁵⁰ ≈ 0,5%. Con N = 20 sería 12%: huecos frecuentes.

Ejercicio 2: estratificado exacto

Mostrá que con f constante por estrato el error es 0.

import random

N = 100
m1 = sum(0.0 for _ in range(90)) / 90
m2 = sum(10.0 for _ in range(10)) / 10
print(0.9*m1 + 0.1*m2)
Ver solución

1,0 exacto: sin varianza dentro del estrato no hay error. El caso ideal.

Ejercicio 3: Neyman a mano

Si s₁ = 0 y s₂ = 5, ¿cómo repartirías N = 100? Justificá.

Ver una posible respuesta
w1, w2, s1, s2 = 0.9, 0.1, 0.0, 5.0
n2 = 100  # todo al que varía
print("n1 = 2 (mínimo), n2 =", 100-2)

Neyman n_h ∝ w_h·s_h: el estrato 1 no varía, con 2 puntos basta; todo al pico.

09 · Síntesis

Ideas para recordar

  • Partir en estratos, muestrear cada uno, agregar Σ w_h·m_h.
  • Garantiza muestras donde el crudo deja huecos: picos y colas.
  • Proporcional por defecto; Neyman si hay s_h distintas.
  • Ponderar por volúmenes, nunca por conteos.
  • Nunca empeora (bien hecha): la técnica más segura.

En el próximo tema compararemos todo: la comparación de métodos.