3

WinBUGSとから使用しようとしましたRが、コードは次のとおりです。BRugsR2WinBUGS

require(R2WinBUGS)
require(BRugs)
model<-function(){
  for(i in 1:N){
    y[i] <- x[i] + w[i]
    w[i] ~ dnorm(0, sigma.y)
    x[i] <- a - b*5 + v[i]
    v[i] ~ dnorm(0, sigma.x)
  }
a ~ dunif(0, 1)
b ~ dunif(-1, 1)
sigma.y ~ dgamma(0.1, 0.1)
sigma.x ~ dgamma(0.1, 0.1)
}

write.model(model, con = "model.bug")
modelCheck("model.bug")
# model is syntactically correct

N = 10
y = rnorm(100)
data = list(N = N, y = y)
inits = function(){
  list(a = runif(1, 0, 1), b = runif(1, -1, 1), sigma.x= rgamma(1, 0.1, 0.1), 
       sigma.y = rgamma(1, 0.1, 0.1))
}
parameters = c("a", "b", "sigma.x", "sigma.y")

result.sim <- bugs(data, inits, parameters, "model.bug",
                n.chains = 1, n.iter = 1000,
                program= "winbugs",
                working.directory = NULL,
                debug = T)

結果が出ませんでした、そして私はの一部を見つけlog.txtますWinBUGS:

display(log)
check(C:/Users/ADMINI~1.PC-/AppData/Local/Temp/RtmpkrnOoc/model.bug.txt)
model is syntactically correct
data(C:/Users/ADMINI~1.PC-/AppData/Local/Temp/RtmpkrnOoc/data.txt)
data loaded
compile(1)
multiple definitions of node y[1]
inits(1,C:/Users/ADMINI~1.PC-/AppData/Local/Temp/RtmpkrnOoc/inits1.txt)
command #Bugs:inits cannot be executed (is greyed out)
gen.inits()
command #Bugs:gen.inits cannot be executed (is greyed out)
thin.updater(1)
update(500)
command #Bugs:update cannot be executed (is greyed out)
set(a)

であることは明らかですerrormultiple definitions of node y[1]、それはどういう意味ですか? y[1]を使用しているので、複数の定義があるとは思いませy[i]yが、loop.

4

2 に答える 2

4

モデルの尤度を正しく定義していない場合、複数定義エラーが発生する傾向があります。データに含まれている場合は、モデルでyの分布を述べる必要があります。y現時点yでは、モデル内のノードは決定論的 (ランダムではなく) ノードとして設定されています。実際のモデルが何であるかに応じて、設定できます

y[i] ~ dnorm(x[i], w[i])

次に、各許容範囲 w[i] に異なる事前分布 (正の値のみ) を持たせる必要があります。

于 2013-04-17T11:48:15.650 に答える
2

モデルでは、y[i] は正規分布を持ち、平均 x[i] と、v[i] の分散と w[i] の分散によって定義される分散があります。これにより、y[i] ~ dnorm(x[i] , prec[i]) で使用する適切なパラメーターが得られます。BUGS の正規分布は、精度 = 1 / 分散によって定義されることに注意してください。つまり、prec[i] <- 1 / (1/sigma.y + 1/sigma.x) です。シグマが精度であると仮定すると、シグマは通常標準偏差であるため、表記が混乱します。

于 2013-04-19T08:55:48.170 に答える