Я использую 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)