close Warning: Can't synchronize with repository "(default)" (/var/svn/mms does not appear to be a Subversion repository.). Look in the Trac log for more information.

Opened 14 years ago

Closed 13 years ago

#551 closed enhancement (fixed)

Posterior Burn-In

Reported by: atorre Owned by: Pedro Gea
Priority: blocker Milestone: Release 0.6
Component: Results Keywords: estimation, results, convergencia, burnin, posterior, simulación
Cc:

Description (last modified by Pedro Gea)

Hola MMS,
en ocasiones la convergencia de los parámetros estimados con estrategia BSR se alcanza después de muchas simulaciones (adjunto un gráfico de una cadena de un parámetro que converge a partir de la simulación 10,000). En este momento, surge la necesidad para el usuario de poder elegir el rango de simulación (o a partir de qué simulación) que debe ser utilizado en la generación de resultados.

Este ticket no intenta resolver el problema de la determinación del momento en que una cadena (más bien todas las cadenas) converge. Eso supongo que surgirá en otro ticket. Simplemente, trata de facilitar la gestión de los resultados de la estimación.

Attachments (1)

cadena.gif (71.4 KB) - added by atorre 14 years ago.
Cadena de un parámetro que converge en la simulación 10,000 de 20,000

Download all attachments as: .zip

Change History (12)

Changed 14 years ago by atorre

Attachment: cadena.gif added

Cadena de un parámetro que converge en la simulación 10,000 de 20,000

comment:1 Changed 14 years ago by atorre

Relacionado con #542

comment:2 Changed 13 years ago by atorre

Priority: majorblocker
sensitive: 0
Summary: Posterior BurningPosterior Burnin

comment:3 Changed 13 years ago by atorre

Keywords: burnin added; burning removed
Milestone: NextRelease 0.6
version: 0.6

¿No se puede resolver en la 0.6?

comment:4 Changed 13 years ago by Pedro Gea

Description: modified (diff)

Se decidió aplazarlo a un hito futuro, en realidad hay 100 (32+68) tiques por delante y estaba en un grupo con otros 93 tiques más. Pero se puede reconsiderar.

Para más detalles sobre la organización del tratamiento de lo tiques véase el roadmap.

  • Release 0.6: hito de mantenimiento de la versión actual: bugs, tareas incompletas.
  • Development 1A: hito de nuevos desarrollos.
  • Next: hito con próximos desarrollos a ubicar en el siguiente hito "Development X".
  • Future: hito con desarrollo posteriores.

comment:5 Changed 13 years ago by atorre

Por si ayuda, sigue una función que corta las cadenas de una estimación:


NameBlock MMS_PosteriorBurnin(NameBlock est, Real simDesde, Real simHasta)

{

NameBlock str = est::GetStrategy(?);
Text subCla = str::GetSubclass(?);
Si no es BSR, salir
If(subCla != "MMS::@StrategyBSR", est,
{

Real sampLen = str::GetSetting("mcmc.sampleLength");
Real simDes = If(IsUnknown(simDesde), 0, simDesde);
Real simHas = If(IsUnknown(simHasta), sampLen, Min(sampLen, simHasta));
Set newParams = EvalSet(est::GetParameters(?), Anything(Anything param)
{

Text gram = Grammar(param);
If(gram == "Real", param,
{

Set experiments = param::GetExperiments(?);
Set subExper = ExtractByIndex(experiments, Range(simDes,simHas,1));
PutName(Name(param), RandVar::@Real.Sample::Default(subExper))

})

});
Real est::SetVersion(est::GetVersion(?) +"_PB");
Real est::SetResults(newParams);
est

})

};

comment:6 Changed 13 years ago by atorre

Por si ayuda, sigue una función que corta las cadenas de una estimación:

//////////////////////////////////////////////////////////////////////////////
NameBlock PRCoCo.PosteriorBurnin(NameBlock est, Real simDesde, Real simHasta)
//////////////////////////////////////////////////////////////////////////////
{
  NameBlock str = est::GetStrategy(?);
  Text subCla = str::GetSubclass(?); // 
  // Si no es BSR, salir
  If(subCla != "MMS::@StrategyBSR", est,
  {
    Real sampLen = str::GetSetting("mcmc.sampleLength");
    Real simDes  = If(IsUnknown(simDesde), 0, simDesde);
    Real simHas  = If(IsUnknown(simHasta), sampLen, Min(sampLen, simHasta));
    Set newParams = EvalSet(est::GetParameters(?), Anything(Anything param)
    {
      Text gram = Grammar(param);
      If(gram == "Real", param,
      {
        Set experiments = param::GetExperiments(?);
        Set subExper    = ExtractByIndex(experiments, Range(simDes,simHas,1));
        PutName(Name(param), RandVar::@Real.Sample::Default(subExper))
      })
    });
    Real est::SetVersion(est::GetVersion(?) +"_PB");
    Real est::SetResults(newParams);
    est
  })
};

comment:7 Changed 13 years ago by atorre

Perdón, he subido una versión anterior de la función. Ahora sí (espero):

//////////////////////////////////////////////////////////////////////////////
NameBlock MMS_PosteriorBurnin(NameBlock est, Real simDesde, Real simHasta)
//////////////////////////////////////////////////////////////////////////////
{
  NameBlock str = est::GetStrategy(?);
  Text subCla = str::GetSubclass(?); // 
  // Si no es BSR, salir
  If(subCla != "BSR", est,
  {
    Real sampLen = str::GetSetting("mcmc.sampleLength");
    Real simDes  = If(IsUnknown(simDesde), 0, simDesde);
    Real simHas  = If(IsUnknown(simHasta), sampLen, Min(sampLen, simHasta));
    Set newParams = EvalSet(est::GetParameters(?), Anything(Anything param)
    {
      Text gram = Grammar(param);
      If(gram == "Real", param,
      {
        Set experiments = param::GetExperiments(?);
        Set subExper    = ExtractByIndex(experiments, Range(simDes,simHas,1));
        PutName(Name(param), RandVar::@Real.Sample::Default(subExper))
      })
    });
    Real est::SetVersion(est::GetVersion(?) +"_PB");
    Real est::SetResults(newParams);
    est
  })
};

comment:8 Changed 13 years ago by Pedro Gea

(In [2953]) Se revisan los nombres y argumentos de los métodos que permiten aplicar el burn-in a los resultados.
Véanse también los cambios [2950], [2951] y [2952].
Refs #551

comment:9 Changed 13 years ago by Pedro Gea

(In [2954]) Se incrementa la versión de RandVar.
Se sustituye el uso de SubCol por Sub, más eficiente.
Refs #551

comment:10 Changed 13 years ago by Pedro Gea

Summary: Posterior BurninPosterior Burn-In

comment:11 Changed 13 years ago by Pedro Gea

Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.