我在R版本3.3.2(2016-10-31),平台:x86_64-pc-linux-gnu(64位)上的OpenBUGS中设置多变量法线(MANOVA样)回归时遇到问题,运行于:Ubuntu 14.04.5 LTS。
我的模特是:
model
{
### Likelihood
for(i in 1:nfish){
CC[i, 1:ngen] ~ dmnorm(mu[i, 1:ngen], Sigma.inv[1:ngen, 1:ngen])
for(j in 1:ngen){
mu[i, j] <- CC.y[i] + beta0[j] + beta1[j] * Sdl[i]
}
}
### Priors
for(i in 1:ngen){
beta0[i] ~ dnorm(0.0, 0.01)
beta1[i] ~ dnorm(0.0, 0.01)
}
Sigma.inv[1:ngen, 1:ngen] ~ dwish(R[,], ngen)
Sigma[1:ngen, 1:ngen] <- inverse(Sigma.inv[,])
}
数据样本:
bugs.data <- list(CC = matrix(c(-3.75, -4.40, -1.60,
-3.75, -4.41, -1.71,
-8.67, NA, -5.23,
-8.92, -9.29, -5.12,
-8.69, -9.22, -9.48,
-9.87, -9.80, -18.32,
-4.71, -5.01, NA,
-4.69, -5.09, -1.67,
-3.62, -2.86, -0.26,
-3.93, -2.88, -0.21), ncol = 3),
CC.y = c(0.77, 0.82, 0.12, 0.08, 1.69, 1.69, -1.20, -1.15, 1.45, 1.46),
Sdl = c(0.96, 0.96, 0.76, 0.76, 0.40, 0.40, 0.97, 0.97, 0.27, 0.27),
nfish = 10,
ngen = 3,
R = matrix(c(3,0,0,0,3,0,0,0,3),ncol = 3));
Inits(编译模型时发生错误时未使用):
inits <- function() {list(beta0 = rnorm(3, -3.0, 1.0), beta1 = rnorm(3, 1.0, 0.2), Sigma.inv = matrix(rep(runif(1, 0, 1), 9), ncol = 3))}
然后开始采样时:
> modelCheck("MVNmodel.bugs")
model is syntactically correct
> modelData("data.txt")
data loaded
> modelCompile(numChains = 3)
Error in handleRes(res) :
Internal "trap" error in OpenBUGS, or non-existent module or procedure called.
使用BRugs或R2OpenBUGS从R连接openBUGS时遇到同样的问题。这也不是在数据中具有NA的问题。注意Lunn等人的多变量正常“Jaws”例子。 (Jaws example)在我的机器上正常运行。
我知道这可能是一个难以解决的问题(See here),但我仍然希望有人能够提供帮助。
谢谢!