我试图在JAGS中运行模型,但是出现以下错误:
Error in jags.model(model.file, data = data, inits = init.values, n.chains = n.chains, :
RUNTIME ERROR:
Cannot insert node into m[1]. Dimension mismatch
我指定的型号是
model = "model
{
for (i in 1:N) {
z[i] ~ dnorm(m[i],tau)
m[i] <- beta0 + beta1*x + beta2*y
}
beta0 ~ dnorm(0.0,1.0E-3)
beta1 ~ dnorm(0.0,1.0E-3)
beta2 ~ dnorm(0.0,1.0E-3)
tau ~ dgamma(0.01,0.01)
}"
然后我指定数据和初始值。最后,我运行模型。
data = list(z = wolfcamp$data, x = wolfcamp$coords[,1], y = wolfcamp$coords[,2], N = length(wolfcamp$data))
parameters=c("beta0","beta1","beta2","tau")
init1 = list(beta0 = 0, beta1 = 0, beta2 = 0, tau = 0)
init2 = list(beta0 = 1, beta1 = 1, beta2 = 1, tau = 1)
initial.values=list(init1, init2)
model1=jags(data=data, inits=initial.values,
parameters.to.save=parameters,
model.file=textConnection(model),
n.chains=2,
n.burnin=1000,
n.iter=11000)
你能帮我吗?您知道我为什么会收到此错误吗? 预先感谢。
答案 0 :(得分:2)
您似乎没有通过向量x
和y
进行索引,这会导致尺寸不匹配。
更改此行:
m[i] <- beta0 + beta1*x + beta2*y
对此:
m[i] <- beta0 + beta1*x[i] + beta2*y[i]
而且您应该走的很好(只要x
和y
的长度为N
)