2016-04-20 5 views
0

Я запускаю байесовскую модель в rjags, и я хотел бы иметь возможность выводить график следа MCMC, последующее распределение для моих параметров (которое я уже могу получить от coda) , и сравнение заднего и предыдущего распределений.Сохранить priors in rjags

Есть ли способ сохранить приоритеты, которые вы указали в jags model как список или что-то, что не заставило бы меня копировать и вставлять (тогда экспоненциально увеличивая вероятность ошибок) все дистрибутивы со своими параметрами?

У меня есть следующий фрагмент кода

cat(
'model{ 
    for(i in 1:n){ 
     P.hat[i] ~ dnorm(pi, df/sigma2) 
     SS[i]  ~ dgamma((df-1)/2, sigma2/2) 
     R[i]  ~ dbin(theta, N) 
    } 
    # relations 
    gam   <- m*vs+(1-m)*va 
    theta  <- (pi*beta*gam)/(gam*dt+(1-gam)*du) 
    # numerical values  
    df   <- 15 
    # priors 
    pi   ~ dnorm(0.05, 2)I(0,1) 
    sigma2  ~ dgamma(2, 0.1*df) 
    beta  ~ dunif(0, 0.4) 
    m   ~ dbeta(1, 4)     
    vs   ~ dbeta(2, 9)     
    va   ~ dbeta(2, 5)     
    dt   ~ dnorm(0.3, 2)I(0,10)   
    du   ~ dnorm(1.25, 2)I(0,10)   
}', 
file='model1.bug') 

, и я хотел бы раздел «априорные» «сохранить».

Заранее благодарим за все ваши ответы! EM

+0

Вопросы о коде принадлежат на [SO]. Мы перенесем это для вас. – gung

ответ

3

Короткий ответ: нет - JAGS (и ОШИБКИ) не делают явного различия между тем, что вы определяете как priors и другими дистрибутивами в модели, поэтому нет способа попросить JAGS предоставить вам информацию об определенных sub -разделы модели. Обычный способ взглянуть на ваши предыдущие распределения - это построить (или иначе суммировать) их отдельно в пределах R.

Однако есть трюк, который будет работать с вашей моделью, чтобы получить то, что вы хотите: установите верхний индекс вашего loop (n) до 0 (в данных). Это заставит JAGS полностью игнорировать все внутри цикла for, эффективно удаляя компонент правдоподобия вашей модели, оставляя только приоритеты. Если вы наблюдаете pi, sigma2 и т. Д., Вы должны увидеть распределение приоритетов для этих параметров. Поскольку нет возможности вычислить, вы также должны увидеть, что модель работает намного быстрее! Вам нужно запустить модель дважды, хотя (один раз для начальников и один раз с данными, как обычно для задних).