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.
- Timestamp:
-
Nov 4, 2010, 10:02:30 AM (14 years ago)
- Author:
-
Víctor de Buen Remiro
- Comment:
-
--
Legend:
- Unmodified
- Added
- Removed
- Modified
-
v7
|
v8
|
|
63 | 63 | |
64 | 64 | === {{{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. |
| 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 definido por una fórmula que retorna un valor crítico de aceptación |
| 66 | |
| 67 | [[LatexEquation( \alpha \in \left[0,1\right] )]] |
| 68 | |
| 69 | Por último se genera una uniforme |
| 70 | |
| 71 | [[LatexEquation( r \sim U\left[0,1\right] )]] |
| 72 | |
| 73 | y 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 | |
| 75 | Para 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) )]] |
66 | 78 | |
67 | 79 | ==== {{{Class @RandWalk }}} ==== |
68 | 80 | |
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) )]]. |
| 81 | 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 |
70 | 82 | |
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 | |
| 85 | Por defecto se tomará |
| 86 | |
| 87 | [[LatexEquation( \Sigma\ = s^2 I_n )]] |
| 88 | |
| 89 | 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. |
72 | 90 | |
73 | 91 | === {{{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. |
| 92 | 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. 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\} $$)]] |
75 | 95 | |
76 | 96 | ==== {{{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'')] |
| 97 | 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). |
78 | 98 | |
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 | |
| 101 | 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'')] |
| 102 | |
| 103 | [[LatexEquation( \alpha^{MH}_n = 0.234 + 0.266*e^{1-n} $$)]] |
80 | 104 | |
81 | 105 | |
82 | 106 | === {{{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) $$)]] |
| 107 | La 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 | |
| 109 | En 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) $$)]] |
84 | 110 | |
85 | 111 | [[LatexEquation( w\left( x,y \right) = \pi\left( y \right) Q\left( x,y \right)\lambda \left( x,y \right) $$)]] |
| 112 | |
| 113 | Una 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 | |
| 115 | Posteriormente 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 | |
86 | 119 | |
87 | 120 | Con 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 $$)]]. |
… |
… |
|
96 | 129 | Hasta 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 |
97 | 130 | |
98 | | [[LatexEquation( \alpha_n_k = 1-(1-\alpha_n)^k $$)]] |
| 131 | [[LatexEquation( \alpha^{MTM}_{n,k} = 1-(1-\alpha^{MH}_n)^k $$)]] |
99 | 132 | |
100 | 133 | Esta 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. |