Gostaria de automatizar a escolha do burn-in para uma cadeia MCMC, por exemplo, removendo as primeiras n linhas com base em um diagnóstico de convergência.
Até que ponto essa etapa pode ser automatizada com segurança? Mesmo se eu ainda verificar a autocorrelação, o rastreamento mcmc e os pdfs, seria bom ter a opção de comprimento de gravação automatizado.
Minha pergunta é geral, mas seria ótimo se você pudesse fornecer detalhes específicos para lidar com um objeto R mcmc.; Estou usando os pacotes rjags e coda em R.
Respostas:
Aqui está uma abordagem na automação. Feedback muito apreciado. Esta é uma tentativa de substituir a inspeção visual inicial pela computação, seguida pela inspeção visual subsequente, de acordo com a prática padrão.
Essa solução realmente incorpora duas soluções em potencial: primeiro, calcule a queima para remover o comprimento da cadeia antes que algum limite seja atingido e, em seguida, use a matriz de autocorrelação para calcular o intervalo de diluição.
O objeto mcmc pode ser baixado aqui: jags.out.Rdata
--atualizar--
Conforme implementado em R, o cálculo da matriz de autocorrelação é mais lento do que seria desejável (> 15 min em alguns casos), em menor grau, assim como o cálculo do fator de contração GR. Há uma pergunta sobre como acelerar a etapa 4 no stackoverflow aqui
- atualizar parte 2--
respostas adicionais:
Não é possível diagnosticar convergência, apenas diagnosticar falta de convergência (Brooks, Giudici e Philippe, 2003)
A função autorun.jags do pacote runjags automatiza o cálculo do comprimento da execução e dos diagnósticos de convergência. Ele não começa a monitorar a cadeia até que o diagnóstico de Gelman rubin esteja abaixo de 1,05; calcula o comprimento da cadeia usando o diagnóstico Raftery e Lewis.
Gelman et al. (Gelman 2004 Bayesian Data Analysis, p. 295, Gelman e Shirley, 2010 ) afirmam que usam uma abordagem conservadora de descartar a 1ª metade da cadeia. Embora seja uma solução relativamente simples, na prática isso é suficiente para resolver o problema do meu conjunto específico de modelos e dados.
fonte
autorun.jags
,...
permite que os parâmetros sejam passados para aadd.summary
função. Aadd.summary
função tem um argumentopsrf.target
com um valor padrão de 1,05