Dado un generador de números aleatorios para producir variables aleatorias con una función de densidad de probabilidad $f(x)$ cómo generar variables aleatorias con función de densidad de probabilidad $g(x)?$
Respuesta
¿Demasiados anuncios?Si conoces los pdf de ambos, y la distribución de la que puedes muestrear, $f(x)$ encierra la distribución de la que se quiere tomar una muestra, $g(x)$ (o se puede hacer que lo hagan multiplicando las probabilidades por alguna constante $c$ ), puede utilizar un algoritmo de aceptación-rechazo . La esencia de este planteamiento es la siguiente:
- Extraer un valor de $f(x)$
- En ese valor x, forma un cociente, $r=g(x)/f(x)$
- Dibuja un valor, $u$ de una distribución uniforme en el intervalo (0,1)
- Si $u\le r$ entonces acepta que $x$ y guárdelo
- Si $u>r$ entonces rechaza que $x$ y empezar de nuevo
- Continúe hasta que tenga $N$ valores realizados
Tenga en cuenta que los algoritmos de aceptación-rechazo son notoriamente lentos, incluso si termina aceptando todos los valores x, hay varios pasos adicionales para cada sorteo. Para optimizar el rendimiento de este enfoque, trate de elegir un $f(x)$ que esté lo más cerca (es decir, lo menos por encima) de $g(x)$ como sea posible, para que acepte un porcentaje lo más alto posible.