Opened 13 years ago
Last modified 13 years ago
#774 new enhancement
Prior de intervalo normalizado versus restricciones deterministas arbitrarias
Reported by: | vdebuen | Owned by: | Pedro Gea |
---|---|---|---|
Priority: | blocker | Milestone: | Next |
Component: | General | Keywords: | |
Cc: |
Description
En muchas ocasiones (ver #643 por ejemplo) me encuentro con modelos en los que hay docenas de variables con restricciones del tipo
0.347 <= x <= 0.361
No digo que no pueda darse el caso de que realmente se tenga que cumplir algo así de forma determinista, pero en todos los casos que me he encontrado lo que se quiere decir realmente es que, por algún motivo, más o menos acertado, el analista cree que el valor debería andar más o menos en ese rango de valores.
Este tipo de información difusa debería entrar como un prior probabilístico y no como algo determinista, a no ser que realmente existan razones de peso que lo justifiquen. Por ejemplo, una variable que indica una proporción debe estar entre 0 y 1 forzosamente, un porcentaje debe estar entre 0 y 100, etc.
La diferencia entre un diseño y otro es sustancial: confundir lo determinista con lo probabilista es de lo más grave que puede hacer un estadístico. Y me atrevo a decir que es una de las causas principales de deterioro de un modelo en producción, pues además de que pone en graves problemas al simulador que se queda con una región factible demasiado estrecha, suele dar lugar a distribuciones a posteriori prácticamente planas, lo cual es indicador de que la variable correspondiente sólo está introduciendo ruido.
Hace tiempo que intento pregonar este problema pero parece que nadie me hace caso por lo que creo que habría que hacer algo más proactivo que poco menos que obligue al analista a hacerlo bien.
Para ir eliminando este uso indiscriminado y absurdo, en MMS podría haber una forma de añadir restricciones de este tipo específico en las que el usuario, en lugar de dar directamente la media y la desviación del prior, daría los parámetros de definición del intervalo normalizado
//Límite inferior del intervalo Real a, //Límite superior Real b, //Probabilidad de estar en el intervalo Real p
MMS lo que añadiría es un prior normal con parámetros
//Media del prior normal Real nu = (a+b)/2; //Desviación típica del prior normal Real sigma = (b-nu)/(-DistNormalInv((1-p)/2));
De hecho se podría dar como una alternativa en la definición de un prior normal. Si fijas la media y la desviación entonces te puede sacar el intervalo del 99% o el que pida el usuario. De esta forma podría configurar dinámicamente hasta encontrar lo más acorde con el conocimiento que realmente se tenga y que a veces no es fácil de parametrizar a bote pronto.
Además de eso, MMS podría detectar ese tipo de restricciones de intervalo para recomendarle al usuario que las cambie por un prior de este tipo. A veces las restricciones aparecen para combinaciones de variables, en lugar de para una variable aislada, pero el problema viene a ser el mismo.
Para la detección lo que hay que buscar es pares de filas proporcionales entre sí lo cual podría implementarse en una nueva función en el paquete MatQuery
.
Aunque realmente no es algo que esté bloqueando por completo nada en particular, estoy convencido de que sería una de las cosas que con menos trabajo haria crecer más notablemente la productividad, por lo que le doy la máxima prioridad a este ticket.
Change History (5)
comment:1 Changed 13 years ago by
sensitive: | 0 → 1 |
---|
comment:2 Changed 13 years ago by
comment:3 Changed 13 years ago by
En el ticket https://www.tol-project.org/ticket/1333 se da una función que puede ayudar a detectar posibles intervalos sospechosos.
comment:4 Changed 13 years ago by
En el caso de intervalos simétricos centrados en 0, el único parámetro es la semi-longitud a
del intervalo [[-a,a]]
. En este caso la desviación sigma
del correspondiente prior probabilístico es proporcional a la longitud. Por lo tanto, conociendo la probabilidad p
y la sigma
para el intervalo [[-1,1]]
, la desviación para el intervalo [[-1,1]]
es simplemente a*sigma
.
Prob [-1,1] | sigma |
0.9 | 0.607956831912 |
0.95 | 0.510213456925 |
0.99 | 0.388224483129 |
0.995 | 0.356247940897 |
0.999 | 0.303902712727 |
0.9995 | 0.28729387634 |
0.9999 | 0.257030300066 |
Un caso muy típico es el de acotación de una variable de la que se espera que no sea demasiado grande, aunque no hay ninguna cota específica que pueda darse determinísticamente. Una regla nemotécnica para asignar el prior sería tomar sigma=a/4
cuando pensamos que es prácticamente imposible que la variable se salga del intervalo [[-a,a]]
Cuando además tenemos una restricción de signo que es realmente determinista, entonces se puede usar el mismo prior probabilístico e introducir sólo la restricción de signo.
comment:5 Changed 13 years ago by
Resumiendo el comentario anterior:
Las restricciones de intervalo del tipo [-a,+a]
deberían sustituirse por un prior probabilístico N(0,a/4)
.
Las restricciones de intervalo del tipo [0,+a]
deberían sustituirse por un prior probabilístico N(0,a/4)
y una restricción determinista no acotada superiormente [0,+Inf]
.
Las restricciones de intervalo del tipo [-a,0]
deberían sustituirse por un prior probabilístico N(0,a/4)
y una restricción determinista no acotada superiormente [-Inf,0]
.
Para ilustrar lo anterior e presenta la siguiente gráfica en la que aparecen diferentes distribuciones normales para las que el intervalo determinista inicial es precisamente el intervalo de confianza para una determinada probabilidad que va cambiando en cada caso:
Si hay razones de peso relacionadas con el tipo de magnitud o el dominio de definición de la variable entonces es perfectamente lícito establecer un prior uniforme en el intervalo determinista, pero si hay incertidumbre está claro que no es el camino adecuado. En lugar de ello hay que proponer un prior probabilístico congruente con lo que sabemos: si estamos prácticamente seguros podemos aplicar el caso
p=0.999
pero si es algo meramente orientativo que introducimos para evitar algún problema de correlaciones o simplemente es una intuición entonces sería más realista ponerp=0.9
o incluso menos.