Detecção de ponto de comutação com programação probabilística (pymc)

9

Atualmente, estou lendo o livro " Programação Probabilística e Métodos Bayesianos para Hackers ". Eu li alguns capítulos e estava pensando no primeiro capítulo, em que o primeiro exemplo com pymc consiste em detectar um ponto de bruxa em mensagens de texto. Nesse exemplo, a variável aleatória para indicar quando o ponto de comutação está acontecendo é indicada com . Após o passo MCMC, é dada a distribuição posterior de τ :ττinsira a descrição da imagem aqui

Em primeiro lugar, o que se pode aprender com esse gráfico é que há uma probabilidade de quase 50% de que o ponto de alternância tenha ocorrido no dia 45. Embora e se não houvesse um ponto de alternância? Em vez de assumir que existe um ponto de alternância e tentar encontrá-lo, quero detectar se há realmente um ponto de alternância.

O autor responde à pergunta "aconteceu um ponto de comutação" por "Se nenhuma mudança ocorresse ou se a mudança fosse gradual ao longo do tempo, a distribuição posterior de teria sido mais difundida". Mas como você pode responder a isso com propabilidade, por exemplo, há 90% de chance de um ponto de alternância acontecer e 50% de chance de acontecer no dia 45.τ

O modelo precisa ser alterado? Ou isso pode ser respondido com o modelo atual?

Olivier_s_j
fonte
Mencionando o autor do livro @ Cam.Davidson.Pilon, que pode ter uma resposta melhor do que a minha abaixo.
23813 Sean Easter

Respostas:

6

SeanEaster tem alguns bons conselhos. O fator Bayes pode ser difícil de calcular, mas existem algumas boas postagens de blog especificamente para o fator Bayes no PyMC2.

Uma questão intimamente relacionada é a adequação de um modelo. Um método justo para isso é apenas a inspeção - os posteriores podem nos dar evidências de qualidade do ajuste. Como citado:

τ

Isso é verdade. O posterior tem um pico próximo ao tempo 45. Como você diz> 50% da massa está em 45, enquanto que se não houvesse um ponto de comutação, a massa (teoricamente) deveria estar mais próxima de 1/80 = 1,125% no tempo 45.

O que você pretende fazer é reconstruir fielmente o conjunto de dados observado, de acordo com o seu modelo. No capítulo 2 , são simulações de geração de dados falsos. Se os dados observados parecerem totalmente diferentes dos dados artificiais, é provável que o seu modelo não seja o ajuste correto.

Peço desculpas pela resposta não rigorosa, mas realmente é uma grande dificuldade que não superei com eficiência.

Cam.Davidson.Pilon
fonte
λλλ
11
λ1p+λ2(1p)p=1/(1+exp(βt))β
Na questão do ajuste do modelo, eu acrescentaria que os valores p preditivos posteriores são uma maneira de avaliar o ajuste. Veja este documento .
23819 Easter Sean
2

Essa é mais uma questão de comparação de modelos: o interesse é se um modelo sem um ponto de comutação explica melhor os dados do que um modelo com um ponto de comutação. Uma abordagem para responder a essa pergunta é calcular o fator Bayes de modelos com e sem um ponto de comutação. Em resumo, o fator Bayes é a razão de probabilidades dos dados nos dois 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

Se é o modelo que usa um ponto de e é o modelo sem, então um valor alto para pode ser interpretado como favorecendo fortemente o modelo de ponto de comutação. (O artigo da Wikipedia vinculado acima fornece diretrizes para os valores de K dignos de nota.)M1M2K

Observe também que em um contexto do MCMC as integrais acima seriam substituídas por somas de valores de parâmetros das cadeias do MCMC. Um tratamento mais completo dos fatores Bayes, com exemplos, está disponível aqui .

Para a questão de calcular a probabilidade de um ponto de comutação, isso equivale a resolver para . Se você assumir anteriores iguais nos dois modelos, as probabilidades posteriores dos modelos serão equivalentes ao fator Bayes. (Veja o slide 5 aqui .) Então é apenas uma questão de resolver para usando o fator Bayes e o requisito que para n (modelo exclusivo) eventos em consideração.P(M1|D)P(M1|D)i=1nP(Mi|D)=1

Sean Easter
fonte