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 13 years ago

Closed 13 years ago

Last modified 13 years ago

#1573 closed defect (fixed)

Errores tras los últimos cambios en BysMcmc

Reported by: Pedro Gea Owned by: Pedro Gea
Priority: high Milestone: Mantainance
Component: Kernel Version: 3.1
Severity: critical Keywords:
Cc:

Description

La última versión de BysMcmc (BysMcmc.6.8) produce errores al final de la estimación, donde antes no los había.

No sé si simplemente con las siguientes trazas (y saber que se debe a un cambio reciente) es suficiente para localizar el bug:

Warning: [4] <W>Imposible restar dos matrices de dimensiones (1,12) y (12,1).</W>


[Call stack]
  [8] Real cycler::cycler::cycler::cycler::sampler::master::_.arm.blk::blk::useStore (Matrix values)
  [7] Real cycler::cycler::cycler::cycler::sampler::master::_.arm.blk::blk::setStore (Matrix values)
  [6] Real cycler::cycler::cycler::cycler::sampler::master::setStore.blocks (Matrix values_)
  [5] Real cycler::cycler::cycler::cycler::sampler::master::setStore (Matrix values)
  [4] Set cycler::cycler::cycler::cycler::sampler::master::eval (Matrix values)
  [3] Real results::estim::Run (Real void)
  [2] Real estBSR::estimation::strategy::strategyBSR::Execute (Real void)
  [1] Real estBSR::estimation::estimation::estimation::Execute (Real void)

Warning: [5] [Case] la función de condición no puede devolver valores desconocidos.

[Call stack]
  [8] Real cycler::cycler::cycler::cycler::sampler::master::_.arm.blk::blk::useStore (Matrix values)
  [7] Real cycler::cycler::cycler::cycler::sampler::master::_.arm.blk::blk::setStore (Matrix values)
  [6] Real cycler::cycler::cycler::cycler::sampler::master::setStore.blocks (Matrix values_)
  [5] Real cycler::cycler::cycler::cycler::sampler::master::setStore (Matrix values)
  [4] Set cycler::cycler::cycler::cycler::sampler::master::eval (Matrix values)
  [3] Real results::estim::Run (Real void)
  [2] Real estBSR::estimation::strategy::strategyBSR::Execute (Real void)
  [1] Real estBSR::estimation::estimation::estimation::Execute (Real void)

Warning: [6] <W>Imposible restar dos matrices de dimensiones (1,12) y (12,1).</W>


[Call stack]
  [9] Real cycler::cycler::cycler::cycler::sampler::master::_.arm.blk::blk::useStore (Matrix values)
  [8] Real cycler::cycler::cycler::cycler::sampler::master::_.arm.blk::blk::setStore (Matrix values)
  [7] Real cycler::cycler::cycler::cycler::sampler::master::setStore.blocks (Matrix values_)
  [6] Real cycler::cycler::cycler::cycler::sampler::master::setStore (Matrix values)
  [5] Set cycler::cycler::cycler::cycler::sampler::master::_eval (Matrix values, Real useTimeInfo, Real justWithTimeInfo)
  [4] Set cycler::cycler::cycler::cycler::sampler::master::eval (Matrix values)
  [3] Real results::estim::Run (Real void)
  [2] Real estBSR::estimation::strategy::strategyBSR::Execute (Real void)
  [1] Real estBSR::estimation::estimation::estimation::Execute (Real void)

Warning: [7] [Case] la función de condición no puede devolver valores desconocidos.

[Call stack]
  [9] Real cycler::cycler::cycler::cycler::sampler::master::_.arm.blk::blk::useStore (Matrix values)
  [8] Real cycler::cycler::cycler::cycler::sampler::master::_.arm.blk::blk::setStore (Matrix values)
  [7] Real cycler::cycler::cycler::cycler::sampler::master::setStore.blocks (Matrix values_)
  [6] Real cycler::cycler::cycler::cycler::sampler::master::setStore (Matrix values)
  [5] Set cycler::cycler::cycler::cycler::sampler::master::_eval (Matrix values, Real useTimeInfo, Real justWithTimeInfo)
  [4] Set cycler::cycler::cycler::cycler::sampler::master::eval (Matrix values)
  [3] Real results::estim::Run (Real void)
  [2] Real estBSR::estimation::strategy::strategyBSR::Execute (Real void)
  [1] Real estBSR::estimation::estimation::estimation::Execute (Real void)

Change History (9)

comment:1 Changed 13 years ago by Víctor de Buen Remiro

Resolution: fixed
Status: newclosed

(In [4882]) Fixes #1573

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

Ya está, es no recordaba que una matriz se guarda como columna y otra como columna, y como tampoco pude probar nada por no poder subir el paquete pues ahí quedó esa porquería.

comment:3 Changed 13 years ago by Víctor de Buen Remiro

Acabo de subir el paquete 6.8 de nuevo.
He machacado el antiguo pues contenía este error.

comment:4 Changed 13 years ago by Pedro Gea

Resolution: fixed
Status: closedreopened

Por otro lado debe llamarse con las matrices de otro modo, porque ahora el error es:

[@BSR.ArimaBlock.Mat.Veh_BSR__1.0]  Preparing ARIMA block
  [@BSR.ArimaBlock.Mat.Veh_BSR__1.0]  Original data length = 839
  [@BSR.ArimaBlock.Mat.Veh_BSR__1.0]  Differenced data length = 767
  [@BSR.ArimaBlock.Mat.Veh_BSR__1.0]  ARMA parameters = 12
[@BlockSampler @BSR.ArimaBlock.Mat.Veh_BSR__1.0]  created with 12 parameters from 61 to 72

Warning: [1] <W>Imposible restar dos matrices de dimensiones (12,1) y (1,12).</W>


[Call stack]
  [11] Real useStore (Matrix values)
  [10] Real setStore (Matrix values)
  [9] NameBlock BysMcmc::Bsr::Gibbs::@BlockArima::New (Text name, Set NoiseDistrib, NameBlock mcmcPartialHandler, Real numBlock, Real firstCol, NameBlock config)
  [8] NameBlock BysMcmc::Bsr::Gibbs::@BsrMaster::New (Set modelDef, NameBlock mcmcPartialHandler, Real numBlock, Real firstCol, NameBlock config)
  [7] NameBlock BysMcmc::Bsr::Gibbs::GetCyclerFromParsed (Set parsed_, NameBlock mcmcPartialHandler, NameBlock config, NameBlock notifier)
  [6] NameBlock BysMcmc::Bsr::Gibbs::GetCyclerFromAscii (Text ascii_, Text moduleType, NameBlock mcmcPartialHandler, NameBlock config, NameBlock notifier)
  [5] NameBlock BysMcmc::Bsr::Gibbs::GetCycler (Anything modelDef, NameBlock mcmcPartialHandler, NameBlock config, NameBlock notifier)
  [4] NameBlock estBSR::estimation::strategy::strategyBSR::_BuildCycler (Anything void)
  [3] Real estBSR::estimation::strategy::strategyBSR::Prepare (Real void)
  [2] Real estBSR::estimation::strategy::strategyBSR::Execute (Real void)
  [1] Real estBSR::estimation::estimation::estimation::Execute (Real void)
[@BlockSampler @BSR.MissingBlock.Mat.Veh_BSR__1.0]  created with 0 parameters from 73 to 72
[@MasterSampler Mat.Veh_BSR__1.0]  created with 72 parameters from 1 to 72
[@StrategyBSR::_BuildCycler] Se comienza a estimar con los valores iniciales 
...

Lo que eran problema de restar una 1x12 con una 12x1, ahora es de restar una 12x1 con una 1x12.

comment:5 Changed 13 years ago by Pedro Gea

Owner: changed from Víctor de Buen Remiro to Pedro Gea
Status: reopenedaccepted

Le echo un vistazo al código con el ejemplo que tengo.

comment:6 Changed 13 years ago by Víctor de Buen Remiro

Por algún motivo que desconozco parece que pueden llegar matrices filas o columna.
Por ahora puedo solucionarlo fácilmente aunque tendré que ver porqué sucede y si tiene sentido o no.

comment:7 Changed 13 years ago by Víctor de Buen Remiro

El lío viene de que en la MCMC se almacenan como filas pero luego en las operaciones de matrices conviene que sean columnas.

No creo que haya ningún problema grave y es muy fácil de vadear.

comment:8 Changed 13 years ago by Víctor de Buen Remiro

Resolution: fixed
Status: acceptedclosed

(In [4889]) Fixes #1573

comment:9 Changed 13 years ago by Pedro Gea

Según se ve:

  • Las muestras de las cadenas crecen por filas, estando los parámetros por columnas.
  • Las v-matrices _.store son columnas (los parámetros están por filas).
  • Los métodos setStore reciben a veces matrices fila (los parámetros por columnas) y a veces matrices columna (los parámetros por fila).

Quizá podría revisarse todo un poco para ser más coherente y aplicar algún criterio como: en las matrices (Matrix) los parámetros van por columnas y en las v-matrices (VMatrix) van por filas.

Note: See TracTickets for help on using tickets.