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.

Opened 15 years ago

Closed 15 years ago

#813 closed defect (fixed)

Bugs in _partialSampler.tol

Reported by: pgea@… 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)

Ejemplo.zip (123.9 KB) - added by pgea@… 15 years ago.

Download all attachments as: .zip

Change History (6)

comment:1 Changed 15 years ago by pgea@…

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

comment:2 Changed 15 years ago by Víctor de Buen Remiro

Status: newaccepted

Por favor, adjunta la definición del modelo para poder reprodocirlo.

comment:3 Changed 15 years ago by pgea@…

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 pgea@…

Attachment: Ejemplo.zip added

comment:4 Changed 15 years ago by Víctor de Buen Remiro

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 Víctor de Buen Remiro

Resolution: fixed
Status: acceptedclosed

(In [1812]) Fixes #813

Note: See TracTickets for help on using tickets.