2013-08-14 5 views
0

자습서/예를 찾는 데 어려움을 겪었으므로 다음과 같은 질문을하고 싶습니다. 나는 Xi를 측정 한 변수 Xi를 사용하여이를 보여주고 싶었습니다. 각 추가 측정은 X의 분포 예측이 더 엄격 해집니다. 물론 1 : 2 1 : 3 1 : 4 등으로 모델을 재실행 할 수도 있습니다. 그러나 이것은 지루합니다. 내가 알고 있었던 어떤 계단식 코딩이 있었으면한다.JAGS/BUGS에서 각각의 새 시간 지점에서 업데이트 된 후부 생성 방법

#---------------------------------------------------------------------- 
#THE JAGS MODEL FOR X. 
#---------------------------------------------------------------------- 
modelstring=" 
model { 
#prior 
#------------------------------------------------------------------------------ 

mu_x ~ dnorm(0,1E-12) 

sd ~ dunif(0,50) 
tau <- sd*sd 
prec_x <- 1/tau 

#LIKELIHOOD 
#------------------------------------------------------------------------------ 
for (i in 1:total) { 
x[i] ~ dnorm(mu_x,prec_x) 
} 
pred.x ~ dnorm(mu_x,prec_x) 
} 
" 

사람은 그 시점에서 사용할 수있는 데이터를 기반으로 각 평가시기에 pred.x을 추정하는 모델을 지정하는 방법을 알고?

답변

0

하나의 모델 파일에서이를 수행하려면 데이터가 적은 경우 사후 분포가 다르기 때문에 (확산이 많은) 사후 분포를 갖기 때문에 각 예측에 대해 다른 mu_x와 prec_x를 사용해야합니다. 그래서

for (i in 1:j) { 
    x[i,j] ~ dnorm(mu_x[j],prec_x[j]) 

같은 것을 사용, J를 통해 루프 전체를 감싸고 다른 모든 것들에 J 첨자를 넣어. 마지막으로 x를 원본 x의 복제 행렬로 제공해야합니다. 데이터 {} 블록을 사용하여이를 용이하게 할 수 있습니다 (매뉴얼의 7.0.4 절 참조).

0

Chris 귀하의 답변은 훌륭했습니다. 난 그냥 참조를 위해 내 코드를 게시하고 싶었 : 내가 측정 # 여기서 내가 먼저 사이의 매트릭스를 설정

set up data into matrix: 
xmat<-matrix(nrow=#,ncol=#) 
for (j in 1:#) { 
for (i in 1:j) { 
    xmat[i,j] <- x[i] 
} 
} 
DataList = list(#create datalist for JAGS 
    x=xmat 
) 
#JAGS MODEL 
model { 
#LIKELIHOOD 
for (j in 1:#) { 
    for (i in 1:j) { 
    x[i,j]  ~ dnorm(mu_x[j],prec_x[j]) 
    } 
pred.x[j] ~ dnorm(mu_x[j],prec_x[j]) 

#prior 
sd[j] ~ dunif(0,50) 
tau[j] <- sd[j]*sd[j] 
prec_ic[j] <- 1/tau[j] 
mu_x[j] ~ dnorm(0,1E-12) 
} 
}