01 · Punto de partida
Por qué todo error parece campana
¿Errores de medición? ¿Alturas, notas, ruidos? Cuando muchas causas chicas e independientes se suman, el resultado es N(μ,σ²): la campana de Gauss. Es el destino del teorema central del límite y el ruido por defecto del simulador.
Generarla es distinto a todo lo anterior: su CDF no tiene inversa cerrada, así que la suma de 12 uniformes la aproxima y Box-Muller (Tema 24) la produce exacta.
- ¿Por qué basta generar Z ~ N(0,1) y luego μ + σZ?
- ¿Qué dicen 68-95-99,7 y cómo auditan el generador?
- ¿Por qué la inversa directa no es el camino?
- ¿Cuándo la suma de 12 uniformes alcanza y cuándo no?
02 · Definición
Campana, tipificación y regla 68-95-99,7
Soporte (−∞,∞), simétrica en μ. Tipificar Z = (X−μ)/σ lleva cualquier normal a N(0,1). P(|Z| ≤ 1) ≈ 0,683, P(|Z| ≤ 2) ≈ 0,954, P(|Z| ≤ 3) ≈ 0,997.
Ubicación-escala
μ traslada, σ ensancha. Generar la estándar y transformar es exacto: no hace falta un método por cada (μ,σ).
Suma que acampana
Promediar o sumar independientes converge a la campana (TCL). Sumar 12 U(0,1) y restar 6 aproxima N(0,1) con media 0 y var 1.
Huella digital
Las tres bandas son el test visual: si P(|Z|≤1) da 0,5 o 0,9 con N grande, el generador no es normal.
| Caso | Media | Desvío σ | P(X en μ±σ) |
|---|---|---|---|
| N(0,1) | 0,0 | 1,0 | ≈ 0,683 |
| N(10,2) | 10,0 | 2,0 | ≈ 0,683 en [8,12] |
| N(−3; 0,5) | −3,0 | 0,5 | ≈ 0,683 en [−3,5;−2,5] |
03 · Anatomía
Suma aproximada, Box-Muller exacta
- Suma de 12 uniformes O(12)
- Z ≈ Σ₁₂Uᵢ − 6: media 0 y var 1 exactas, forma casi campana. Gasta 12 U por muestra y trunca la cola en ±6: útil para enseñar, no para colas.
- Box-Muller exacta O(1)
- Dos U producen dos N(0,1) con log, raíz y giro (Tema 24). Exacta hasta la cola: la opción por defecto en producción.
- Polar sin trigonometría
- Variante de Box-Muller que evita senos y cosenos con rechazo en el disco (Tema 25). Misma exactitud, mejor costo.
- Colas que importan
- La suma-12 nunca pasa de ±6 (P real ≈ 2e−9, despreciable salvo riesgo extremo). Para 3σ+ o Value-at-Risk, método exacto sí o sí.
Métodos exactos
Box-Muller y polar
Reproducen campana y colas con 1–2 U por normal. Los desarrollamos en los Temas 24 y 25.
Suma de uniformes
Aproximada y didáctica
Muestra el TCL en acción, pero recorta colas y gasta 12 U. Nunca para validar colas 3σ.
04 · Dónde suena la campana
Del error al modelo
- 1Errores y medidas.
Ruido de sensores, errores de medición, variaciones naturales alrededor de μ.
- 2Finanzas y riesgo.
Retornos, VaR y bandas 2σ–3σ: aquí las colas exactas sí importan.
- 3Puente al muestreo.
Base de normales multivariadas, correlacionadas y de procesos (Temas 28–29).
- 4Puente al límite.
Binomial y Poisson con parámetros grandes ⇒ campana. (Temas 19, 20)
05 · Representación en Python
Suma-12 frente a gauss exacto
Mismos μ y σ: la aproximación didáctica contra random.gauss (exacto). Ambas deben calzar en media, desvío y banda 68 %.
Python en tu navegador. Llevá σ a 2 con μ = 10: la banda [8,12] debe rondar 0,683.
import random
random.seed(190)
mu, sigma, N = 0.0, 1.0, 8000
def normal_suma12(mu, sigma):
z = sum(random.random() for _ in range(12)) - 6.0
return mu + sigma * z
m1 = [normal_suma12(mu, sigma) for _ in range(N)]
random.seed(190)
m2 = [random.gauss(mu, sigma) for _ in range(N)]
def resumen(m):
media = sum(m) / N
var = sum((x - media) ** 2 for x in m) / N
banda = sum(1 for x in m if abs(x - mu) <= sigma) / N
return round(media, 3), round(var ** 0.5, 3), round(banda, 3)
print("suma12:", resumen(m1), "vs (0.0, 1.0, 0.683)")
print("gauss: ", resumen(m2), "vs (0.0, 1.0, 0.683)")
Ambas rondan media 0, desvío 1 y banda 0,683. La diferencia aparece en la cola ±4σ: suma-12 jamás llega.
06 · Exploración
Laboratorio: campana que se muda y se ensancha
Movete μ y σ con N fijo. El histograma usa 25 bines en μ ± 4σ; los rombos son la probabilidad teórica por bin. La curva se traslada con μ y se achata con σ.
Campana N(μ,σ)
X = μ + σ·Z, Z ~ N(0,1)
Con μ 0, σ 1 y N 6000, banda ≈ 0,683.
25 bines en μ ± 4σ. Probá σ = 2,5 (chata) y μ = 3 (trasladada).
Preguntas para explorar
- Con μ = 0 y σ = 1, ¿media, desvío y banda teóricas?
- Duplicá σ a 2. ¿La campana se achata a la mitad de altura? ¿La banda sigue en 0,683?
- Mové μ a 3 con σ = 1. ¿Cambia la forma o solo la ubicación?
Ver respuestas sugeridas
- Media 0, desvío 1 y banda 0,683.
- Sí: la altura central cae como 1/σ y el ancho crece como σ; la banda tipificada no depende de σ.
- Solo la ubicación: N(3,1) es N(0,1) trasladada, misma forma y misma banda.
07 · Comprensión
Confusiones frecuentes
«Normal es lo mismo que uniforme reescalada»
No: la planicie reparte parejo, la campana concentra 68 % en ±σ. La banda μ±σ las distingue sin piedad.
«La suma-12 es exacta»
Es aproximada y trunca en ±6. Para colas 3σ+ o riesgo, Box-Muller o polar (Temas 24–25).
«σ y σ² son intercambiables»
X = μ + σZ usa el desvío σ, no la varianza. Pasar σ² donde va σ ensancha al cuadrado.
«Con N = 200 la banda debe dar 0,683»
La banda tiene ruido ±√[0,68·0,32/200] ≈ ±0,033. Validar bandas con miles, no con cientos.
08 · Práctica guiada
Ejercicios con Python
Ejercicio 1: sensores con N(10,2)
μ = 10, σ = 2, N = 8000 (semilla 191): verificá media ≈ 10, desvío ≈ 2 y banda [8,12] ≈ 0,683.
import random
random.seed(191)
mu, sigma, N = 10.0, 2.0, 8000
m = [random.gauss(mu, sigma) for _ in range(N)]
media = sum(m) / N
print(round(media, 3), "vs 10.0")
print(round((sum((x-media)**2 for x in m)/N) ** 0.5, 3), "vs 2.0")
print(round(sum(1 for x in m if abs(x-mu) <= sigma) / N, 3), "vs 0.683")
Ver solución razonada
≈ 10,0, ≈ 2,0 y ≈ 0,68 (típicamente 0,67–0,70). Si la banda da ≈ 0,5, estás generando uniforme o Laplace.
Ejercicio 2: colas 2σ y 3σ
Con Z ~ N(0,1) y N = 20000, estimá P(|Z| ≤ 2) ≈ 0,954 y P(|Z| ≤ 3) ≈ 0,997.
import random
random.seed(192)
N = 20000
m = [random.gauss(0, 1) for _ in range(N)]
print(round(sum(1 for x in m if abs(x) <= 2) / N, 3), "vs 0.954")
print(round(sum(1 for x in m if abs(x) <= 3) / N, 3), "vs 0.997")
Ver solución
≈ 0,954 y ≈ 0,997. La cola 3σ necesita N = 20000: apenas ~60 puntos caen fuera de ±3.
Ejercicio 3: la suma-12 se queda sin cola
Compará el máximo absoluto de suma-12 contra gauss con N = 5000: la primera jamás pasa de 6.
Ver una posible respuesta
import random
random.seed(193)
N = 5000
s12 = [sum(random.random() for _ in range(12)) - 6.0 for _ in range(N)]
random.seed(193)
g = [random.gauss(0, 1) for _ in range(N)]
print("máx |suma12|:", round(max(abs(x) for x in s12), 2), "(tope 6.0)")
print("máx |gauss|:", round(max(abs(x) for x in g), 2))
Suma-12 acotada en 6 por construcción; gauss a veces supera 3,5–4 con N = 5000. Para colas extremas, método exacto.
09 · Síntesis
Ideas para recordar
- N(μ,σ²) = μ + σZ con Z ~ N(0,1): generar la estándar alcanza.
- Huella 68-95-99,7 para auditar campana y colas.
- Sin inversa cerrada: suma-12 aproxima, Box-Muller/polar generan exacto.
- No confundir σ con σ² ni campana con planicie.
- Límite de binomial y Poisson con parámetros grandes.
En el próximo tema generamos la estándar exacta: Box-Muller con dos uniformes.