Método de Monte Carlo · Tema 34

Propagación de incertidumbre

Cómo el azar de la entrada viaja hasta la salida: el modelo estira o encoge la duda.

01 · Punto de partida

La duda entra y sale transformada

Si el costo es 100 ± 15 y la utilidad es 150 − costo, la utilidad es 50 ± 15: el modelo trasladó la media y conservó el ancho. Si Y = 3·X, el ancho se triplica. Monte Carlo propaga distribuciones enteras, no solo ±.

Sensibilidad (tema 33) pregunta qué mueve; propagación muestra cómo se deforma.

  • ¿Qué distribución entra?
  • ¿El modelo la estira, la encoge o la tuerce?
  • ¿Qué forma sale?
  • ¿La salida sigue normal?

02 · Definición

Estirar, encoger, torcer

📏

Lineal

Y = a·X + b: media a·μ + b, desvío |a|·σ. La forma se conserva.

🌀

No lineal

Y = X², mín(Q,D): la forma cambia, aparecen picos y colas. Solo MC la captura.

📊

Histograma

La salida es una distribución: media, riesgo y cuantiles juntos.

Cómo viaja la duda en casos típicos.
ModeloEntradaSalida
U = 150 − CC ~ N(100, 15)U ~ N(50, 15)
Y = 3X − 50X ~ N(100, 10)Y ~ N(250, 30)
G = 5·mín(Q,D) − 2QD discretaDiscreta recortada, no normal

03 · Método

Muestrear X→Aplicar g→Leer Y
  1. 1
    Muestrear la entrada.

    N valores de F_X con su σ realista.

  2. 2
    Aplicar g a cada uno.

    Sin promediar antes: la no linealidad vive en cada Yᵢ.

  3. 3
    Leer la salida.

    Histograma, media, s, P y cuantiles. La distribución decide.

Lineal exacta
Y = aX + b propaga μ y σ con fórmula. MC la verifica en 1 línea.
No lineal
Promediar X y luego aplicar g sesga (Jensen). Siempre g primero, promedio después.
Entradas varias
Se propagan juntas como escenario: la salida mezcla todas las dudas.

04 · Ejemplos

  1. 1
    Utilidad lineal.

    Costo ±15 ⇒ utilidad ±15. Traslación pura.

  2. 2
    Escala ×3.

    X ±10 ⇒ Y ±30. El modelo amplifica.

  3. 3
    Mínimo.

    mín(100, D) recorta la cola alta: la salida se apila en 100.

05 · Representación en Python

Propagar es mapear la lista

Python en tu navegador. Una línea transforma la duda.

import random
import statistics

N = 10000
costos = [random.gauss(100, 15) for _ in range(N)]
utils = [150 - c for c in costos]
print("media:", round(sum(utils)/N, 1), "s:", round(statistics.pstdev(utils), 1))

# error clásico: g del promedio vs promedio de g (con min)
Ds = [random.choices([80, 100, 120], weights=[30, 40, 30])[0] for _ in range(N)]
print("bien:", sum(min(100, D) for D in Ds)/N)
print("mal:", min(100, sum(Ds)/N))

06 · Exploración

Laboratorio: la campana viaja intacta

Costo ~ N(μ, σ) y utilidad = 150 − costo. Mové μ (traslada) y σ (ensancha) y mirá el histograma de Y con su curva teórica.

EXPERIMENTO 34

De X a Y sin fórmulas

Y = 150 − X, X ~ N(μ, σ)

Los resultados numéricos aparecen debajo.
Media Y—
s Y—
Teórica—
Lectura—

Tocá «Propagar» para trasladar la duda.

Mover μ desplaza sin deformar; mover σ ensancha. Lineal conserva la campana.

Preguntas para explorar

  1. Con μ = 110, ¿la media de Y es 40?
  2. Con σ = 30, ¿s de Y también es 30?
  3. ¿Qué pasaría con Y = mín(100, D)?
Ver respuestas sugeridas
  1. Sí: 150 − 110. Traslación exacta.
  2. Sí: |−1|·σ. El signo menos espeja, no achica.
  3. La campana se recorta y apila: deja de ser normal. Solo MC lo muestra.

07 · Comprensión

Confusiones frecuentes

«Propago la media»

Se propagan muestras. Con no linealidad, g(media) ≠ media(g) (Jensen).

«La salida siempre es normal»

Solo en lineales de normales. Mínimos, máximos y productos la deforman.

«Más σ de entrada siempre es peor»

Depende de g: si g encoge (|a| < 1), la salida tiembla menos que la entrada.

«Sensibilidad y propagación son lo mismo»

Sensibilidad ordena causas; propagación describe el efecto total distribuido.

08 · Práctica guiada

Ejercicios con Python

Ejercicio 1: lineal exacta

Y = 3X − 50 con X ~ N(100, 10). Verificá media 250 y s 30.

import random
import statistics

ys = [3*random.gauss(100, 10)-50 for _ in range(8000)]
print(round(sum(ys)/len(ys), 1), round(statistics.pstdev(ys), 1))
Ver solución razonada

~250 y ~30: a = 3 triplica σ; b = −50 solo traslada.

Ejercicio 2: Jensen a mano

Con D en {80,100,120} y Q = 100, compará mín(media) vs media(mín).

import random

Ds = [random.choices([80,100,120], weights=[30,40,30])[0] for _ in range(8000)]
print("mal:", min(100, sum(Ds)/len(Ds)))
print("bien:", sum(min(100, D) for D in Ds)/len(Ds))
Ver solución

Mal: 100. Bien: ~94. El mínimo recorta: propagar la media miente.

Ejercicio 3: dos entradas juntas

U = P·D − C con P = 5, D discreta y C ~ N(200, 10). Propagá el par.

Ver una posible respuesta
import random
import statistics

us = [5*random.choices([80,100,120], weights=[30,40,30])[0] - random.gauss(200, 10) for _ in range(8000)]
print(round(sum(us)/len(us), 1), round(statistics.pstdev(us), 1))

~300 con s combinado: la salida mezcla ambas dudas en un histograma.

09 · Síntesis

Ideas para recordar

  • Propagar = mapear muestras: Yᵢ = g(Xᵢ), luego resumir.
  • Lineal conserva forma: media y σ viajan con a y b.
  • No lineal deforma: mínimos apilan, productos sesgan.
  • Nunca g(promedio): siempre promedio(g).
  • La salida es distribución: histograma + media + riesgo.

En el próximo tema usaremos la distribución para decidir bajo riesgo: la simulación de riesgo.