RJAGS не может найти подходящий сэмплер при ограничении ковариационной матрицы - PullRequest
0 голосов
/ 07 июня 2018

Я использую RJAGS, чтобы сделать вывод о средней и ковариационной матрице из некоторых данных, и я заметил, что всякий раз, когда я помещаю ограничение в матрицу точности, я получаю следующее сообщение об ошибке

Ошибка в зазубринах.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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...