2017-02-03 14 views
0

저는 Christensen 외 교과서 "Bayesian Ideas and Data Analysis"를 진행하고 있습니다.Winbugs to Rjags 베타 2 항 모델 번역

절단의 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 코드에 다음과 몇 가지 문제로 실행하고 있습니다.

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) 
다음 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 코드

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

: 나는 매우 직접 이런 식으로 내 R2Jags 코드를 작성할 수 있다고 생각

R2Jags 모델 코드에 필요한 for 루프가 누락 되었기 때문입니까?

답변

2

JAGS가 아닌 R 함수 jags.model에서 오류가 발생했습니다. 잘못된 매개 변수 arguments.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 모델을 번역하는이 방법에 볼 : http://runjags.sourceforge.net/quickjags.html

매트

0

This old blog post 패키지 rjagsR2jags 통해 액세스되지 장애가 있었던 경우에 버그 변환 광범위한 예를 갖는다. (나는 패키지 runjags을 더 좋아한다.) 링크들뿐만 아니라 여기에 자기 답을 제시해야한다는 것을 알고 있지만, 게시물은 오히려 길다.

  • 가를 검사 체인을 실행
  • 을 체인을 초기화
  • 의 데이터를 조립 모델
  • 를 지정 패키지
  • 로드 : 그것은 포함, 스크립트의 각 논리적 인 단계를 통과 결과