El muestreo de sectores es un tipo de algoritmo Monte Carlo de cadena de Markov para muestreo de números pseudoaleatorios , es decir, para extraer muestras aleatorias de una distribución estadística. El método se basa en la observación de que para muestrear una variable aleatoria se puede muestrear uniformemente de la región bajo la gráfica de su función de densidad. [1] [2] [3]
Supongamos que desea muestrear alguna variable aleatoria X con distribución f ( x ). Supongamos que la siguiente es la gráfica de f ( x ). La altura de f ( x ) corresponde a la probabilidad en ese punto.
Si tomara una muestra uniforme de X , cada valor tendría la misma probabilidad de ser muestreado y su distribución sería de la forma f ( x ) = y para algún valor de y en lugar de alguna función no uniforme f ( x ). En lugar de la línea negra original, su nueva distribución se parecería más a la línea azul.
Para muestrear X de una manera que retenga la distribución f ( x ), se debe utilizar alguna técnica de muestreo que tenga en cuenta las distintas probabilidades para cada rango de f ( x ).
El muestreo por cortes, en su forma más simple, toma muestras uniformemente desde debajo de la curva f ( x ) sin la necesidad de rechazar ningún punto, de la siguiente manera:
La motivación aquí es que una forma de muestrear un punto uniformemente desde dentro de una curva arbitraria es dibujar primero cortes horizontales delgados de altura uniforme a lo largo de toda la curva. Luego, podemos muestrear un punto dentro de la curva seleccionando aleatoriamente un segmento que cae en o debajo de la curva en la posición x de la iteración anterior, y luego seleccionando aleatoriamente una posición x en algún lugar a lo largo del segmento. Al utilizar la posición x de la iteración anterior del algoritmo, a largo plazo seleccionamos sectores con probabilidades proporcionales a las longitudes de sus segmentos dentro de la curva. La parte más difícil de este algoritmo es encontrar los límites del corte horizontal, lo que implica invertir la función que describe la distribución de la que se está muestreando. Esto es especialmente problemático para distribuciones multimodales, donde el segmento puede constar de múltiples partes discontinuas. A menudo es posible utilizar una forma de muestreo de rechazo para superar esto, donde tomamos muestras de un segmento más grande que se sabe que incluye el segmento deseado en cuestión y luego descartamos puntos fuera del segmento deseado. Este algoritmo se puede utilizar para tomar muestras del área bajo cualquier curva, independientemente de si la función se integra a 1. De hecho, escalar una función mediante una constante no tiene ningún efecto en las posiciones x muestreadas. Esto significa que el algoritmo se puede utilizar para tomar muestras de una distribución cuya función de densidad de probabilidad solo se conoce hasta una constante (es decir, cuya constante de normalización se desconoce), lo cual es común en estadística computacional .
El muestreo de sectores recibe su nombre del primer paso: definir un sector mediante muestreo a partir de una variable auxiliar . Esta variable se toma como muestra de , donde es la función de densidad de probabilidad (PDF) de X o es al menos proporcional a su PDF. Esto define una porción de X donde . En otras palabras, ahora estamos mirando una región de X donde la densidad de probabilidad es al menos . Luego, el siguiente valor de X se muestrea uniformemente de este segmento. Se muestra un nuevo valor de , luego X , y así sucesivamente. Esto se puede visualizar como un muestreo alternativo de la posición y y luego de la posición x de los puntos en PDF, por lo que las X provienen de la distribución deseada. Los valores no tienen consecuencias o interpretaciones particulares fuera de su utilidad para el procedimiento.
Si tanto la PDF como su inversa están disponibles, y la distribución es unimodal, entonces encontrar la porción y tomar muestras de ella es simple. De lo contrario, se puede utilizar un procedimiento de salida para encontrar una región cuyos puntos finales queden fuera del segmento. Luego, se puede extraer una muestra del corte mediante muestreo de rechazo . Radford M. Neal describe en detalle varios procedimientos para esto . [2]
Tenga en cuenta que, a diferencia de muchos métodos disponibles para generar números aleatorios a partir de distribuciones no uniformes, las variables aleatorias generadas directamente por este enfoque exhibirán una dependencia estadística en serie. Esto se debe a que para extraer la siguiente muestra, definimos el sector en función del valor de f ( x ) para la muestra actual.
El muestreo de cortes es un método de cadena de Markov y, como tal, tiene el mismo propósito que el muestreo de Gibbs y Metropolis. A diferencia de Metropolis, no es necesario ajustar manualmente la función candidata o la desviación estándar candidata.
Recuerde que Metropolis es sensible al tamaño del paso. Si el tamaño del paso es demasiado pequeño, la caminata aleatoria provoca una descorrelación lenta. Si el tamaño del paso es demasiado grande, se produce una gran ineficiencia debido a una alta tasa de rechazo.
A diferencia de Metropolis, el muestreo de sectores ajusta automáticamente el tamaño del paso para que coincida con la forma local de la función de densidad. Podría decirse que la implementación es más fácil y eficiente que el muestreo de Gibbs o las simples actualizaciones de Metropolis.
Tenga en cuenta que, a diferencia de muchos métodos disponibles para generar números aleatorios a partir de distribuciones no uniformes, las variables aleatorias generadas directamente por este enfoque exhibirán una dependencia estadística en serie. En otras palabras, no todos los puntos tienen la misma probabilidad independiente de selección. Esto se debe a que para extraer la siguiente muestra, definimos el sector en función del valor de f(x) para la muestra actual. Sin embargo, las muestras generadas son markovianas y, por lo tanto, se espera que converjan a la distribución correcta a largo plazo.
Slice Sampling requiere que la distribución que se va a muestrear sea evaluable. Una forma de relajar este requisito es sustituir una distribución evaluable que sea proporcional a la distribución verdadera no evaluable.
Para muestrear una variable aleatoria X con densidad f ( x ), introducimos una variable auxiliar Y e iteramos de la siguiente manera:
Nuestra variable auxiliar Y representa una "porción" horizontal de la distribución. El resto de cada iteración se dedica a muestrear un valor de x del segmento que sea representativo de la densidad de la región que se está considerando.
En la práctica, el muestreo de una porción horizontal de una distribución multimodal es difícil. Existe una tensión entre obtener una región de muestreo grande y, por lo tanto, hacer posibles grandes movimientos en el espacio de distribución, y obtener una región de muestreo más simple para aumentar la eficiencia. Una opción para simplificar este proceso es la expansión y contracción regional.
→
En un muestreador de Gibbs , es necesario extraer de manera eficiente todas las distribuciones condicionales completas. Cuando el muestreo a partir de una densidad totalmente condicional no es fácil, se puede utilizar una sola iteración de muestreo por cortes o el algoritmo Metropolis-Hastings dentro de Gibbs para tomar muestras de la variable en cuestión. Si la densidad totalmente condicional es log-cóncava, una alternativa más eficiente es la aplicación de métodos de muestreo de rechazo adaptativo (ARS). [4] [5] Cuando no se pueden aplicar las técnicas ARS (dado que el condicional completo no es logcóncavo), a menudo se emplean los algoritmos de muestreo de Metropolis de rechazo adaptativo . [6] [7]
El muestreo de corte de una sola variable se puede utilizar en el caso multivariado muestreando cada variable repetidamente, como en el muestreo de Gibbs. Para hacerlo es necesario que podamos calcular, para cada componente, una función que sea proporcional a .
Para evitar el comportamiento de caminata aleatoria, se pueden utilizar métodos de relajación excesiva para actualizar cada variable por turno. [ cita necesaria ] La relajación excesiva elige un nuevo valor en el lado opuesto de la moda del valor actual, en lugar de elegir un nuevo valor independiente de la distribución como se hace en Gibbs.
Este método adapta el algoritmo univariado al caso multivariado sustituyendo la región w unidimensional utilizada en el original por un hiperrectángulo. El hiperrectángulo H se inicializa en una posición aleatoria sobre el corte. Luego, H se reduce a medida que se rechazan puntos.
El muestreo de corte reflectante es una técnica para suprimir el comportamiento de caminata aleatoria en la que las sucesivas muestras candidatas de distribución f ( x ) se mantienen dentro de los límites del corte "reflejando" la dirección del muestreo hacia el interior del corte una vez que se ha alcanzado el límite.
En esta representación gráfica del muestreo reflexivo, la forma indica los límites de un segmento de muestreo. Los puntos indican los puntos de inicio y finalización de una caminata de muestreo. Cuando las muestras alcanzan los límites del segmento, la dirección del muestreo se "refleja" nuevamente en el segmento.
Considere un ejemplo de una sola variable. Supongamos que nuestra distribución verdadera es una distribución normal con media 0 y desviación estándar 3 ,. Entonces: . El pico de la distribución es obviamente en ese punto .
Si estamos interesados en el pico de la distribución, podemos seguir repitiendo este proceso ya que el nuevo punto corresponde a una f ( x ) mayor que el punto original.
Para tomar muestras de la distribución normal, primero elegimos una x inicial , digamos 0. Después de cada muestra de x, elegimos y uniformemente al azar de , que está acotada por la función de densidad de probabilidad de . Después de cada muestra y elegimos x uniformemente al azar de donde . Esta es la porción donde .
Una implementación en el lenguaje Macsyma es:
rebanada ( x ) := bloque ([ y , alpha ] , y: aleatorio ( exp ( - x ^ 2 / 2.0 ) / sqrt ( 2.0 * dfloat ( % pi ))) , alpha: sqrt ( -2.0 * ln ( y * sqrt ( 2.0 * dfloat ( % pi )))) , x: signum ( aleatorio ()) * aleatorio ( alfa )) ;