186 | | ni los propios bloques tengan que conocer los intríngulis de los demás. Este protocolo formaría |
187 | | parte de la definición del master y tendría la forma de una tabla con la estructura básica de |
188 | | enlace entre variables, que en cada fila incluiría estos campos: [[BR]] |
| 186 | ni los propios bloques tengan que conocer los intríngulis de los demás, y sea al mismo tiempo |
| 187 | suficientemente eficaz. Hay que tener en cuenta que la acción a llevar a cabo para condicionar |
| 188 | puede suponer desde modificar simplemente un valor escalar (como la sigma de un bloque de |
| 189 | regresión lineal normal), hasta modificar total o parcialmente un valor vectorial o matricial, |
| 190 | (como ocurre en el caso de los omitidos que deben trasladarse a un subconjunto arbitrariamente |
| 191 | salteado de entre las celdas de la matriz de input o de output). Por este motivo no resulta |
| 192 | ni mucho menos trivial condicionar de una forma genérica y eficiente. |
| 193 | Posiblemente sea necesaria una función C++ a la que se le pase el miembro a modificar, los nuevos |
| 194 | valores y una serie de argumentos opcionales para especificar modificaciones parciales, para |
| 195 | que la acción se ejecute con la celeridad debida. |
| 196 | {{{ |
| 197 | #!java |
| 198 | Real ChangeValues({Real|Matrix|VMatrix} store, {Real|Matrix|VMatrix} newValues [, Set optArgs=Empty] ) |
| 199 | }}} |
| 200 | La función {{{ChangeValues}}} será llamada desde el master para establecer, total o parcialmente según |
| 201 | se indique en los argumentos opcionales {{{optArgs}}}, el nuevo valor o vector de valores {{{newValues}}} |
| 202 | de cierto miembro de un bloque que será el dado por el argumento {{{store}}}. |
| 203 | En la definición del master, el protocolo tendría la forma de una tabla con la estructura básica de |
| 204 | condicionamiento, que en cada fila incluiría la información de condicionamiento de una variable o |
| 205 | grupo de variables: [[BR]] |
190 | | id_cnr_blk : índice del bloque condicionador |
191 | | id_cnr_var : índice de la variable condionadora |
192 | | id_cnd_blk : índice del bloque condicionado |
193 | | id_cnd_var : índice de la variable condionada |
| 207 | Real cnr_blk : Índice del bloque condicionador |
| 208 | Set cnr_idx : Índices de los parámetros del grupo dentro del bloque condicionador |
| 209 | Real cnd_blk : Índice del bloque condicionado |
| 210 | Text cnd_mbr : Nombre del miembro del bloque condicionado que se ha de modificar con {{{ChangeValues}}} |
| 211 | Set cnd_opt : Argumentos opcionales para pasar como {{{optArgs}}} a {{{ChangeValues}}} |
195 | | Cada vez que se genera una muestra del i-ésimo bloque se debe modificar los valores correspondientes |
196 | | a los enlaces para los que id_cnr_blk = i |
197 | | * Generación dentro de cada bloque tipo ''Metropolis-Hastings'' y derivados mediante BysSampler o |
| 213 | Cada vez que se genera una muestra del i-ésimo bloque hay que modificar los valores correspondientes |
| 214 | a los enlaces para los que {{{cnr_blk = i}}}. Primero habría que copiar el sub-vector del bloque recién |
| 215 | generado en la posición correspondiente dentro del vector conjunto, que será el que se almacene en |
| 216 | el disco como cadena MCMC. Luego habría que llevar a cabo el condicionamiento de cada uno de los bloques |
| 217 | afectados llamando a {{{ChangeValues}}}. |
| 218 | * Generación dentro de cada bloque tipo ''Metropolis-Hastings'' y derivados mediante {{{BysSampler}}} o |