Entendendo o MCMC e o algoritmo Metropolis-Hastings


13

Nos últimos dias, tenho tentado entender como o Markov Chain Monte Carlo (MCMC) funciona. Em particular, tenho tentado entender e implementar o algoritmo Metropolis-Hastings. Até agora, acho que tenho uma compreensão geral do algoritmo, mas há algumas coisas que ainda não estão claras para mim. Eu quero usar o MCMC para ajustar alguns modelos aos dados. Por causa disso, descreverei minha compreensão do algoritmo Metropolis-Hastings para ajustar uma linha reta f(x)=ax a alguns dados observados D :

1) Faça um palpite inicial para . Defina esta um como o nosso atual um ( a 0 ). Adicione também um no final da cadeia de Markov ( C ).aaaa0aC

2) Repita as etapas abaixo várias vezes.

3) avaliar a probabilidade actual ( ) dado um 0 e D .L0a0D

4) Propor um novo ( a 1 ) amostrando a partir de uma distribuição normal com μ = a 0 e σ = s t e p s i z e . Por agora, s t e p s i z e é constante.aa1μ=a0σ=stepsizestepsize

5) Avaliar nova probabilidade ( ) deu um 1 e D .L1a1D

6) Se for maior que L 0L1L0 , aceitar como o novo um 0 , acrescentá-la na extremidade de C e ir para o passo 2.a1a0C

7) se for menor que L 0, gere um número (U) no intervalo [0,1] a partir de uma distribuição uniformeL1L0U

8) Se for menor que a diferença entre as duas probabilidades ( L 1 - L 0UL1L0 ), aceitar como o novo um 0 , acrescentá-la na extremidade de C e ir para o passo 2.a1a0C

9) Se for maior que a diferença entre as duas probabilidades ( L 1 - L 0UL1L0 ), acrescente a no final de C , continue usando a mesma a 0 , vá para a etapa 2.a0Ca0

10) Fim da repetição.

11) Remova alguns elementos do início de (fase de queima).C

12) Agora pegue a média dos valores em . Essa média é a estimada a .Ca

Agora eu tenho algumas perguntas sobre as etapas acima:

  • Como eu construo a função de probabilidade para mas também para qualquer função arbitrária?f(x)=ax
  • Esta é uma implementação correta do algoritmo Metropolis-Hastings?
  • Como a seleção do método de geração de número aleatório na Etapa 7 pode alterar os resultados?
  • Como esse algoritmo vai mudar se eu tiver vários parâmetros de modelo? Por exemplo, se eu tivesse o modelo .f(x)=ax+b

Notas / Créditos: A estrutura principal do algoritmo descrito acima é baseada no código de um Workshop MPIA Python.

Respostas:


11

Parece haver alguns conceitos errados sobre o que é o algoritmo Metropolis-Hastings (MH) na sua descrição do algoritmo.

Primeiro de tudo, é preciso entender que o MH é um algoritmo de amostragem. Como afirmado em wikipedia

Em estatística e em física estatística, o algoritmo Metropolis-Hastings é um método de Monte Carlo da cadeia de Markov (MCMC) para obter uma sequência de amostras aleatórias a partir de uma distribuição de probabilidade para a qual a amostragem direta é difícil.

Q(|)f() , o algoritmo MH pode ser implementado da seguinte maneira:

  1. x0 .
  2. xQ(|x0) .
  3. α=f(x)/f(x0) .
  4. xfα
  5. x

Nk

Um exemplo em R pode ser encontrado no seguinte link:

http://www.mas.ncl.ac.uk/~ndjw1/teaching/sim/metrop/metrop.html

Este método é amplamente empregado nas estatísticas bayesianas para amostragem a partir da distribuição posterior dos parâmetros do modelo.

f(x)=axx

Robert & Casella (2010), Introduzindo Métodos de Monte Carlo com R , cap. 6, "Algoritmos de Metropolis-Hastings"

Também há muitas perguntas, com dicas para referências interessantes, neste site, discutindo sobre o significado da função de probabilidade.

Outro ponteiro de possível interesse é o pacote R mcmc, que implementa o algoritmo MH com propostas gaussianas no comando metrop().


Olá, meu amigo. Sim, estou analisando o MH no contexto de regressão linear. O URL que você me deu explica tudo muito legal. Obrigado. Se surgir alguma outra pergunta sobre MH, colocarei uma pergunta novamente. Obrigado novamente.
Astrone
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.