Ticket #1387 (closed defect: fixed)

Opened 2 years ago

Last modified 2 years ago

Probit con datos omitidos en el output

Reported by: vdebuen Owned by: vdebuen
Priority: highest Milestone: BSR extensions
Component: BSR Version: head
Severity: blocker Keywords:
Cc: josp, pgea, prcoco.bbvasp@…

Description (last modified by vdebuen) (diff)

Es necesario introducir datos omitidos en el output de modelos probit para poder estimar modelos con datos desconocidos para los que tengamos algún tipo de información a priori, es decir, que no sabemos si el output es y[k]=1 ó y[k]=0 de forma determinista, pero sí tenemos cierta información sobre la probabilidad de que sea una cosa u otra.

Si nuestra información es una probabilidad p[k] prefijada para cada observación k tendremos un prior de Berniuilli definido como Prob { y[k] = 1 } = p[k]

En el caso de no tener una información tan precisa lo usual es utilizar un prior conjugado sobre la p[k] que para una Bernouilli resulta ser la distribución Beta(a,b). Los parámetros a y b habría que tratar de estimarlos a partir de algún modelo previo, o bien ajustarlos en base a un par de momentos (media y varianza por ejemplo), o cualquier otro tipo de información con dos grados de libertad.

En el caso de haber censura en los datos, lo que tendremos serán restricciones de desigualdad del tipo 0 <= l[k] <= p[k] <= u[k] <= 1. Habría que estudiar en este caso cuál sería el prior adecuado. Podría ser por ejemplo:

  • una Beta truncada en el intervalo [ l[k], u[k] ]
  • una Beta reescalada al intervalo [ l[k], u[k] ] , es decir, con un cambio de variable de forma que el 0 corresponda a l[k] y el 1 corresponda a u[k]
  • una Beta tal que la probabilidad del intervalo [ l[k], u[k] ] sea un valor dado muy cercano a 1. En lugar de dos grados de libertad ahora sólo quedaría uno, es decir, bastaría con dar la media por ejemplo para determinar la distribución. Esto podría llamarse censura probabilista y quizás sea la opción más sensata cuando la información a priori se basa en conocimientos no deterministas.

En BSR habría que retocar el filtro no lineal del probit o bien construir uno nuevo que permitiera añadir estos tipos de prior y otros que pudieran surgir más adelante.

Change History

Changed 2 years ago by vdebuen

  • description modified (diff)

Changed 2 years ago by vdebuen

(In [3985]) Refs #1387

Changed 2 years ago by vdebuen

(In [3986]) Refs #1387

Changed 2 years ago by vdebuen

(In [3987]) Refs #1387

Changed 2 years ago by vdebuen

En el archivo fit_beta.tol hay un código de ejemplo sobre el ajuste de una beta para cada observación de un modelo Probit del que previamente se ha obtenido una simulación MCMC. El modelo ha sido generado artificialmente en el fichero test.tol para poder chequear la calidad de la estimación.

Estos son algunos de los gráficos de ajuste generados en ese ejemplo.

source:/tolp/trunk/tol_tests/tol/BSR/test_08/fit_beta_01.gifsource:/tolp/trunk/tol_tests/tol/BSR/test_08/fit_beta_02.gif
source:/tolp/trunk/tol_tests/tol/BSR/test_08/fit_beta_03.gifsource:/tolp/trunk/tol_tests/tol/BSR/test_08/fit_beta_04.gif

Obsérvese que aunque el ajuste es peor cuanto más escorada es la beta, también es cierto que el error es menos importante, pues la acumulación de densidad en el extremo va a ser suficiente para asegurar que la inferencia sea la correcta, pues al final sólo puede ser 0 ó 1, y en esos casos es evidente que no va a caber duda sobre la elección.

Changed 2 years ago by vdebuen

(In [3988]) Refs #1387

Changed 2 years ago by vdebuen

(In [3989]) Refs #1387

Changed 2 years ago by vdebuen

(In [3991]) Refs #1387
New function EvalSetNth to speed up cycles calling C++ TOL functions with more than one argument

Changed 2 years ago by vdebuen

(In [3992]) Refs #1387
Vectorized functions gsl_M_cdf_beta_P and gsl_M_cdf_beta_Pinv in order to get faster simulations of truncated beta distributions

Changed 2 years ago by vdebuen

(In [3994]) Refs #1387
Handling with truncated beta priors over binary models

Changed 2 years ago by vdebuen

(In [3996]) Refs #1387
Handling with truncated beta priors over probit model

Changed 2 years ago by vdebuen

(In [3997]) Refs #1387
Just comments

Changed 2 years ago by vdebuen

(In [3999]) Refs #1387
Just comments

Changed 2 years ago by vdebuen

(In [4001]) Refs #1387
Fixing bugs and saving drawn probabilities

Changed 2 years ago by vdebuen

(In [4002]) Refs #1387
Handling with truncated beta priors over one-node probit API

Changed 2 years ago by vdebuen

(In [4003]) Refs #1387
Fixing bugs and saving drawn binary output

Changed 2 years ago by vdebuen

(In [4004]) Refs #1387
Example of use with reverse engineering

Changed 2 years ago by vdebuen

En bug_001387 he dejado un código que genera por ingeniería inversa un modelo probit en el que se incluyen algunas restricciones de signo y de orden sobre los parámetros que se cumplen por construcción. En este caso da un 11.7% de fracasos (Y=1) para una muestra de 3000 observaciones

  1. Se simula el modelo con todo el output conocido para poder chequear después el ajuste.
  1. Se genera un filtro previo para emular las operaciones censuradas por haber sido rechazadas. El filtro da un 6.7% de operaciones rechazadas, de entre las cuales hay un 73.8% de fracasos, mientras entre las aceptadas el porcentaje de fracasos baja al 7.3%
  1. Se simula el modelo teniendo en cuenta sólo las operaciones aceptadas
  1. Se estiman los prior beta sobre las operaciones rechazadas a partir de las previsiones del modelo de aceptadas, truncando para forzar que la probabilidad de fracaso en las rechazadas sea mayor que la media de fracasos entre las aceptadas.

En la siguiente tabla se observa que los parámetros estimados con el modelo con prior sobre las rechazadas se parece más al modelo estimado con todo el output conocido que el estimado sólo con las operaciones aceptadas.

source:/tolp/trunk/tol_tests/tol/Bugzilla/bug_001387/parameters.png

Changed 2 years ago by vdebuen

(In [4014]) Refs #1387
Handling with truncated beta priors over probit model

Changed 2 years ago by vdebuen

(In [4018]) Refs #1387
Handling with truncated beta priors over probit model

Changed 2 years ago by vdebuen

(In [4089]) refs #1387
upgrading test

Changed 2 years ago by vdebuen

  • status changed from new to closed
  • resolution set to fixed

Ya está resuelto en BysMcmc.6.1

Note: See TracTickets for help on using tickets.