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

#892 closed doubt (fixed)

Using a SigmaWeight = 0

Reported by: Pedro Gea Owned by: Víctor de Buen Remiro
Priority: normal Milestone:
Component: BSR Version:
Severity: major Keywords:
Cc:

Description

En algunos ejemplos al utilizar un sigmaWeight igual a 0, se encuentran errores inesperados.

Observando el código en: _sigmaBlock.tol (líneas 167 en adelante) se observa que el comportamiento límite cuando w->0 no coincide con w==0 ya que m0->1 en lugar de m0->0 por el uso de la función Max(1,...) (línea 181).

La duda está en si hay algo mal en esto, o si por el contrario hay una razón para ello. También surge la duda si esto explica los errores encontrados cuando se pide que la sigma2 inicial no tenga ninguna influencia (sigmaWeight=0).

¿Hay algún sitio donde se detalle cómo es el proceso de muestreo de la sigma2 y la influlencia y el significado de este sigmaWeight?

Change History (2)

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

La explicación está en el punto 3.3, página 24 del manual de BSR

En la línea 181 lo que hay es esto:

  Real m0 = If(!(sumSqr::m), 1, Max(1,Round(sumSqr::m*w/(1-w))));

Lo que se pretende es que si no se ha puesto explicitamente w==0 sino un 0<w<1 no se obtenga un m0==0 por culpa del redondeo. De esta forma se toma al menos m0=1 en el peor de los casos, para que el a priori tenga algún efecto por pequeño que sea, pues entiendo que eso estará más cerca de lo que pretendía expresar el usuario. Lo que sobra es el {{ If(!(sumSqr::m), 1 }}} puesto que igualmente daría 1 de todas formas. Eso es un residuo de un primer parche.

Ahora que me doy cuenta también habría que hacer un tratamiento especial en los valores demasiado cercanos a 1, pues si a alguien se le ocurriera establecer un w = 0.99999999999999999 , debido al uso de la aritmética discreta tendríamos un w/(1-w) infinito y cascaría todo; algo que por otra parte se merecería que le pasara al que lo escribiera, por retorcido, jeje. Pero bueno, para evitarlo basta con tomar internamente w=Min(w,1-Epsilon) cuando w<1

El caso w==0 en cambio no es opinable, significa de forma taxativa que el usuario no quiere aportar ningún tipo de a priori y hace lo que tiene que hacer, así que si hay algún error puede ser por dos cosas que se me ocurran ahora mismo:

  1. Que haya otro error en alguna parte de BSR que sale a la luz en estas circunstancias.
  2. Que el modelo no quede bien definido y haya alguna singularidad que el a priori deshace.

Si me pasas algún ejemplo en el que ocurra uno de esos errores inesperados podría analizar en qué caso estamos.

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

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