2017-04-30 18 views
0

매개 변수화 된 선형 가우스 베이지안 네트워크가 있고 모델에 대한 예측을 rjags을 사용하여 수행하려고합니다. 나는 하나의 관측을 위해서 이것을 할 수는 있지만 여러 관측을 통과시키는 방법을 모른다. 여기에 예제에게 있습니다JAGS를 사용하여 예측 생성

library(rjags) 
library(coda) 

초기 모델

mod <- textConnection("model { 
    mpg.hat <- (34.96055404 - 3.35082533* wt - 0.01772474* disp) 
    wt  ~ dnorm(3.21725, 1/0.9784574^2) 
    disp ~ dnorm(230.7219, 1/123.9387^2) 
    mpg  ~ dnorm(mpg.hat, 1/2.916555^2) 
}") 

# Evaluate and get prediction when wt=1 and disp is hidden 
m <- jags.model(mod, n.chains = 1, n.adapt = 1000, data=list(wt=1, disp=NA)) 
update(m, 10000) 
cs <- coda.samples(m, c("mpg", "wt", "disp"), 1e5) 
summary(cs) 

이 예상대로, 그러나, 나는에 대한 예측을 생성 할 데이터의 여러 행이 작동합니다. 더 많은 행을 포함하도록 data=list( 인수를 확장하려고하면 오류가 발생합니다. 그래서 모델의 텍스트를 다시 실행하고 다음 명령은 내가 jags.model에서 오류를

m <- jags.model(mod, n.chains = 1, n.adapt = 1000, data=list(wt=1:2, disp=1:2)) 

오류를 얻을 후 (모드, n.chains = 1, n.adapt = 1000, 데이터 = 목록 (중량 = 1 : 2 : 노드 :: setValue의에서 노드 dnorm (230.722, (A1/(a123.939^2)))
길이 불일치에
오류가

어떻게이 더 관찰로 확장합니까?

답변

1

반복해야합니다. 행을 통해 :

mod <- textConnection("model { 
    for (n in 1:N) { 
    mpg.hat[n] <- (34.96055404 - 3.35082533* wt[n] - 0.01772474* disp[n]) 
    mpg[n]  ~ dnorm(mpg.hat[n], 1/2.916555^2) 
    wt[n]  ~ dnorm(3.21725, 1/0.9784574^2) 
    disp[n] ~ dnorm(230.7219, 1/123.9387^2) 
    } 
}") 

주 당신은뿐만 아니라 데이터 목록에 N을 추가해야합니다

data = list(N = 1, wt = 1, disp = NA) 
data = list(N = 2, wt = 1:2, disp = 1:2)