Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Representación de distribuciones de muestreo mediante muestreadores de cadenas de Markov

Para distribuciones de probabilidad más complejas, es posible que necesite métodos más avanzados para generar muestras que los métodos descritos en.Métodos de generación de números Pseudorandom comunes Tales distribuciones surgen, por ejemplo, en el análisis de datos bayesianos y en los grandes problemas combinatorios de Simulaciones de la cadena de Markov Monte Carlo (MCMC). Una alternativa es construir una cadena de Markov con una distribución estacionaria igual a la distribución de muestreo de destino, utilizando los Estados de la cadena para generar números aleatorios después de un período de combustión inicial en el que la distribución del estado converge al objetivo.

Utilizando el algoritmo Metropolis-Hastings

El algoritmo Metropolis-Hastings extrae muestras de una distribución que sólo se conoce hasta una constante. Los números aleatorios se generan a partir de una distribución con una función de densidad de probabilidad que es igual o proporcional a una función de propuesta.

Para generar números aleatorios:

  1. Suponga un valor inicial ().xt

  2. Dibuje una muestra, (), a partir de una distribución de propuesta (| ( )).ytqyxt

  3. Accept () como la siguiente muestra (+ 1) con probabilidad ((), ()) y Keep () como la siguiente muestra (+ 1) con probabilidad 1 – ((), ()), donde:ytxtrxtytxtxtrxtyt

    r(x,y)=min{f(y)f(x)q(x|y)q(y|x),1}

  4. Incremente → + 1 y repita los pasos 2 y 3 hasta obtener el número deseado de muestras.tt

Genere números aleatorios utilizando el método Metropolis-Hastings con la función.mhsample Para producir muestras de calidad eficientemente con el algoritmo Metropolis-Hastings, es crucial seleccionar una buena distribución de la propuesta. Si es difícil encontrar una distribución de propuesta eficiente, utilice el muestreo de rebanada () o el Monte Carlo de Hamiltonian () en su lugar.slicesamplehmcSampler

Mediante el muestreo de sectores

En los casos en los que es difícil encontrar una distribución de propuesta de Metropolis-Hastings eficiente, el algoritmo de muestreo de sectores no requiere una especificación explícita. El algoritmo de muestreo de sectores dibuja muestras de la región bajo la función de densidad utilizando una secuencia de pasos verticales y horizontales. Primero, selecciona una altura al azar de 0 a la función de densidad ().f x A continuación, selecciona un nuevo valor al azar por muestreo de la "rebanada" horizontal de la densidad por encima de la altura seleccionada.x Se utiliza un algoritmo de muestreo de sectores similar para una distribución multivariada.

Si se da una función () proporcional a la función de densidad, haga lo siguiente para generar números aleatorios:fx

  1. Suponga un valor inicial () dentro del dominio de ().xtfx

  2. Dibuje un valor real uniformemente a partir de (0, (())), definiendo así una "rebanada" horizontal como = {: < ()}.yfxtSxyfx

  3. Busque un intervalo = (,) alrededor de () que contenga todo, o gran parte de la "rebanada".ILRxtS

  4. Dibuje el nuevo punto (+ 1) dentro de este intervalo.xt

  5. Incremente → + 1 y repita los pasos 2 a 4 hasta obtener el número deseado de muestras.tt

El muestreo de sectores puede generar números aleatorios a partir de una distribución con una forma arbitraria de la función de densidad, siempre que haya un procedimiento numérico eficiente disponible para encontrar el intervalo = (,), que es la "rebanada" de la densidad.ILR

Genere números aleatorios utilizando el método de muestreo de sectores con la función.slicesample

Usando Hamiltonian Monte Carlo

Metropolis-Hastings y el muestreo de rebanada pueden producir cadenas MCMC que se mezclan lentamente y toman mucho tiempo para converger a la distribución estacionaria, especialmente en problemas de dimensión media y alta. Utilice el muestreador Hamiltonian Monte Carlo (HMC) basado en degradado para acelerar el muestreo en estas situaciones.

Para utilizar el muestreo de la HMC, debe especificar el log (hasta una constante aditiva) y su degradado.f(x) Puede utilizar un degradado numérico, pero esto conduce a un muestreo más lento. Todas las variables de muestreo deben ser sin restricciones, lo que significa que el registro y su degradado están bien definidos para todos los reales.f(x)x Para muestrear variables restringidas, transforme estas variables en las no restringidas antes de utilizar el muestreador de la HMC.

El algoritmo de muestreo de la HMC introduce un "vector de impulso" aleatorio y define una densidad de uniones y el "vector de posición" como.zzxP(x,z) = f(x)g(z) El objetivo es muestrear a partir de esta distribución conjunta y luego ignorar los valores de la distribución marginal de tiene la densidad deseada.zxf(x)

El algoritmo de la HMC asigna una densidad gaussiana con matriz de covarianza (la "matriz de masas") a:Mz

g(z)exp(12zTM1z)

A continuación, define una "función energética" como

E(x,z)=logf(x)+12zTM1z=U(x)+K(z)

con – registre la "energía potencial" yU(x) = f(x) K (z) = zTM-1z/2 la "energía cinética". La densidad de las articulaciones se da por exp {}.P(x,z) ∝ -E(x,z)

Para generar muestras aleatorias, el algoritmo de la HMC:

  1. Asume un valor inicial del vector de posición.x

  2. Genera una muestra del vector Momentum:.z ∼ g(z)

  3. Evoluciona el estado por una cierta cantidad de tiempo ficticio a un nuevo estado usando las "ecuaciones de movimiento":(x, z)τ(x’,z’)

    dzdτ=Ux

    dxdτ=Kz

    Si las ecuaciones de movimiento pudieran resolverse exactamente, la energía (y por ende la densidad) permanecería constante:.E(x,z) = E(x’,z’) En la práctica, las ecuaciones de las mociones deben resolverse numéricamente (usualmente usando la llamada integración de salto) y la energía no se conserva.

  4. Acepta como la siguiente muestra con probabilidadx’pacc = min (1, exp {}), y se mantiene como la siguiente muestra con probabilidad 1 –E(x,z) – E(x’,z’)xpacc.

  5. Repite los pasos 2 a 4 hasta que ha generado el número deseado de muestras.

Para utilizar el muestreo de la HMC, cree un muestreador utilizando la función.hmcSampler Después de crear un muestreador, puede calcular estimaciones de puntos MAP (máximo a posteriori), ajustar el muestreador, dibujar muestras y comprobar los diagnósticos de convergencia. Para ver un ejemplo de este flujo de trabajo, consulte.Regresión lineal bayesiana usando Hamiltonian Monte Carlo

Consulte también

Funciones