在约束协方差矩阵时,RJAGS无法找到合适的采样器

时间:2018-06-07 11:45:56

标签: r mcmc rjags

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

0 个答案:

没有答案