1

OpenBUGS プログラムの実行に問題があります。モデルは構文的には正しいのですが、データが読み込まれると、' array index is greater than array upper bound for beta 'というエラーが発生するため、コンパイルできません。私はすべてをチェックしていますが、間違いを見つけることができないようです。

model
{

#priors

Sbeta ~ dunif(0,20);
variancebeta<-pow(Sbeta,2);
taubeta<-1/variancebeta;

Salpha ~ dunif(0,20);
variancealpha<-pow(Salpha,2);
taualpha<-1/variancealpha

lambda ~ dnorm(0,5)

gamma ~ dnorm(0,5)

t3Dref ~ dnorm(0,1)

zT ~ dnorm(10,3) 
a<-1/zT

zP ~ dunif(0,100)
c<-1/zP


#étude e

for(e in 1:Netude){

alpha[e] ~ dnorm(0,taualpha);

} #end etude e


#espèce i

for(i in 1:Nespece){

beta[i] ~ dnorm(0,taubeta);

} #end espece i


#courbe n

for(n in 1:Ncourbe){

logt3Dref[n]<-(log(t3Dref)+alpha[etude[n]]+beta[espece[n]]+(gamma*Matrice[n])+(lambda*Phase[n]))/log(10);
Mlogt3D[n]<-logt3Dref[n]+(Tref-Tempe[n])*a+(Pref-Press[n])*c;

variancet3D[n]<-pow(sigmat3D[n],2)
taut3D[n]<-1/variancet3D[n]

logt3D ~ dnorm(Mlogt3D[n],taut3D[n]);

} #end courbe n

}


#Data

list(Ncourbe=40, Nespece=2, Netude=3, espece=c(3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,6,6,6,6,6,6,6,6,6,6), 
etude=c(1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4), Matrice=c(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1), 
Phase=c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), Press=c(500,500,500,500,500,500,300,300,300,300,270,270,600,600,600,600,600,600,270,270,270,270,270,270,400,400,400,400,400,400,600,600,600,600,600,600,600,600,600,600), 
Tempe=c(20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20), sigmat3D=c(19.246,22.12,63.38,61.24,90.74,148.125,2.495714286,20.95714286,17.2,15.74285714,25.24285714,10.41428571,31.66666667,33.53333333,35.11666667,66.6,38.5,50.6,57.88571429,57.75714286,57.22857143,57.18571429,58.17142857,56.51428571,22.32857143,16.08571429,75.64285714,18.6,45.28571429,9.944285714,128.26,75.84,92.44,128.88,127.64,126.68,123.6,110.04,97.58,157),
Tref=20, Pref=459)
4

1 に答える 1

1

Nespece = 2 であるため、beta[1] と beta[2] の事前分布のみを定義しましたが、logt3Dref[n] の定義では beta[espe[n]] を使用します。espece[n] は 3 または 6 の値を取ります. したがって、beta[3] と beta[6] が何であるかはわかりません。エラー メッセージでは、「配列インデックス」の 3 または 6 が「配列の上限」の 2 より大きくなっています。

于 2014-06-27T13:15:52.247 に答える