Está en la página 1de 33

Métodos de MonteCarlo

Estadística
Índice
• Introducción habituales
• Generación de números – método de Metropolis
aleatorios • Simulaciones
– uniformes entre 0 y 1 – Ejemplos de
– según una distribución simulaciones sencillas
cualquiera – Método de Bootstrap
– muestreo • Fenómenos de transporte:
• Aplicaciones propagación de una
• Generación de números partícula en un medio
aleatorios en muchas
dimensiones
– problema con métodos
Introducción
• intentaremos revisar las ideas fundamentales sobre ejemplos sencillos
• muchos ejemplos sacados de la física de partículas pero equivalentes en
muchos otros campos:
– una partícula que se propaga en un medio,
• puede ser una partícula elemental en un detector, en una
estrella, en un reactor nuclear, una mota de polvo en el aire, una
mancha de contaminación en el mar, un fotón en una fibra
óptica, una enfermedad en una población...
• Un mensaje general, estos métodos son muy potentes pero:
– no son la solución a todos los problemas
– si existe solución analítica aproximada puede ser mucho mejor
– o tal vez solución numérica
Introducción
• ¿Qué es una simulación? ¿qué es un método de MC? ¿es lo mismo?
– son conceptos muy amplio y bastante difusos
– para nosotros:
• método de MonteCarlo es utilizar números aleatorios para
resolver un problema
• simulación, utilizar números aleatorios para imitar un proceso
(físico en nuestro caso) inherentemente aleatorio y evaluar
magnitudes relacionadas
• ¿no es lo mismo?
• veremos que se pueden usar MC para resolver problemas no
relacionados con la estadística
Calculemos p
• ¿Sabes calcular p con un
trozo de tiza?
• inscribir un círculo radio 1
en un cuadrado
• lanzar al azar y contar
cuantas caen dentro del
total
• p=4*Ndentro/Ntotal
• No hacen falta
ordenadores!
Tipos generales de aplicación de MC
• cálculo de integrales y problemas asociados
– no son aleatorios
– el caso del cálculo de pi es un ejemplo de esto
• Resolución de problemas estadísticos:
– calcular intervalos de confianza, medias, medianas,
desviaciones...
• simulaciones:
– replicar un “experimento”
– un ejemplo clásico: transporte de radiación
Integración por números aleatorios
• Según la definición de integral como suma se puede ver
que:
𝑁
1 𝑖 𝑓(𝑥𝑖 )
• 0
𝑓 𝑥 𝑑𝑥 =< 𝑓 >≈ con x siguiendo una
𝑁
distribución uniforme
• más en general
𝑁
𝑏 𝑖 𝑓(𝑥𝑖 )
• 𝑎
𝑓 𝑥 𝑔(𝑥)𝑑𝑥 ≈ si g(x) es una distribución de
𝑁
probabilidad y generamos los número aleatorios de
acuerdo con esta probabilidad
• el método se puede extender a otros problemas (ec
integrales, minimización...)
Integrar por métodos numéricos
• Simplemente generar números de acuerdo con la
distribución de probabilidad
• evaluar la función en esos puntos
– no tiene por qué ser una función analítica, sólo se
evalúa en los puntos
• podemos calcular también la dispersión de estos valores lo
que nos da una idea del error que cometemos
– el error en la media de un conjunto de números que
siguen una distribución normal D=s/√N
• esto es cierto también para integrar en N dimensiones
– si N grande convergencia más rápida
• y para áreas/volúmenes/hypervolúmenes complicados
• algunos ejemplos...
Generación de números aleatorios
• Partimos de un generador de números aleatorios uniforme
entre 0 y 1
– disponible en todo tipo de aplicaciones
– generalmente series de números enteros generados de
forma recursiva a partir de una semilla
– son números pseudo-aleatorios: hay que comprobar su
calidad para vuestra aplicación:
• no basta con hacer una muestra de prueba, pintarlo y
ver que son aleatorios y siguen la ley que queremos,
pueden aparecer problemas de correlación
• existen tests para comprobar la calidad del
generador
• si es crítico para vuestro problema, hay que
estudiarlo
Generación de números aleatorios
• ¿cómo generar cualquier distribución a partir de un
generador de números uniformes? En una variable
• Recordad:
– si x sigue una ley de media 0 y desviación 1, podemos
construir y=m+s x
– si queremos hacer un cambio de variable xy
𝜌 𝑥 𝑑𝑥 = ℎ 𝑦 𝑑𝑦
• Si y es una variable aleatoria uniforme h(y)=1 entre 0 y 1
𝑥
– 𝜌 𝑥 𝑑𝑥 = 𝑑𝑦 ⇒ 𝑦 = −∞
𝜌 𝑥 𝑑𝑥 = 𝐹(𝑥) Función de
distribución
– x=F-1(y) seguirá la ley deseada
• observad que F(x), como y, definido entre 0 y 1
Generación de números aleatorios
• ejemplo sencillo e-x
𝑥 −𝑥
• 𝑦=𝐹 𝑥 = 0
𝑒 = 1 − 𝑒 −𝑥
• x = 𝐹 −1 𝑦 = −ln(1 − 𝑦)
• Procedimiento
– generamos número aleatorio uniforme entre 0 y 1
– la variable −ln(1 − 𝑦) se comporta como esta
exponencial
– si queremos con un “tiempo de vida” distinto se
multiplica por una constante
– tx seguirá una ley e-x/t
Números aleatorios según una pdf cualquiera
• Procedimiento, SI la pdf es integrable e invertible analíticamente
1. calculamos F(x), resolviendo la integral
2. obtenemos un número aleatorio según pdf uniforme
3. sacamos x=F-1(y) que seguirá la pdf deseada
(ver ejemplo de pdf exponencial)
• Caso particular de variables discretas
– F(x) a saltos, como suma de las prob de cada valor permitido
– para un y aleatorio uniforme, se saca el valor discreto xi que hace
𝑖−1 𝑖
0 𝑝𝑗 < 𝑥 < 0 𝑝𝑗

y
Números aleatorios según una pdf cualquiera
• ¿Y si no es integrable/invertible?: Existen métodos y “trucos”
• Integrar numéricamente y tabular
– Si integramos numéricamente podemos construir una
tabla, o una función de distribución a trozos
– Podemos operar como si fuera una variable discreta con
saltos muy pequeños
– no suele ser un método muy eficiente
– a veces los programas nos proporcionan funciones que no
consideramos analíticas habitualmente: por ejemplo la
función de error para generar números gaussianos
𝑥 2
𝑥 1 −2 1 𝑥
•𝐹 𝑥 = −∞ 2𝜋
𝑒 = + erf( )
2 √2
• a veces se ofrece su inversa a partir de la función
gamma
Números aleatorios según una pdf cualquiera
• “método de la composición”
– descomponer la pdf como sumas de pdf manejables
– por ejemplo, suma de 3 pdf exponenciales
– 𝜌 𝑥 = 𝑎 ∗ 𝑒 −𝑥 + 𝑏 ∗ 𝑒 −2𝑥 +c∗ 𝑒 −3𝑥 (a,b y c tales que
la integral es 1)
– Se calcula la prob correspondiente a cada pdf
• (∫fi)
– se genera un número aleatorio discreto de acuerdo con
esas probabilidades
– se escoge cual de las pdf individuales se han escogido
– se lanza un número aleatorio de acuerdo con esta
distribución
Generar n.a. según pdf normal
• Muy habitualmente tenemos que generar números de
acuerdo con una pdf normal
• no siempre nos lo ofrece el generador incorporado
• no se encuentra entre los casos ”fáciles” anteriores
• Se resuelve de la siguiente manera:
– planteamos el problema de generar 2 números según
esta pdf x e y
– si se pasa a polares el problema es integrable/invertible
en r2 y q
– se sacan dos números aleatorios z= r2 y q según estas
distribuciones
– se obtiene x=√2z*cos(q) (se ignora y, o se calcula como
y=√2z*sin(q))
• ejemplo de generación y aplicación a “prop. de errores”
Métodos de rechazo
• Si no valen otros métodos y
podemos acotar la pdf...
• Se generan dos números
aleatorios uniformes
– uno en el rango de las x,
otro entre 0 y el valor
máximo
• Si el punto queda bajo la
pdf se acepta en otro caso
se rechaza
• Los puntos elegidos siguen
la ley deseada
• ejemplo x2 entre -1 y 1
Métodos de rechazo
• El método tiene una eficiencia (cuantos de los números que
generamos se aprovechan) dada por el cociente de áreas
– puede hacerse ineficiente
• si el rango de las variables va a infinito hay que truncar
• obliga a conocer el máximo de la función
• se puede extender fácilmente a N-variables, correlacionadas
o no
• existe una extensión llamada muestreo de importancia que
optimiza la eficiencia
“importance” sampling
• Queremos generar números • Se generan dos números
de acuerdo con f(x) aleatorios x (según g) y R
• Buscamos una función g(x) (uniforme entre 0 y 1), se
de la que tengamos un acepta si Rf0(x)<f(x)
generador de números • Es mucho más eficiente si la
aleatorios y verifique: función se aproxima de
– g(x) se aproxima a f(x) verdad a la real
– existe una cte C, tal que
f0(x)=C*g(x)>f(x) en
todo el intervalo
Números aleatorios en N-Dimensiones
• Buscamos obtener números aleatorios de acuerdo con una densidad de
probabilidad genérica definida por más de una variable: r(x)
• Los métodos habituales de muestreo (sampling) se pueden extender a
N-Dimensiones ...
• ...pero son muy poco eficientes:
– Típicamente la eficiencia del método (cuántos números aleatorios
necesitamos para obtener uno que nos valga) viene dada por el
cociente entre el área subtendida por la función de densidad que
muestreamos y un área que englobe toda la función
• ya es poco eficiente para casos en que la función varía mucho
– en n dimensiones son hipervolúmenes
• curse of dimensionality... típicamente la eficiencia escala como
potencias de la dimensión eN→0 si e<1 y N grande
– por ejemplo, si lo usáramos para hacer sampling de e-x2 (no
debemos hacerlo!!!) entre -10 y 10
• para dimensión 1, tendremos una eficiencia de ~9%
• para dimensión 10, 3·10-11
Números aleatorios en N-Dimensiones
• Antes de ir a métodos multidimensionales hay que comprobar siempre
si el problema se puede factorizar:
– generar n distribuciones uni-dimensionales es siempre mucho más
eficiente que generar una n-dimensional
• Algunas sugerencias para reducir la dimensión:
– comprobar si las variables (o algunas de ellas) son independientes,
en ese caso factorizar directamente
– comprobar si las variables sólo están correlacionadas linealmente:
transformar en independientes (como en PCA)
– pensar si hay algún cambio de variable que las pueda hacer
independientes, p ej, cambio de coordenadas
cartesianas↔esféricas↔polares
– existe alguna simplificación razonable que lo haga lineal?
• Si nada funciona, un método sencillo y eficiente:
– Algoritmo de Metropolis
Algoritmo de Metropolis
• Propuesto en 1953 por Nicholas Metropolis
• Una extensión muy utilizada propuesta Hastings en 1970
– se habla a menudo del método de Metropolis-Hastings
• Una versión simplificada del procedimiento:
– se comienza con un punto cualquiera del espacio permitido r, es el
llamado walker (si se obtiene como número aleatorio de una
distribución aproximada convergerá más rápido)
– se obtiene un r’=r+d donde d es un vector obtenido de forma que
cada una de sus componentes es un número aleatorio de una ley
uniforme entre –a y a. (random walk)
– se evalúa q=r(r’)/r(r)
– se obtiene un número aleatorio t según una ley uniforme entre 0 y
1
– si t<q se hace ri+1= r’, en otro caso ri+1= r
• obviamente si q>1 siempre se acepta el nuevo punto
– si repetimos esto un número suficiente de veces converge a un
número aleatorio según r(r)
Algoritmo de Metropolis
• En la práctica se empieza con varios walkers según una distribución
aproximada (p.ej, despreciando correlaciones)
• En cada iteración se actualizan todos los walkers (con random walks
independientes)
• Al cabo de n iteraciones, tenemos una realización de la p.d.f.
• Se puede ir viendo como converge alguna magnitud asociada al p.d.f.
(una integral, una velocidad media, un r.m.s., una temperatura...)
• La elección del rango de random walk es arbitraria:
– un valor demasiado pequeño hará la convergencia lenta
– un valor demasiado grande, complicará ver estructuras
• en el límite, estaríamos en un sampling estándar
– típicamente es apropiado un valor del orden de las estructuras
• Aspectos importantes del método:
– no hace falta normalizar la función de probabilidad
– sólo hay que calcularla en los puntos concretos del walker
– no tenemos que conocer/estimar el valor máximo, ni el rango
(hipervolumen que englobe la pdf)
Dos ejemplos
• Obtener números según una distribución gaussiana
(recordad que hay métodos mejores en este caso)
– empezamos con una uniforme entre -2 y 2
– para a=1 hay una buena convergencia en 5 o 6 pasos
– para a=0.1 en 18 aún no se parece demasiado
– para a=10 se parece al cabo de unas 10, pero no mejora
demasiado
• lo mismo para una gaussiana doble
– para a=1 converge algo más lento, unos 15 pasos
– para a=10, sale bien en 7-8 pasos
Más ejemplos
• El método de Metropolis se puede aplicar de forma sencilla a casos de
formulación matemática no trivial
• Por ejemplo el caso de esferas rígidas en una caja según la ley que sea,
pero sin poderse solapar ni solapar con los bordes
– basta con asignar probabilidad 0 a los casos en que los walkers
lleven a condiciones de solapamiento
– hay que asegurarse que en el primer paso no hay walkers en zonas
de probabilidad 0 (habría división por 0)

• Ejercicio para hacer vosotros:


– plantear en dos dimensiones el problema de distribución uniforme
de dos esferas duras de radio R en una caja de dimensiones L
– usar el lenguaje/programa favorito
– generar varios walkers (cada uno implica dos esferas!)
– realizar las iteraciones y obtener cómo convergen algunas
cantidades, p.ej.:
• distancia entre esferas
• mínima distancia a una pared
Extensiones
• En realidad el método propuesto por Metropolis incluía
una perturbación más general con la única condición de
que fuese simétrica:
– P(x’→x)= P(x→x’)
– en algunos casos converge mejor con expresiones más
complicadas que una perturbación uniforme
• Hastings lo generalizó a algunas funciones no simétricas
• Existen más generalizaciones
¿Por qué converge?
• Este algoritmo es un caso particular de Cadenas de Markov
– Dentro de estas teorías, se puede demostrar que la sucesión converge
de forma casi segura
• Se puede ver que si los walkers siguen la p.d.f que queremos se mantienen
en una posición de equilibrio:
– supongamos dos puntos del espacio r’ y r tales que r(r’)<r(r)
– podemos ver esto como un flujo de partículas de un sitio a otro
– entonces en ese momento tendremos r(r) partículas en ese punto
– cuántas se mueven a r’?:
• r(r) r(r’)/r(r) P(r→r’),
– el número de partículas que hay en ese punto multiplicado por la
probabilidad que definimos y la probabilidad dada por la
perturbación, queda r(r’)P(r→r’),
• en dirección contraria será simplemente: r(r’)P(r’→r), porque
r(r)/r(r’)>1
• como P es simétrica se ve que para dos puntos cualesquiera el
“flujo” es el mismo en los dos sentidos
• por tanto mantiene el equilibrio
Ejemplos sencillos de simulaciones
• Existen muchos casos donde una simulación sencilla nos
puede dar un información importante sobre algún proceso:
– es una herramienta muy potente pero no hay que abusar
de ella!
• comprobar si existe una solución analítica
• comprobar si se puede resolver con aproximaciones
razonables
• Incluso en Economía:
– La contribución socieconómica de la UC
Ejemplo: el llamado “toy MC”
• Es un caso muy habitual en cualquier proceso de medida
• Tenemos uno o varios aparatos que miden magnitudes
físicas
– los aparatos no son ideales, tienen una eficiencia, tienen
una resolución, puede haber ruido de fondo...
• Normalmente lo que nos interesa no es directamente la
magnitud medida sino una combinación de varias
magnitudes (no lineal, casi siempre)
– la pregunta es: conocida la distribución de probabilidad
de las medidas directas ¿qué pdf tiene la magnitud?
¿Qué precisión?...
– esto normalmente sólo se puede hacer analíticamente si
suponemos errores gaussianos y pequeños
(aproximación de primer orden)
Toy MC
• Ejemplo: en un acelerador se produce una partícula que queremos
estudiar. Ésta se desintegra inmediatamente a otras n partículas que son
las que observamos:
– medimos px, py, pz, m de cada partícula
– tenemos una eficiencia que puede depender de p,q,f
– tenemos una resolución que puede depender de p,q,f
– que pdf tiene la masa total M2=(SE)2-(Sp)2?
• procedimiento:
– “generamos” una desintegración:
• dado un modelo teórico, por ejemplo con un Metropolis
– para cada partícula lanzamos un número aleatorio entre 0 y 1, si es
mayor que la eficiencia, se elimina la partícula
– a cada magnitud le sumamos un número aleatorio (gaussiano casi
siempre), de acuerdo con la resolución: smearing
– obtenemos M con las partículas “supervivientes”
• gráficas, estimadores, etc...
Estimación de errores en un ajuste
• Realizamos un ajuste de datos experimentales a un modelo en función
de algunos parámetros (p.ej. ajuste a una recta)
• La estimación de errores posible sólo en algunos casos sencillos:
ajustes a funciones sencillas, errores gaussianos, casi siempre
despreciando la correlación
• Para casos más complicados se puede hacer una simulación:
– conocida la distribución de probabilidad de cada punto
experimental (veremos después cómo hacerlo en otro caso)
– se obtiene con números aleatorios un conjunto de pseudo-datos y
se realiza el ajuste
– se repite las veces que haga falta y se estudia el valor de los
parámetros
Bootstrap
• Un ejemplo muy extendido de estudiar propiedades de un estimador
estadístico muestreando una distribución aproximada
– habitualmente obtenida de los mismos datos
• Propuesto inicialmente en 1969 por Julian Simon y poco después
(aunque más conocido) por Brad Efron
• Un ejemplo típico:
– tenemos un conjunto de datos que siguen un pdf desconocido, cuál
es el error en la media o en la rms?
– tomamos los datos y los discretizamos (hacemos un histograma)
construyendo un pdf
– en cada bin/canal vemos el número de datos y aplicamos la ley que
queramos (poisson, gauss...)
– con eso podemos obtener los “experimentos simulados” que
queramos y estudiar cualquier estimador
Bootstrap
• ¡Cuidado! el método es muy sencillo y potente, pero puede dar
resultados sesgados:
– construimos el modelo sobre información parcial
– sobre todo si partimos de una muestra pequeña, podemos haber
sido des/afortunados y aunque realicemos infinitas simulaciones el
resultado sea incorrecto
• dos ejemplos:
– tenemos un proceso que sigue una ley de poisson de media
pequeña, p.ej. 0.1
• es relativamente probable que obtengamos varios datos=0,
entonces un bootstrap nos dirá que siempre es 0
– una distribución de gauss, centrada en 0 y anchura 1
• si tenemos pocos datos, no es imposible que estén sesgados
• cualquier simulación que hagamos estará sesgada
Bootstrap
• Otro ejemplo:
– el ajuste del caso anterior sin conocer la distribución
– utilizamos los mismos datos para obtener la
distribución
• habitualmente suponiendo gauss y calculando media
y rms
• incluso si estamos contando suponemos que la rms
es la raíz de N
– de hecho es lo que estamos haciendo en muchos casos
al realizar un ajuste

También podría gustarte