我已经使用rjags
构建了一个线性回归模型,但是我收到一个运行时错误,说索引超出范围。我已经在网上寻找建议,但是找不到任何我理解或解决这个确切问题的东西。
下面是我的代码:
modelstring1= "
model{
for (i in 1:n) {
y[i] ~ dnorm(mu[i], prec)
mu[i] = b[1] + b[2]*lnimi[i]
}
for (j in 1:2) {
b[j] ~ dnorm(0.0, 1.0/1.0E6)
}
prec ~ dgamma(20.0/2, 20.0*10.0/2)
sig2 = 1.0 / prec
sig = sqrt(sig2)
}"
jags_data1 = list(y=Reisby["hd"], n=nrow(Reisby))
params1 = c("b", "sig")
inits1 = function() {
inits = list("b"=rnorm(2.0, 0.0, 100.0), "prec"=rgamma(1, 1.0, 1.0))
}
model1 = jags.model(textConnection(modelstring1), data=jags_data1, inits = inits1)
错误是:
正在编译模型图
解析未声明的变量
删除模型
jags.模型中出错(文本连接(模型字符串1),数据= jags_data1,初始化=初始化1):
运行时间错误:
第4行编译错误。
索引超出范围,占用y的子集
我看到的最接近的建议是mu范围太小,但我真的不明白这是为什么这里的问题。不确定Reisby
数据中的"lnimi"
字段是否需要在任何地方指定,因为它包含在mu [I]语句中?
1条答案
按热度按时间bq3bfh9z1#
感谢所有评论的人,我现在有了一个工作模型!最后的代码是: