stringtranslate.com

Muestreo por transformada inversa

El muestreo por transformada inversa (también conocido como muestreo de inversión , transformada integral de probabilidad inversa , método de transformación inversa o transformada de Smirnov ) es un método básico para el muestreo de números pseudoaleatorios , es decir, para generar números de muestra al azar a partir de cualquier distribución de probabilidad dada su función de distribución acumulativa .

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.

Muestreo por transformada inversa para distribución normal

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 ]

Declaración formal

Para cualquier variable aleatoria , la variable aleatoria tiene la misma distribución que , donde es la inversa generalizada de la función de distribución acumulativa de y es uniforme en . [3]

Para las variables aleatorias continuas , la transformada integral de probabilidad inversa es de hecho la inversa de la transformada integral de probabilidad , que establece que para una variable aleatoria continua con función de distribución acumulativa , la variable aleatoria es uniforme en .

Gráfica de la técnica de inversión de a . En la parte inferior derecha vemos la función regular y en la parte superior izquierda su inversión.

Intuición

A partir de , queremos generar con CDF Suponemos que es una función continua, estrictamente creciente, lo que proporciona una buena intuición.

Queremos ver si podemos encontrar alguna transformación estrictamente monótona , tal que . Tendremos

donde el último paso utilizado es que cuando es uniforme en .

Así que llegamos a ser la función inversa de , o, equivalentemente

Por lo tanto, podemos generar a partir de

El método

Esquema del muestreo por transformada inversa. La función inversa de se puede definir por .
Una animación de cómo el muestreo por transformada inversa genera valores aleatorios distribuidos normalmente a partir de valores aleatorios distribuidos uniformemente

El problema que resuelve el método de muestreo por transformada inversa es el siguiente:

El método de muestreo por transformada inversa funciona de la siguiente manera:

  1. Generar un número aleatorio a partir de la distribución uniforme estándar en el intervalo , es decir, de
  2. Encuentre la inversa generalizada de la CDF deseada, es decir .
  3. 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]

Ejemplos

Para realizar una inversión queremos resolver
Desde aquí realizaríamos los pasos uno, dos y tres.
Esto significa que si extraemos algo de a y calculamos Esto tiene distribución exponencial.
La idea se ilustra en el siguiente gráfico:
Los números aleatorios y i se generan a partir de una distribución uniforme entre 0 y 1, es decir, Y ~ U(0, 1). Se representan como puntos de colores en el eje y. Cada uno de los puntos se asigna de acuerdo con x = F −1 (y), que se muestra con flechas grises para dos puntos de ejemplo. En este ejemplo, hemos utilizado una distribución exponencial. Por lo tanto, para x ≥ 0, la densidad de probabilidad es y la función de distribución acumulativa es . Por lo tanto, . Podemos ver que al usar este método, muchos puntos terminan cerca de 0 y solo unos pocos puntos terminan teniendo valores x altos, tal como se espera para una distribución exponencial.
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

Prueba de corrección

Sea una función de distribución acumulativa , y sea su función inversa generalizada (usando el ínfimo porque las CDF son débilmente monótonas y continuas por la derecha ): [6]

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.

Véase también

Referencias

  1. ^ 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 .
  2. ^ "R: Generación de números aleatorios".
  3. ^ 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. ISBN 0-691-12255-5.
  4. ^ 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.
  5. ^ Arridge, Simon; Maass, Peter; Öktem, Ozan; Schönlieb, Carola-Bibiane (2019). "Resolución de problemas inversos utilizando modelos basados ​​en datos". Acta Numerica . 28 : 1–174. doi : 10.1017/S0962492919000059 . ISSN  0962-4929. S2CID  197480023.
  6. ^ 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.
  7. ^ 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
  8. ^ 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.
  9. ^ "UNU.RAN - Generadores de números aleatorios universales no uniformes".
  10. ^ "Runuran: Interfaz R para los generadores de variables aleatorias 'UNU.RAN'". 17 de enero de 2023.
  11. ^ "Generadores de números aleatorios (Scipy.stats.sampling) — Manual de SciPy v1.12.0".
  12. ^ 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.