我正在使用 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)