이 방법으로 데이터를 생성하는 데이터 블록을 사용해야 할 특별한 이유가 없다 - 모델 블록은 그냥 간단하게 고정을 기반으로 데이터를 생성하는 '역'에서 작업 할 수는 매개 변수. 매개 변수를 JAGS의 '데이터'로 지정하고 시뮬레이션 된 데이터 포인트를 모니터링하십시오 (데이터 세트가 필요한만큼 반복 실행 - 1 일 수도 있음).
원칙적으로 데이터 또는 모델 블록 (또는 둘 모두의 조합)을 사용하여 데이터를 시뮬레이션 할 수 있지만 JAGS의 모델 블록 (단순하지만 관련이없는 모델 임에도 불구하고)이 필요합니다. 달리기. 예를 들어, 다음은 일부 데이터를 시뮬레이션하기 위해 상기 데이터 블록을 사용
txtstring <- '
data{
for(i in 1:N){
Simulated[i] ~ dpois(i)
}
}
model{
fake <- 0
}
#monitor# Simulated
#data# N
'
library('runjags')
N <- 10
Simulated <- coda::as.mcmc(run.jags(txtstring, sample=1, n.chains=1, summarise=FALSE))
Simulated
유일한 차이는 모델 블록에 업데이트되는 반면, 데이터 블록 (시뮬레이션의 시작) 번만 갱신된다는 것이다 각 반복. 이 경우 우리는 단지 1 개의 샘플을 취하므로 중요하지 않습니다. 그러나 동일한 JAGS 실행 내에서 시뮬레이션 된 데이터를 여러 번 구현하려면 모델 블록에 코드를 넣어야합니다. [데이터 블록과 모델 블록 사이에는 다른 차이점이있을 수 있지만 나는 어떤 생각도 할 수 없다].
JAGS에서 다른 형식으로 데이터를 가져 오므로 (모니터링되는 데이터 내의 모든 배열의 인덱스를 나타내는 단일 벡터), 일부 legwork을 목록으로 다시 가져와야 할 수도 있습니다 벡터/배열/무엇이든 R. 편집 : R2jags이 유틸리티를 제공하지 않는 한 - 나는 그 패키지를 사용하지 않기 때문에 잘 모르겠습니다.
예를 들어'y.sim [i] ~ dnorm (mu, sigma^-2)'를 실행하고'y.sim'을 모니터링하십시오. – jbaums
어디에서 발생합니까? 데이터 모델 블록에서? – winwin