Je lis actuellement le livre " Programmation probabiliste et méthodes bayésiennes pour les pirates ". J'ai lu quelques chapitres et je pensais au premier chapitre où le premier exemple avec pymc consiste à détecter un point de sorcière dans les messages texte. Dans cet exemple, la variable aléatoire pour indiquer le moment où le point de commutation se produit est indiquée par . Après l'étape MCMC, la distribution postérieure de est donnée:
Premièrement, ce que l'on peut apprendre de ce graphique, c'est qu'il y a une probabilité de près de 50% que le point de commutation se produise au jour 45. Mais que se passe-t-il s'il n'y a pas de point de commutation? Au lieu de supposer qu'il y a un point de commutation puis d'essayer de le trouver, je veux détecter s'il y a effectivement un point de commutation.
L'auteur répond à la question "un point de commutation est-il arrivé" par "S'il n'y avait pas eu de changement, ou si le changement avait été progressif dans le temps, la distribution postérieure de aurait été plus étalée". Mais comment pouvez-vous répondre à cette question avec une probabilité, par exemple, il y a 90% de chances qu'un point de commutation se produise, et il y a 50% de chances qu'il se produise au jour 45.
Le modèle doit-il être changé? Ou peut-on y répondre avec le modèle actuel?
la source
Réponses:
SeanEaster a de bons conseils. Le facteur Bayes peut être difficile à calculer, mais il existe de bons articles de blog spécifiquement pour le facteur Bayes dans PyMC2.
Une question étroitement liée est la qualité de l'ajustement d'un modèle. Une méthode juste pour cela est simplement l'inspection - les postérieurs peuvent nous fournir des preuves de qualité d'ajustement. Comme cité:
C'est vrai. Le postérieur atteint un pic assez proche du temps 45. Comme vous le dites> 50% de la masse est à 45, alors qu'en l'absence de point de commutation la masse devrait (théoriquement) être plus proche de 1/80 = 1,125% au temps 45.
Ce que vous visez à faire, c'est de reconstruire fidèlement l'ensemble de données observées, compte tenu de votre modèle. Dans le chapitre 2 , ce sont des simulations de génération de fausses données. Si vos données observées semblent très différentes de vos données artificielles, il est probable que votre modèle ne soit pas adapté.
Je m'excuse pour la réponse non rigoureuse, mais c'est vraiment une difficulté majeure que je n'ai pas surmontée efficacement.
la source
Il s'agit davantage d'une question de comparaison de modèles: l'intérêt est de savoir si un modèle sans point de commutation explique mieux les données qu'un modèle avec point de commutation. Une approche pour répondre à cette question consiste à calculer le facteur Bayes des modèles avec et sans point de commutation. En bref, le facteur Bayes est le rapport des probabilités des données sous les deux modèles:
Si est le modèle utilisant un point de commutation et est le modèle sans, alors une valeur élevée pour peut être interprétée comme favorisant fortement le modèle de point de commutation. (L'article wikipedia lié ci-dessus donne des indications sur les valeurs de K qui sont dignes de mention.)M1 M2 K
Notez également que dans un contexte MCMC, les intégrales ci-dessus seraient remplacées par des sommes de valeurs de paramètres provenant des chaînes MCMC. Un traitement plus approfondi des facteurs Bayes, avec des exemples, est disponible ici .
À la question du calcul de la probabilité d'un point de commutation, cela revient à résoudre pour . Si vous supposez des valeurs égales a priori sur les deux modèles, les cotes postérieures des modèles sont équivalentes au facteur Bayes. (Voir la diapositive 5 ici .) Ensuite, il s'agit simplement de résoudre pour utilisant le facteur de Bayes et l'exigence que pour n Événements modèles (exclusifs) à l'étude.P ( M 1 | D ) n ∑ i = 1 P ( M i | D ) = 1P(M1|D) P(M1|D) ∑i=1nP(Mi|D)=1
la source