2017-02-03 20 views
0

Я работаю над учебником «Байесовские идеи и анализ данных» Christensen et al.Winbugs to Rjags бета-версия биномиальной модели

Существует простое упражнение, в книге, которая включает резки и вставив следующий код для запуска в Winbugs:

model{ y ~ dbin(theta, n) # Model the data 
ytilde ~ dbin(theta, m) # Prediction of future binomial 
theta ~ dbeta(a, b) # The prior 
prob <- step(ytilde - 20) # Pred prob that ytilde >= 20 } 
list(n=100, m=100, y=10, a=1, b=1) # The data 
list(theta=0.5, ytilde=10) # Starting/initial values 

Я пытаюсь перевести следующее в R2jags код и бег в неприятность. Я думал, что я мог достаточно прямо написать свой R2Jags код таким образом:

model { 
    #Likelihoods 
    y ~ dbin(theta,n) 
    yt ~ dbin(theta,m) 
    #Priors 
    theta ~ dbeta(a,b) 
    prob <- step(yt - 20) 
} 

с кодом R:

library(R2jags) 

n <- 100 
m <- 100 
y <- 10 
a <- 1 
b <- 1 

jags.data <- list(n = n, 
        m = m, 
        y = y, 
        a = a, 
        b = b) 

jags.init <- list(
       list(theta = 0.5, yt = 10), #Chain 1 init 
       list(theta = 0.5, yt = 10), #Chain 2 init 
       list(theta = 0.5, yt = 10) #Chain 3 init 
       ) 

jags.param <- c("theta", "yt") 

jags.fit <- jags.model(data = jags.data, 
        inits = jags.inits, 
        parameters.to.save = jags.param, 
        model.file = "hw21.bug", 
        n.chains = 3, 
        n.iter = 5000, 
        n.burnin = 100) 

print(jags.fit) 

Однако, называя код R приводит к следующей ошибке:

Error in jags.model(data = jags.data, inits = jags.inits, parameters.to.save = jags.param, : 
    unused arguments (parameters.to.save = jags.param, model.file = "hw21.bug", n.iter = 5000, n.burnin = 100) 

Это потому, что у меня отсутствует необходимый цикл в моем коде модели R2Jags?

ответ

2

Ошибка исходит из функции R jags.model (не из JAGS) - вы пытаетесь использовать аргументы parameters.to.save и т. Д. Для неправильной функции.

Если вы хотите, чтобы модель как можно более близка к WinBUGS, существует более простой способ, чем указание данных и начальных значений в R. Поместите следующее в текстовый файл с именем 'model.txt' в ваш рабочий каталог :

model{ 
    y ~ dbin(theta, n) # Model the data 
    ytilde ~ dbin(theta, m) # Prediction of future binomial 
    theta ~ dbeta(a, b) # The prior 
    prob <- step(ytilde - 20) # Pred prob that ytilde >= 20 
} 

data{ 
    list(n=100, m=100, y=10, a=1, b=1) # The data 
} 

inits{ 
    list(theta=0.5, ytilde=10) # Starting/initial values 
} 

А затем запустите в R:

library('runjags') 
results <- run.jags('model.txt', monitor='theta') 
results 
plot(results) 

для получения более подробной информации об этом методе перевода WinBUGS моделей JAGS см: http://runjags.sourceforge.net/quickjags.html

Мэтт

0

This old blog post имеет обширный пример преобразования ОШИБКИ к Зубцам доступа через пакет rjags не R2jags. (Мне нравится пакет runjags еще лучше.) Я знаю, что мы должны представить здесь автономные ответы, а не только ссылки, но почта довольно длинная. Он проходит через каждый логический шаг сценария, в том числе:

  • загрузки пакета
  • с указанием модели
  • сборки данных
  • инициализации цепи
  • работает цепи
  • исследующих Результаты