Opened 15 years ago
Closed 15 years ago
#813 closed defect (fixed)
Bugs in _partialSampler.tol
Reported by: | Owned by: | Víctor de Buen Remiro | |
---|---|---|---|
Priority: | highest | Milestone: | BSR API |
Component: | Math | Version: | |
Severity: | critical | Keywords: | |
Cc: |
Description
Intentando hacer una estimación con parámetros fijos con BSR, obtenía errores y mirando el código de _partialSampler.tol me ha parecido encontrar tres errores:
(1) En el bloque para filtrar los parámetros fijos, se hace erróneamente para el caso en el que no haya: línea 196.
Sobre la admiración (el NOT), se ve claro al comprarlo con la línea 209.
(2) En ese mismo bloque sería necesario redefinir el atributo _.fixedValues para su uso posterior, ya que no se redefine en ningún sitio.
Haría falta algo como:
VMatrix _.fixedValues := SubRow(_.mcmcPartialHandler::_.fixedValues, fixedParamAux);
entre las líneas 201 y 202.
(3) Tras solucionar estos dos, se encuentra un error del tipo:
ERROR: [1] No es posible aplicar MergeRows Number of columns (1) is not equal to previous one (0) for item number 2
en el método mergeWithFreeSample (línea 284).
Parece cosa de los argumentos que enviamos a MergeRows.
En mi caso las matrices _.reloadValues y _.reloadParamIdx deberían estar vacías, pero una es una 0x0 y la otra una 0x1, probablemente el error se deba a eso, pero no entiendo bien qué hace MergeRows y por tanto no entiendo bien sus mensajes de error.
Attachments (1)
Change History (6)
comment:1 Changed 15 years ago by
comment:2 Changed 15 years ago by
Status: | new → accepted |
---|
Por favor, adjunta la definición del modelo para poder reprodocirlo.
comment:3 Changed 15 years ago by
Creo que el error no depende del modelo, pero bueno...
Te adjunto un modelo y basta con crear un Cycler usando un PartialHandler con algún parámetro constante como el caso siguiente:
BysMcmc::@Cycler cycler = BysMcmc::Bsr::Gibbs::GetCyclerFromParsed( Set BSR.Parse(<path>/master.bsr,"master"); NameBlock BysMcmc::@McmcPartialHandler::New( Set [[ "Veh.Tur.Mat__Pib.es.Men.Deg0.Coef" ]], VMatrix SetCol([[ 1.018 ]]), Set Copy(Empty), NameBlock BysMcmc::@McmcReloader::Null(?) ); NameBlock BysMcmc::@Config::Default(?); NameBlock BysMcmc::@Notifier::Null(?) );
Changed 15 years ago by
Attachment: | Ejemplo.zip added |
---|
comment:4 Changed 15 years ago by
De acuerdo. Hay alguna cosa más como poner nombre a los textos que definen las variables fijadas para poder indexarlas por nombre.
He estado mirando y resulta que todos los tests que hice eran para el caso de recarga las variables, que es lo complicado, y ninguno para fijarlas que es lo sencillo. Por eso se me había pasado.
comment:5 Changed 15 years ago by
Resolution: | → fixed |
---|---|
Status: | accepted → closed |
Creo que ya entiendo el error (3).
Resulta que el método reloadSimulation (archivo _recover.tol) usa un SubCol
con el problema que arrastra esta función y su "traspuesta" SubRow
al tratar asuntos como:
SubCol(matrix_5x5, Empty) da matrix_0x0 cuando debería matrix_5x0