私はRやOpenBugsには比較的新しいので、このモデルのトラブルシューティングに多くの時間を費やしました。私はオンラインでリソースを通して自分自身でかなりの量を把握することができましたが、私はこのエラーに固執しています。それは、「複数のノード・ダミーの定義」であると言われています。私はこのエラーは、インデックスを持たないforループ内の変数を定義しようとしたときによく起こるが、私の変数はしばしばオンラインであると読んでいます。私はこのモデルをリソースhereに基づいて作成しました。R - OpenBugs - ノードエラーに関する複数の定義 - カスタムディストリビューション
私はエラーを見つけるのに苦労します。下記のコードは私が見ているのと同じエラーを生成するはずです。私はOpenBugsで見たログエラーも含めました。私を助ける時間をとってくれてありがとう。
データ:
library(R2OpenBUGS)
n1=20 ; k1=1 ; m1=5; R.x=c(3,3,3,3,3); x=c(1.008195, 1.212885, 1.349857, 1.909607, 7.134668)
n2=20 ; k2=1 ; m2=5; R.y=c(3,3,3,3,3); y=c(0.7507421, 1.3103649, 1.5022302, 1.7875087, 3.1900460)
モデル:
mtemp<-function(){
for (i in 1:m1)
{
dummyx[i]<-0
dummyx[i] ~ dloglik(logLikex[i])
logLikex[i] <- -log(a)-log(c)-(c-1.0)*log(x[i])+(a*k1*(R.x[i]+1.0)+1.0)*log(1.0 + pow(x[i],c))
for(j in 1:m2){
dummyy[j]<-0
dummyy[j] ~ dloglik(logLikey[j])
logLikey[j] <- -log(b)-log(c)-(c-1.0)*log(y[j])+(b*k2*(R.y[j]+1.0)+1.0)*log(1.0 + pow(y[j],c))
}
a ~ dgamma(0.001, 0.0001)
b ~ dgamma(0.001, 0.0001)
c ~ dgamma(0.001, 0.0001)
}
}
model.file <- file.path(tempdir(), "model.txt") #create temporary directory
write.model(mtemp, model.file) #write to temporary directory
file.show(model.file) #verify model was created
datatemp<- list("x","y","R.x","k1","m1","R.y","k2","m2")
initstemp<-function(){list(a=7.0,b=7.0,c=4.5)}
bugstemp = bugs(data=datatemp,inits=initstemp,parameters=c("a","b","c"),model.file=model.file,
n.chains=3,n.iter= 10000, n.burnin=1000,n.thin=1, debug=T)
ログレポート:あなたは、むしろ、モデルの最後に、M1ループのために閉じ括弧を入れている
model is syntactically correct
data loaded
multiple definitions of node dummyy[1]
model must have been compiled but not updated to be able to change RN generator
BugsCmds:NoCompileInits
BugsCmds:NoCompileInits
BugsCmds:NoCompileInits
model must be compiled before generating initial values
model must be initialized before updating
model must be initialized before monitors used
model must be initialized before monitors used
model must be initialized before monitors used
model must be initialized before monitors used
model must be initialized before DIC can be monitored
model must be initialized before updating
model must be initialized before monitors used
DIC monitor not set