Path: blob/master/site/es-419/probability/examples/Bayesian_Switchpoint_Analysis.ipynb
25118 views
Copyright 2019 The TensorFlow Probability Authors.
Licensed under the Apache License, Version 2.0 (the "License");
Análisis del punto de conmutación bayesiano
En este bloc de notas se vuelve a implementar y se amplía el ejemplo bayesiano de “Análisis de punto de conmutación” de la documentación de pymc3.
Requisitos previos
Conjunto de datos
El conjunto de datos proviene de aquí. Tenga en cuenta que hay otra versión de este ejemplo dando vueltas, pero tiene datos "faltantes", en cuyo caso deberá imputar los valores faltantes. (De lo contrario, su modelo nunca abandonará sus parámetros iniciales porque la función de probabilidad no estará definida).
Modelo probabilístico
El modelo supone un “punto de conmutación” (por ejemplo, un año durante el cual cambiaron las normas de seguridad) y una tasa de catástrofes distribuida por Poisson con tasas constantes (pero potencialmente diferentes) antes y después de ese punto de conmutación.
El recuento real de catástrofes es fijo (observado); cualquier muestra de este modelo deberá especificar tanto el punto de conmutación como la tasa de catástrofes “tempranas” y “tardías”.
Modelo original del ejemplo de documentación de pymc3:
No obstante, la tasa media de catástrofes tiene una discontinuidad en el punto de conmutación , lo que hace que no sea diferenciable. Por lo tanto, no proporciona ninguna señal de gradiente al algoritmo hamiltoniano de Monte Carlo (HMC), pero como la previa es continua, la alternativa del HMC a un paseo aleatorio es lo suficientemente buena como para encontrar las áreas de masa de alta probabilidad en este ejemplo.
Como segundo modelo, modificamos el modelo original con ayuda de una “conmutación” sigmoide entre e y l para que la transición sea diferenciable, y utilizamos una distribución uniforme continua para el punto de conmutación . (Se podría argumentar que este modelo es más fiel a la realidad, ya que una “conmutación” en la tasa media probablemente se extendería a lo largo de varios años). El nuevo modelo es el siguiente:
Ante la falta de más información, asumimos como parámetros para las previas. Ejecutaremos ambos modelos y compararemos sus resultados de inferencia.
El código anterior define el modelo mediante distribuciones JointDistributionSequential. Las funciones disaster_rate
se llaman con una matriz de [0, ..., len(years)-1]
para producir un vector de variables aleatorias de len(years)
; los años anteriores al switchpoint
son early_disaster_rate
, los posteriores a late_disaster_rate
(módulo de la transición sigmoide).
A continuación, se muestra una comprobación de que la función de probabilidad logarítmica objetivo es correcta:
HMC para hacer inferencia bayesiana
Definimos la cantidad de resultados y pasos de grabación necesarios; el código se basa principalmente en la documentación de tfp.mcmc.HamiltonianMonteCarlo. Usa un tamaño de paso adaptable (de lo contrario, el resultado es muy sensible al valor del tamaño de paso elegido). Usamos valores de uno como estado inicial de la cadena.
Sin embargo, esta no es la historia completa. Si regresa a la definición del modelo anterior, notará que algunas de las distribuciones de probabilidad no están bien definidas en toda la recta numérica real. Por lo tanto, restringimos el espacio que el HMC examinará al envolver el núcleo de HMC con un TransformedTransitionKernel que especifica los biyectores directos para transformar los números reales en el dominio en el que se define la distribución de probabilidad (consulte los comentarios en el código a continuación).
Ejecute ambos modelos en paralelo:
Visualización del resultado
Visualizamos el resultado como histogramas de muestras de la distribución posterior para la tasa de catástrofes tempranas y tardías, así como el punto de conmutación. Los histogramas se superponen con una línea continua que representa la mediana de la muestra, así como los límites del intervalo de credibilidad del percentil 95 como líneas discontinuas.