我正在使用RJAGS从一些数据推断均值和协方差矩阵,我注意到每当我在精度矩阵中设置约束时,我都会收到以下错误消息
jags.model中的错误(file =“model.tmp”,data = data):节点出错 B无法找到合适的采样器
这是一个最小的例子,我用平均值和精度矩阵乘以常量向量。 请注意,仅在重新调整精度矩阵时才会显示错误消息。出于某种原因,RJAGS只能重新调整平均值。 在这个简单的情况下,显然我可以首先通过A0重新调整数据,但是我希望能够在事先不知道A0时执行此操作。有什么想法吗?
model="model {
for(i in 1:N){
X[i,1:3] ~ dmnorm(An,Bn)
}
B ~ dwish(B0,3)
for(i in 1:3){
An[i]=A[i]*A0[i]
for(j in 1:3){
Bn[i,j]=B[i,j]*A0[i]
}
}
for(i in 1:3){
for(j in 1:3){
B0[i,j]=equals(i,j)*1e-3
}
}
A ~ dmnorm(c(0,0,0),B0)
}"
X=matrix(rnorm(300,0,1),ncol=3)
data=list(X=X,N=nrow(X),A0=c(1,2,2));
varnames=c("A","B","S")
burn_in=100;
steps=10000;
thin=1;
fileConn=file("model.tmp")
writeLines(model,fileConn);
close(fileConn)
m=jags.model(file="model.tmp",data=data);
update(m,burn_in)
draw=jags.samples(m,steps,thin=thin,variable.names=varnames)