El muestreo por transformación inversa toma muestras uniformes de un número entre 0 y 1, interpretado como probabilidad, y luego devuelve el número más pequeño que corresponde a la función de distribución acumulativa de una variable aleatoria. Por ejemplo, imagine que se trata de una distribución normal estándar con media cero y desviación estándar uno. La siguiente tabla muestra muestras tomadas de la distribución uniforme y su representación en la distribución normal estándar.
Elegimos aleatoriamente una proporción del área bajo la curva y devolvemos el número en el dominio de manera que exactamente esa proporción del área se encuentre a la izquierda de ese número. Intuitivamente, es poco probable que elijamos un número en el extremo más alejado de las colas porque hay muy poca área en ellas que requeriría elegir un número muy cercano a cero o uno.
Computacionalmente, este método implica calcular la función cuantil de la distribución; en otras palabras, calcular la función de distribución acumulativa (CDF) de la distribución (que asigna un número en el dominio a una probabilidad entre 0 y 1) y luego invertir esa función. Esta es la fuente del término "inversa" o "inversión" en la mayoría de los nombres de este método. Tenga en cuenta que para una distribución discreta , calcular la CDF en general no es demasiado difícil: simplemente sumamos las probabilidades individuales para los diversos puntos de la distribución. Sin embargo, para una distribución continua , necesitamos integrar la función de densidad de probabilidad (PDF) de la distribución, lo que es imposible de hacer analíticamente para la mayoría de las distribuciones (incluida la distribución normal ). Como resultado, este método puede ser computacionalmente ineficiente para muchas distribuciones y se prefieren otros métodos; sin embargo, es un método útil para construir muestreadores de aplicación más general, como los basados en el muestreo de rechazo .
Para la distribución normal , la falta de una expresión analítica para la función cuantil correspondiente significa que otros métodos (por ejemplo, la transformada de Box-Muller ) pueden ser preferidos computacionalmente. Suele suceder que, incluso para distribuciones simples, el método de muestreo de transformada inversa se puede mejorar en: [1] véase, por ejemplo, el algoritmo ziggurat y el muestreo de rechazo . Por otro lado, es posible aproximar la función cuantil de la distribución normal con extrema precisión utilizando polinomios de grado moderado y, de hecho, el método para hacerlo es lo suficientemente rápido como para que el muestreo de inversión sea ahora el método predeterminado para el muestreo de una distribución normal en el paquete estadístico R. [2 ]
Calcular . La variable aleatoria calculada tiene distribución y, por lo tanto, la misma ley que .
Expresado de otra manera, dada una función de distribución acumulativa y una variable uniforme , la variable aleatoria tiene la distribución . [3]
En el caso continuo, se puede dar un tratamiento de dichas funciones inversas como objetos que satisfacen ecuaciones diferenciales. [4] Algunas de estas ecuaciones diferenciales admiten soluciones explícitas en series de potencias , a pesar de su no linealidad. [5]
Desde aquí realizaríamos los pasos uno, dos y tres.
Como otro ejemplo, utilizamos la distribución exponencial con para x ≥ 0 (y 0 en caso contrario). Al resolver y=F(x) obtenemos la función inversa
Esto significa que si extraemos algo de a y calculamos Esto tiene distribución exponencial.
La idea se ilustra en el siguiente gráfico:
Nótese que la distribución no cambia si empezamos con 1-y en lugar de y. Por lo tanto, para fines computacionales, basta con generar números aleatorios y en [0, 1] y luego simplemente calcular
Afirmación: Si es una variable aleatoria uniforme en entonces tiene como su CDF.
Prueba:
Distribución truncada
El muestreo por transformada inversa se puede extender simplemente a casos de distribuciones truncadas en el intervalo sin el costo del muestreo de rechazo: se puede seguir el mismo algoritmo, pero en lugar de generar un número aleatorio distribuido uniformemente entre 0 y 1, generar uniformemente distribuido entre y , y luego tomar nuevamente .
Reducción del número de inversiones
Para obtener una gran cantidad de muestras, es necesario realizar la misma cantidad de inversiones de la distribución. Una forma posible de reducir la cantidad de inversiones mientras se obtiene una gran cantidad de muestras es la aplicación del llamado muestreador de Monte Carlo de colocación estocástica (muestreador SCMC) dentro de un marco de expansión de caos polinomial . Esto nos permite generar cualquier cantidad de muestras de Monte Carlo con solo unas pocas inversiones de la distribución original con muestras independientes de una variable para la cual las inversiones están analíticamente disponibles, por ejemplo, la variable normal estándar. [7]
Implementaciones de software
Existen implementaciones de software disponibles para aplicar el método de muestreo inverso mediante aproximaciones numéricas de la inversa en caso de que no esté disponible en forma cerrada. Por ejemplo, se puede calcular una aproximación de la inversa si el usuario proporciona alguna información sobre las distribuciones, como la PDF [8] o la CDF.
Biblioteca C UNU.RAN [9]
Biblioteca R Runuran [10]
Muestreo de subpaquetes de Python en scipy.stats [11] [12]
El muestreo por rechazo es otra técnica común para generar variables aleatorias que no depende de la inversión de la CDF.
Referencias
^ Luc Devroye (1986). Generación de variables aleatorias no uniformes (PDF) . Nueva York: Springer-Verlag. Archivado desde el original (PDF) el 18 de agosto de 2014. Consultado el 12 de abril de 2012 .
^ "R: Generación de números aleatorios".
^ ab McNeil, Alexander J.; Frey, Rüdiger; Embrechts, Paul (2005). Gestión cuantitativa del riesgo . Princeton Series in Finance. Princeton University Press, Princeton, NJ. p. 186. ISBN0-691-12255-5.
^ Steinbrecher, György; Shaw, William T. (19 de marzo de 2008). "Mecánica cuantil". Revista Europea de Matemáticas Aplicadas . 19 (2). doi :10.1017/S0956792508007341. S2CID 6899308.
^ Luc Devroye (1986). "Sección 2.2. Inversión mediante solución numérica de F(X) = U" (PDF) . Generación de variables aleatorias no uniformes . Nueva York: Springer-Verlag.
^ LA Grzelak, JAS Witteveen, M. Suarez y CW Oosterlee. El muestreador de Monte Carlo de colocación estocástica: muestreo altamente eficiente a partir de distribuciones “costosas”. https://ssrn.com/abstract=2529691
^ Derflinger, Gerhard; Hörmann, Wolfgang; Leydold, Josef (2010). "Generación de variables aleatorias mediante inversión numérica cuando solo se conoce la densidad" (PDF) . ACM Transactions on Modeling and Computer Simulation . 20 (4). doi :10.1145/945511.945517.
^ "UNU.RAN - Generadores de números aleatorios universales no uniformes".
^ "Runuran: Interfaz R para los generadores de variables aleatorias 'UNU.RAN'". 17 de enero de 2023.
^ "Generadores de números aleatorios (Scipy.stats.sampling) — Manual de SciPy v1.12.0".
^ Baumgarten, Christoph; Patel, Tirth (2022). "Generación automática de variables aleatorias en Python". Actas de la 21.ª Conferencia sobre Python en la Ciencia . págs. 46–51. doi :10.25080/majora-212e5952-007.