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

Closed 13 years ago

#1387 closed defect (fixed)

Probit con datos omitidos en el output

Reported by: Víctor de Buen Remiro Owned by: Víctor de Buen Remiro
Priority: highest Milestone: BSR extensions
Component: BSR Version: head
Severity: blocker Keywords:
Cc: Jorge, Pedro Gea, prcoco.bbvasp@…

Description (last modified by Víctor de Buen Remiro)

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 (22)

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

Description: modified (diff)

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

(In [3985]) Refs #1387

comment:3 Changed 13 years ago by Víctor de Buen Remiro

(In [3986]) Refs #1387

comment:4 Changed 13 years ago by Víctor de Buen Remiro

(In [3987]) Refs #1387

comment:5 Changed 13 years ago by Víctor de Buen Remiro

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.

comment:6 Changed 13 years ago by Víctor de Buen Remiro

(In [3988]) Refs #1387

comment:7 Changed 13 years ago by Víctor de Buen Remiro

(In [3989]) Refs #1387

comment:8 Changed 13 years ago by Víctor de Buen Remiro

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

comment:9 Changed 13 years ago by Víctor de Buen Remiro

(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

comment:10 Changed 13 years ago by Víctor de Buen Remiro

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

comment:11 Changed 13 years ago by Víctor de Buen Remiro

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

comment:12 Changed 13 years ago by Víctor de Buen Remiro

(In [3997]) Refs #1387
Just comments

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

(In [3999]) Refs #1387
Just comments

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

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

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

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

comment:16 Changed 13 years ago by Víctor de Buen Remiro

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

comment:17 Changed 13 years ago by Víctor de Buen Remiro

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

comment:18 Changed 13 years ago by Víctor de Buen Remiro

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

comment:19 Changed 13 years ago by Víctor de Buen Remiro

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

comment:20 Changed 13 years ago by Víctor de Buen Remiro

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

comment:21 Changed 13 years ago by Víctor de Buen Remiro

(In [4089]) refs #1387
upgrading test

comment:22 Changed 13 years ago by Víctor de Buen Remiro

Resolution: fixed
Status: newclosed

Ya está resuelto en BysMcmc.6.1

Note: See TracTickets for help on using tickets.