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

Closed 16 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 17 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 16 years ago by Víctor de Buen Remiro

Resolution: → fixed
Status: new → closed
Note: See TracTickets for help on using tickets.