Esta pergunta é um acompanhamento técnico desta pergunta .
Tenho dificuldade em entender e replicar o modelo apresentado em Raftery (1988): Inferência para o binômio parâmetro : uma abordagem hierárquica de Bayes no WinBUGS / OpenBUGS / JAGS. Não se trata apenas de código, portanto, ele deve estar no tópico aqui.
fundo
Seja um conjunto de contagens de sucesso de uma distribuição binomial com N e θ desconhecidos . Além disso, suponho que N siga uma distribuição de Poisson com o parâmetro μ (como discutido no artigo). Então, cada x i tem uma distribuição de Poisson com média λ = μ θ . Quero especificar os anteriores em termos de λ e θ .
Supondo que eu não tenha nenhum conhecimento prévio bom sobre ou θ , desejo atribuir anteriores não informativos a λ e θ . Por exemplo, os antecedentes são λ ~ L um m m um ( 0,001 , 0,001 ) e θ ~ L n i f o r m ( 0 , 1 ) .
O autor usa um prior inadequado de mas o WinBUGS não aceita antecedentes impróprios.
Exemplo
No artigo (página 226), são fornecidas as seguintes contagens de sucesso dos waterbucks observados: . Quero estimar N , o tamanho da população.
Aqui está como eu tentei descobrir o exemplo no WinBUGS ( atualizado após o comentário de @ Stéphane Laurent):
model {
# Likelihood
for (i in 1:N) {
x[i] ~ dbin(theta, n)
}
# Priors
n ~ dpois(mu)
lambda ~ dgamma(0.001, 0.001)
theta ~ dunif(0, 1)
mu <- lambda/theta
}
# Data
list(x = c(53, 57, 66, 67, 72), N = 5)
# Initial values
list(n = 100, lambda = 100, theta = 0.5)
list(n = 1000, lambda = 1000, theta = 0.8)
list(n = 5000, lambda = 10, theta = 0.2)
O modelo não Sill não convergem bem após 500.000 foi amostras com 20.000 burn-in amostras. Aqui está a saída de uma execução JAGS:
Inference for Bugs model at "jags_model_binomial.txt", fit using jags,
5 chains, each with 5e+05 iterations (first 20000 discarded), n.thin = 5
n.sims = 480000 iterations saved
mu.vect sd.vect 2.5% 25% 50% 75% 97.5% Rhat n.eff
lambda 63.081 5.222 53.135 59.609 62.938 66.385 73.856 1.001 480000
mu 542.917 1040.975 91.322 147.231 231.805 462.539 3484.324 1.018 300
n 542.906 1040.762 95.000 147.000 231.000 462.000 3484.000 1.018 300
theta 0.292 0.185 0.018 0.136 0.272 0.428 0.668 1.018 300
deviance 34.907 1.554 33.633 33.859 34.354 35.376 39.213 1.001 43000
Questões
Claramente, estou perdendo alguma coisa, mas não consigo ver exatamente o que. Eu acho que minha formulação do modelo está errada em algum lugar. Então, minhas perguntas são:
- Por que meu modelo e sua implementação não funcionam?
- Como o modelo dado por Raftery (1988) pode ser formulado e implementado corretamente?
Obrigado pela ajuda.
fonte
mu=lambda/theta
e substituirn ~ dpois(lambda)
porn ~ dpois(mu)
Respostas:
Bem, como você conseguiu que seu código funcionasse, parece que essa resposta é um pouco tarde demais. Mas eu já escrevi o código, então ...
Pelo que vale, esse é o mesmo modelo *(N,θ)
rstan
. É estimado em 11 segundos no meu laptop consumidor, atingindo um tamanho de amostra efetivo mais alto para nossos parâmetros de interesse em menos iterações.Observe que eu faço a conversão
theta
como 2 simplex. Isso é apenas para estabilidade numérica. A quantidade de interesse étheta[1]
; obviamentetheta[2]
é informação supérflua.* Como você pode ver, o resumo posterior é praticamente idêntico e promoveN para uma quantidade real não parece ter um impacto substancial em nossas inferências.
O quantil de 97,5% para é 50% maior para o meu modelo, mas acho que é porque o amostrador de stan é melhor em explorar toda a extensão da parte posterior do que uma simples caminhada aleatória, para que possa ser mais fácil entrar nas caudas. Eu posso estar errado, no entanto.N
Tomando os valores de gerados a partir stan, eu usá-los para desenhar posteriores valores preditivos ~ y . Nós não devemos nos surpreender que média das previsões posteriores ~ y está muito próximo da média dos dados da amostra!N,θ y~ y~
Para verificar se oN y¯=θN
rstan
amostrador é um problema ou não, calculei a parte posterior sobre uma grade. Podemos ver que o posterior é em forma de banana; esse tipo de posterior pode ser problemático para o HMC métrico euclidiano. Mas vamos verificar os resultados numéricos. (A gravidade da forma de banana é realmente suprimida aqui desde é na escala log). Se você pensar sobre a forma de banana por um minuto, você vai perceber que ele deve estar na linha ˉ y = θ N .O código abaixo pode confirmar que nossos resultados da stan fazem sentido.
rstan
fonte
n
não pode ser declarado como um número inteiro e eu não sabia uma solução alternativa para o problema.rstan
mais corretos. [1] stats.stackexchange.com/questions/114366/…Aqui está o meu script de análise e resultados usando JAGS e R:
A computação levou cerca de 98 segundos no meu PC de mesa.
Os resultados são:
fonte