Detección de punto de conmutación con programación probabilística (pymc)

9

Actualmente estoy leyendo el "libro" de programación probabilística y métodos bayesianos para hackers . He leído algunos capítulos y estaba pensando en el primer Capítulo donde el primer ejemplo con pymc consiste en detectar un punto de bruja en los mensajes de texto. En ese ejemplo, la variable aleatoria para indicar cuándo está sucediendo el punto de conmutación se indica con . Después del paso MCMC, se proporciona la distribución posterior de :ττingrese la descripción de la imagen aquí

En primer lugar, lo que se puede aprender de este gráfico es que hay una posibilidad de propagación de casi el 50% que el punto de cambio ocurrió en el día 45. ¿Pero qué pasaría si no hubiera un punto de cambio? En lugar de suponer que hay un punto de conmutación y luego tratar de encontrarlo, quiero detectar si de hecho hay un punto de conmutación.

El autor responde a la pregunta "¿sucedió un punto de cambio?" Por "Si no hubiera ocurrido ningún cambio, o si el cambio hubiera sido gradual con el tiempo, la distribución posterior de τ se habría extendido más". Pero, ¿cómo puede responder esto con una posibilidad de propagación? Por ejemplo, hay un 90% de posibilidades de que ocurra un punto de cambio, y hay un 50% de posibilidades de que ocurra en el día 45.

¿El modelo necesita ser cambiado? ¿O se puede responder con el modelo actual?

Olivier_s_j
fuente
Mencionando al autor del libro @ Cam.Davidson.Pilon, quien puede tener una mejor respuesta que la mía a continuación.
Sean Easter

Respuestas:

6

SeanEaster tiene algunos buenos consejos. El factor Bayes puede ser difícil de calcular, pero hay algunas buenas publicaciones de blog específicamente para el factor Bayes en PyMC2.

Una pregunta estrechamente relacionada es la bondad de ajuste de un modelo. Un método justo para esto es solo la inspección: los posteriores pueden darnos evidencia de bondad de ajuste. Como citado:

"Si no hubiera ocurrido ningún cambio, o si el cambio hubiera sido gradual con el tiempo, la distribución posterior de se habría extendido más"τ

Esto es verdad. La parte posterior está bastante alta cerca del tiempo 45. Como usted dice> 50% de la masa está en 45, mientras que si no hubiera un punto de cambio, la masa debería (en teoría) estar más cerca de 1/80 = 1.125% en el tiempo 45.

Lo que pretende hacer es reconstruir fielmente el conjunto de datos observados, dado su modelo. En el Capítulo 2 , son simulaciones de generación de datos falsos. Si sus datos observados se ven muy diferentes de sus datos artificiales, es probable que su modelo no sea el adecuado.

Pido disculpas por la respuesta no rigurosa, pero realmente es una gran dificultad que no he superado de manera eficiente.

Cam.Davidson.Pilon
fuente
Tal vez sin relación con su respuesta, solo estoy pensando en voz alta. ¿No sería posible ajustar un sigmoide a los datos y, en función del parámetro beta, decidir si la pendiente indica un cambio o no? Quizás el umbral que determina si hay un punto de conmutación se puede aprender de los ejemplos entonces. Quizás esto también sea posible con los parámetros . Si 1 difiere demasiado de 2, hay un punto de conmutación o no. Esto también podría hacerse con un umbral que se aprende de los ejemplosλλλ
Olivier_s_j
1
Por ejemplo, ajuste el modelo: , donde ? Creo que funcionaría, y permitiría transiciones suaves. Tiene razón en que la inferencia en la pendiente de podría determinar si existe un punto de conmutación. Realmente me gusta esto, deberías explorarlo más. λ1p+λ2(1p)p=1/(1+exp(βt))β
Cam.Davidson.Pilon
Sobre la cuestión del ajuste del modelo, agregaría que los valores p predictivos posteriores son una forma de evaluar el ajuste. Ver este artículo .
Sean Easter
2

Esa es más una pregunta de comparación de modelos: el interés está en si un modelo sin un punto de conmutación explica mejor los datos que un modelo con un punto de conmutación. Un enfoque para responder a esa pregunta es calcular el factor Bayes de modelos con y sin un punto de conmutación. En resumen, el factor Bayes es la razón de probabilidades de los datos en ambos modelos:

K=Pr(D|M1)Pr(D|M2)=Pr(θ1|M1)Pr(D|θ1,M1)dθ1Pr(θ2|M2)Pr(D|θ2,M2)dθ2

Si es el modelo que usa un punto de , y es el modelo sin, entonces un valor alto para puede interpretarse como favoreciendo fuertemente el modelo de punto de conmutación. (El artículo de wikipedia vinculado anteriormente proporciona pautas sobre qué valores de K son notables).M1M2K

También tenga en cuenta que en un contexto MCMC, las integrales anteriores se reemplazarían por sumas de valores de parámetros de las cadenas MCMC. Un tratamiento más completo de los factores de Bayes, con ejemplos, está disponible aquí .

A la pregunta de calcular la probabilidad de un punto de conmutación, eso es equivalente a resolver para . Si supone anteriores iguales en los dos modelos, entonces las probabilidades posteriores de los modelos son equivalentes al factor de Bayes. (Vea la diapositiva 5 aquí .) Entonces solo es cuestión de resolver usando el factor de Bayes y el requisito de que para n (exclusivos) eventos modelo bajo consideración.P(M1|D)P(M1|D)i=1nP(Mi|D)=1

Sean Easter
fuente