close Warning: Can't synchronize with repository "(default)" (/var/svn/tolp does not appear to be a Subversion repository.). Look in the Trac log for more information.

Changes between Version 7 and Version 8 of OfficialTolArchiveNetworkBysSampler


Ignore:
Timestamp:
Nov 4, 2010, 10:02:30 AM (14 years ago)
Author:
Víctor de Buen Remiro
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • OfficialTolArchiveNetworkBysSampler

    v7 v8  
    6363
    6464=== {{{Class @AcceptReject }}} ===
    65 La clase {{{@AcceptReject : @Generic}}} sirve de base a todos los métodos en los que se genera un candidato [[LatexEquation( y )]] según una función de transición a partir de la última muestra [[LatexEquation( x )]] con densidad [[LatexEquation( Q\left(x,y\right) )]]. Luego ese candidato puede ser aceptado o rechazado según cierto criterio. Si se acepta se añadirá [[LatexEquation( y )]] a la cadena de Markov y si se rechaza se volverá a añadir el mismo [[LatexEquation( x )] anterior.
     65La clase {{{@AcceptReject : @Generic}}} sirve de base a todos los métodos en los que se genera un candidato [[LatexEquation( y )]] según una función de transición a partir de la última muestra [[LatexEquation( x )]] con densidad [[LatexEquation( Q\left(x,y\right) )]]. Luego ese candidato puede ser aceptado o rechazado según cierto criterio definido por una fórmula que retorna un valor crítico de aceptación
     66
     67[[LatexEquation( \alpha \in \left[0,1\right] )]]
     68
     69Por último se genera una uniforme
     70
     71[[LatexEquation( r \sim U\left[0,1\right] )]]
     72
     73y si resulta que [[LatexEquation( r \le \alpha )]] entonces se acepta el candidato, en cuyo caso se añadirá [[LatexEquation( y )]] a la cadena de Markov. Si se rechaza se volverá a añadir el mismo [[LatexEquation( x )]] anterior.
     74
     75Para que un método de este tipo converja efectivamente a la distribución objetivo la cadena de Markov debe ser reversible, es decir, la función de transición debe cumplir la ecuación de balance detallado (''[http://en.wikipedia.org/wiki/Detailed_balance detailed balance]'')
     76
     77[[LatexEquation( \pi\left(x\right) Q\left(x,y\right) = \pi\left(y\right) Q\left(y,x\right) )]]
    6678
    6779==== {{{Class @RandWalk }}} ====
    6880
    69 La clase {{{@RandWalk : @AcceptReject}}} genera los candidatos como un paseo aleatorio en el que en cada paso se da un salto desde el último punto aceptado a otro de su entorno mediante una normal multidimensional [[LatexEquation( Q\left(x,y\right) : y \sim N\left(x,\Sigma\right) )]].
     81La clase {{{@RandWalk : @AcceptReject}}} genera los candidatos como un paseo aleatorio en el que en cada paso se da un salto desde el último punto aceptado a otro de su entorno mediante una normal multidimensional
    7082
    71 Por defecto se tomará [[LatexEquation( \Sigma\ = s^2 I_n )]] donde el tamaño de paso (''step size'') será modificado en cada iteración de forma que el ratio de aceptación {{{Real @Generic::acceptRatio}}} se acerque lo más posible a un valor óptimo o deseado {{{Real @AcceptReject::acceptRatio.target}}} dependiente de cada método.
     83[[LatexEquation( Q\left(x,y\right) : y \sim N\left(x,\Sigma\right) )]].
     84
     85Por defecto se tomará
     86
     87[[LatexEquation( \Sigma\ = s^2 I_n )]]
     88
     89donde el tamaño de paso (''step size'') será modificado en cada iteración de forma que el ratio de aceptación {{{Real @Generic::acceptRatio}}} se acerque lo más posible a un valor óptimo o deseado {{{Real @AcceptReject::acceptRatio.target}}} dependiente de cada método.
    7290
    7391=== {{{Class @MetHas }}} ===
    74 La clase {{{@MetHas : @AcceptReject}}} implementa el más simple de los métodos de simulación vectorial: el método [http://en.wikipedia.org/wiki/Metropolis%E2%80%93Hastings_algorithm Metropolis-Hastings], que puede ser muy eficiente cuando no hay muchas variables y estas no están muy correlacionadas.
     92La clase {{{@MetHas : @AcceptReject}}} implementa el más simple de los métodos de simulación vectorial: el método [http://en.wikipedia.org/wiki/Metropolis%E2%80%93Hastings_algorithm Metropolis-Hastings], que puede ser muy eficiente cuando no hay muchas variables y estas no están muy correlacionadas. El valor crítico de aceptación de este método se calcula como
     93
     94[[LatexEquation( \alpha = \min \left\{ 1, \frac{ \pi\left( y \right) Q\left( x, y \right) }{ pi\left( x \right) Q\left( y, x \right) } \right\} $$)]]
    7595
    7696==== {{{Class @MetHas.RandWalk }}} ====
    77 Si se hereda de {{{@RandWalk}}} y {{{@MetHas}}} al mismo tiempo se obtiene la modalidad más usual: el método Random Walk Metropolis-Hastings (RWMH). En este caso se tiene una fórmula que da el óptimo ratio de aceptación propuesta en el artículo [http://projecteuclid.org/DPubS/Repository/1.0/Disseminate?view=body&id=pdf_1&handle=euclid.ss/1015346320 Optimal scaling for various Metropolis-Hastings algorithms (''Gareth O. Roberts and Jeffrey S. Rosenthal'')]
     97Si se hereda de {{{@RandWalk}}} y {{{@MetHas}}} al mismo tiempo se obtiene la modalidad más usual: el método Random Walk Metropolis-Hastings (RWMH).
    7898
    79 [[LatexEquation( \alpha_n = 0.234 + 0.266*e^{1-n} $$)]]
     99[[LatexEquation( \alpha = \min \left\{ 1, \frac{ \pi\left( y \right)  }{ \pi\left( x \right)  \right\} $$)]]
     100
     101En este caso se tiene una fórmula que da el óptimo ratio de aceptación propuesta en el artículo [http://projecteuclid.org/DPubS/Repository/1.0/Disseminate?view=body&id=pdf_1&handle=euclid.ss/1015346320 Optimal scaling for various Metropolis-Hastings algorithms (''Gareth O. Roberts and Jeffrey S. Rosenthal'')]
     102
     103[[LatexEquation( \alpha^{MH}_n = 0.234 + 0.266*e^{1-n} $$)]]
    80104
    81105
    82106=== {{{Class @MulTryMet}}} ===
    83 La clase {{{@MulTryMet: @AcceptReject}}} implementa el método [http://en.wikipedia.org/wiki/Multiple-try_Metropolis Multiple Try Metropolis (MTM)] basado en generar varios pre-candidatos cada vez y seleccionar uno de ellos de forma también aleatoria pero premiando a los más prometedores según un criterio predefinido mediante una función de pesos producto de la densidad objetivo, densidad de transición de los precandidatos y una función de transición positiva y simétrica llamada [[LatexEquation( \lambda \left( x,y \right) $$)]]
     107La clase {{{@MulTryMet: @AcceptReject}}} implementa el método [http://en.wikipedia.org/wiki/Multiple-try_Metropolis Multiple Try Metropolis (MTM)] basado en generar un número [[LatexEquation( k $$)]] de precandidatos [[LatexEquation( y_1 \dots y_k $$)]] según la ley [[LatexEquation( Q\left(x,y_j\right) )]] de entre los que se selecciona el candidato propiamente dicho.
     108
     109En primer lugar se debe definir una función de pesos producto de la densidad objetivo, la densidad de transición de los precandidatos y una función de transición positiva y simétrica llamada [[LatexEquation( \lambda \left( x,y \right) $$)]]
    84110
    85111[[LatexEquation( w\left( x,y \right) = \pi\left( y \right) Q\left( x,y \right)\lambda \left( x,y \right) $$)]]
     112
     113Una vez generados los precandidatos, la selección del candidato [[LatexEquation( y $$)]] se hace de forma aleatoria proporcional a los pesos [[LatexEquation( w\left( y_j, x \right)  $$)]]
     114
     115Posteriormente se generan de forma recíproca los puntos [[LatexEquation( x_1 \dots x_{k-1} $$)]] según la ley [[LatexEquation( Q\left(y,x_j\right) )]] y se añade a la lista el punto de origen actual [[LatexEquation( x_k = x $$)]]. El valor crítico de aceptación se sitúa entonces en
     116
     117[[LatexEquation( \alpha = \min \left\{ 1, \frac{ \sum {w\left( y_j, x \right)} }{ \sum {w\left( x_j, y \right)} } \right\} $$)]]
     118
    86119
    87120Con una buena selección del número [[LatexEquation( k $$)]] de precandidatos y de la función  [[LatexEquation( \lambda \left( x,y \right) $$)]] se puede mejorar bastante la convergencia y disminuir la autocorrelación de la cadena con respecto al método [http://en.wikipedia.org/wiki/Metropolis%E2%80%93Hastings_algorithm Metropolis-Hastings], Evidentemente esto sucede a costa de un mayor numero de evaluaciones de la densidad por lo que no es trivial determinar el valor óptimo de [[LatexEquation( k $$)]].
     
    96129Hasta el momento no se ha podido encontrar una fórmula del ratio de aceptación óptimo análoga a la de Roberts-Rosenthal para el método Metrópolis-Hastings, o al menos el que escribe no tiene noticias de su existencia, por lo que se ha recurrido a una fórmula que heurísticamente da buenos resultados
    97130
    98 [[LatexEquation( \alpha_n_k = 1-(1-\alpha_n)^k $$)]]
     131[[LatexEquation( \alpha^{MTM}_{n,k} = 1-(1-\alpha^{MH}_n)^k $$)]]
    99132
    100133Esta fórmula sería óptima si la eficiencia de una cadena de [[LatexEquation( M $$)]] simulaciones con el método MTM con [[LatexEquation( k $$)]] precandidatos fuera exactamente la misma que la de una cadena de [[LatexEquation( k M $$)]] simulaciones con el método MH. Esto no se tiene porqué cumplir pero tampoco deberían ser muy distintas las eficiencias por lo que puede ser una aproximación suficiente, sobretodo teniendo en cuenta que basta con que el escalado no esté muy alejado del óptimo para que los resultados obtenidos sean muy parecidos.