9.7 Muestreador de Gibbs

El algoritmo de Metrópolis es muy general y se puede aplicar a una gran variedad de problemas. Sin embargo, afinar los parámetros de la distribución propuesta para que el algoritmo funcione correctamente puede ser complicado. Por otra parte, el muestredor de Gibbs no necesita de una distribución propuesta.

Para implementar un muestreador de Gibbs se necesita ser capaz de generar muestras de la distribución posterior condicional a cada uno de los parámetros individuales. Esto es, el muestreador de Gibbs permite generar muestras de la posterior: p(θ1,...,θp|x) siempre y cuando podamos generar valores de todas las distribuciones condicionales: p(θk,|θ1,...,θk1,θk+1,...,θp,x)

El proceso del muestreador de Gibbs es una caminata aleatoria a lo largo del espacio de parámetros. La caminata inicia en un punto arbitrario y en cada tiempo el siguiente paso depende únicamente de la posición actual. Por tanto el muestredor de Gibbs es un proceso cadena de Markov vía Monte Carlo. La diferencia entre Gibbs y Metrópolis radica en como se deciden los pasos.

Muestreador Gibbs

En cada punto de la caminata se selecciona uno de los componentes del vector de parámetros (típicamente se cicla en orden):

  1. Supongamos que se selecciona el parámetro θk, entonces obtenemos un nuevo valor para este parámetro generando una simulación de la distribución condicional p(θk,|θ1,...,θk1,θk+1,...,θp,x)

  2. El nuevo valor θk junto con los valores que aun no cambian θ1,...,θk1,θk+1,...,θp constituyen la nueva posición en la caminata aleatoria.

  3. Seleccionamos una nueva componente (θk+1) y repetimos el proceso.

El muestreador de Gibbs es útil cuando no podemos determinar de manera analítica la distribución conjunta y no se puede simular directamente de ella, pero si podemos determinar todas las distribuciones condicionales y simular de ellas.

Ejemplificaremos el muestreador de Gibbs con el ejemplo de las proporciones, a pesar de no ser necesario en este caso.

Comenzamos identificando las distribuciones condicionales posteriores para cada parámetro:

p(θ1|θ2,x)=p(θ1,θ2|x)/p(θ2|x) =p(θ1,θ2|x)p(θ1,θ2|x)dθ1

Usando iniciales beta(a1,b1) y beta(a2,b2), obtenemos:

p(θ1|θ2,x)=beta(θ1|z1+a1,N1z1+b1)beta(θ2|z2+a2,N2z2+b2)beta(θ1|z1+a1,N1z1+b1)beta(θ2|z2+a2,N2z2+b2)dθ1 =beta(θ1|z1+a1,N1z1+b1)beta(θ2|z2+a2,N2z2+b2)beta(θ2|z2+a2,N2z2+b2) =beta(θ1|z1+a1,N1z1+b1)

Debido a que la posterior es el producto de dos distribuciones Beta independientes es claro que p(θ1|θ2,x)=p(θ1|x).

Una vez que determinamos las distribuciones condicionales, simplemente hay que encontrar una manera de obtener muestras de estas, en R podemos usar la función rbeta.

Si comparamos los resultados del muestreador de Gibbs con los de Metrópolis notamos que las estimaciones son muy cercanas

También podemos comparar los sesgos de las dos monedas, esta es una pregunta más interesante.

La principal ventaja del muestreador de Gibbs sobre el algoritmo de Metrópolis es que no hay necesidad de seleccionar una distribución propuesta y no hay que lidiar con lo ineficiente de rechazar valores. A cambio, debemos ser capaces de derivar las probabilidades condicionales de cada parámetro y de generar muestras de estas.

Ejemplo: Normal

Retomemos el caso de observaciones normales, supongamos que tengo una muestra x1,...,xN de observaciones independientes e identicamente distribuidas, con xiN(μ,σ2), veremos el caso de media desconocida, varianza desconocida y de ambas desconocidas.

Normal con media desconocida. Supongamos que σ2 es conocida, por lo que nuestro parámetro de interés es únicamente μ entonces si describo mi conocimiento inicial de μ a través de una distribución normal: μN(m,τ2) resulta en una distribución posterior: μ|xN(σ2σ2+Nτ2m+Nτ2σ2+Nτ2x¯,σ2τ2σ2+Nτ2)

Normal con varianza desconocida. Supongamos que μ es conocida, por lo que nuestro parámetro de interés es únicamente σ2. En este caso una distribución conveniente para describir nuestro conocimiento inicial es la distribución Gamma Inversa.

La distribución Gamma Inversa es una distribución continua con dos parámetros y que toma valores en los positivos. Como su nombre lo indica, esta distribución corresponde al recírpoco de una variable cuya distribución es Gamma, recordemos que si xGamma(α,β) entonces:

p(x)=1βαΓ(α)xα1ex/β

donde x>0. Ahora si y es la variable aleatoria recírpoco de x entonces:

p(y)=βαΓ(α)yα1expβ/y

con media βα1 y varianza β2(α1)2(α2).

Debido a la relación entre las distribuciones Gamma y Gamma Inversa, podemos utilizar la función rgamma de R para generar valores con distribución gamma inversa.

Volviendo al problema de inferir acerca del parámetros σ2, si resumimos nuestro conocimiento inicial a través de una distribución Gamma Inversa tenemos p(σ2)=βαΓ(α)1(σ2)α+1eβ/σ2

la verosimiltud: p(x|μ,σ2)=1(2πσ2)N/2exp(12σ2j=1N(xjμ)2)

y calculamos la posterior:

p(σ2)p(x|μ,σ2)p(σ2)

obtenemos que σ2|xGI(N/2+α,β+1/2(xiμ)2).

Por tanto tenemos que la inicial Gamma con verosimilitud Normal es una familia conjugada.

Ejemplo: Normal con media y varianza desconocidas

Sea θ=(μ,σ2) especificamos la siguiente inicial para θ: p(θ)=N(μ|m,τ2)IG(σ2|α,β) suponemos hiperparámetros m,τ2,α,β conocidos. Entonces, la distribución posterior es: p(θ|x)p(x|θ)p(θ) =1(σ2)N/2exp(12σ2i=1N(xiμ)2)exp(12τ2(μm)2))1(σ2)α+1exp(βσ2)

en esta última distribución no reconocemos el núcleo de niguna distribución conocida (existe una distribución normal-gamma inversa) pero si nos concenteramos únicamente en los términos que involucran a μ tenemos:

exp(12(μ2(Nσ2+1τ2)2μ(i=1nxiσ2+mτ2)))

esta expresión depende de μ y σ2, sin embargo condicional a σ2 observamos el núcleo de una distribución normal,

μ|σ2,xN(nτ2nτ2+σ2x¯+σ2Nτ2+σ2m,τ2σ2nτ2+σ2) Si nos fijamos únicamente en los tárminos que involucran a σ2 tenemos:

1(σ2)N/2+α+1exp(1σ2(i=1N(xiμ)22+β))

y tenemos

σ2|μ,xGI(N2+α,i=1n(xiμ)22+β) Obtenemos así las densidades condicionales completas p(μ|σ2,x) y p(σ2|μ,x) cuyas distribuciones conocemos y de las cuales podemos simular.

Implementaremos un muestreador de Gibbs.

Comenzamos definiendo las distrbuciones iniciales:

  • μN(1.5,16), esto es m=1.5 y τ2=16.

  • σ2GI(3,3), esto es α=β=3.

Ahora supongamos que observamos 20 realizaciones provenientes de la distribución de interés:

Escribimos el muestreador de Gibbs.

Algunos resúmenes de la posterior:

Predicción. Para predecir el valor de una realización futura y recordemos que:

p(y)=p(y|θ)p(θ|x)dθ

Por tanto podemos aproximar la distribución predictiva posterior como:

¿Cuál es la probabilidad de que una observación futura sea mayor a 8?

En estadística bayesiana es común parametrizar la distribución Normal en términos de precisión (el inverso de la varianza). Si parametrizamos de esta manera ν=1/σ2 podemos repetir el proceso anterior con la diferencia de utilizar la distribución Gamma en lugar de Gamma inversa.

Conclusiones y observaciones Metrópolis y Gibbs

  • Una generalización del algoritmo de Metrópolis es Metrópolis-Hastings.

    El algoritmo de Metropolis es como sigue:
    1. Generamos un punto inicial tal que p(θ)>0.
    2. Para t=1,2,...
      • Se propone un nuevo valor θpropuesto con una distribución propuesta g(θpropuesta|θactual) es común que g(θpropuesta|θactual) sea una normal centrada en θactual.
    3. Calculamos pmover=min(p(θpropuesta)p(θactual),1) y aceptamos θpropuesta con probabilidad pmover. Es así que el algorito requiere que podamos calcular el cociente en pmover para todo θactual y θpropuesta, así como simular de la distribución propuesta g(θpropuesta|θactual), adicionalmente debemos poder generar valores uniformes para decidir si aceptar/rechazar. En el caso de Metropolis un requerimiento adicional es que la distribución propuesta g(θa|θb) debe ser simétrica, es decir g(θa|θb)=g(θb|θa) para todo θa, θb.

    Metropolis-Hastings generaliza Metropolis, eliminando la restricción de simetría en la distribución propuesta g(θa|θb), sin embargo para corregir por esta asimetría debemos calcular pmover como sigue: pmover=min(p(θpropuesta)/g(θpropuesta|θactual)p(θactual)/g(θactual|θpropuesta),1) La generalización de Metrópolis-Hastings puede resultar en algoritmos más veloces.

  • Se puede ver Gibbs como una generalización de Metropolis, cuando estamos actualizando un componente de los parámetros, la distribución propuesta es la distribución posterior para ese parámetro, por tanto siempre es aceptado.

  • En el caso de modelos complicados se utilizan combinaciones de Gibbs y Metropolis. Cuando se consideran estos dos algoritmos Gibbs es un método más simple y es la primera opción para modelos condicionalmente conjugados. Sí solo podemos simular de un subconjunto de las distribuciones condicionales posteriores, entonces podemos usar Gibbs siempre que se pueda y Metropolis unidimensional para el resto, o de manera más general separamos en bloques, un bloque se actualiza con Gibbs y otro con Metrópolis.

  • El algoritmo de Gibbs puede atorarse cuando hay correlación alta entre los parámetros, reparametrizar puede ayudar, o se pueden usar otros algoritmos que veremos más adelante.