首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用rjags运行逻辑模型

如何使用rjags运行逻辑模型
EN

Stack Overflow用户
提问于 2016-09-03 08:37:06
回答 1查看 410关注 0票数 1

我使用rjags运行逻辑模型,但错误总是发生(见下文),我觉得我的代码包含了所有需要的东西,而且它们是合乎逻辑的,所以到目前为止,我无法检测到代码中的错误。下面是错误

代码语言:javascript
复制
Error in jags.model(textConnection(modelstring2), data = list(ro = ro$ro,  : 
RUNTIME ERROR:
Compilation error on line 22.
Unknown variable i
Either supply values for this variable with the data
or define it  on the left hand side of a relation.

以下是我的代码:

代码语言:javascript
复制
#loading the data
data("ro")
?ro

str(ro)

Ntotal<-dim(ro)[1]

modelstring2 <- "
model {

#likelihood

for (i in 1:Ntotal) {

ro[i]~ dbern(mu[i])  



logit(mu[i]) <- alpha + beta[1]*rr[i]

}

#prior

alpha~ dnorm(0, 1.0E-6)

for (j in 1:4) {
beta[i]~ dnorm(0, 1.0E-6)
}
}"


#obatin the initial values by glm model
glm_int <- glm(ro ~ x1 + x2 + x3 + x4,
family= binomial,data = ro)
summary(glm_int)


#initiate the model

datalist<-list( 'ro'=ro[[1]], 'x1'=ro[[2]],'x2'= ro[[3]],
'x3'=ro[[4]],'x4'= ro[[5]],'Ntotal'=Ntotal)

model2<-jags.model(textConnection(modelstring2),
data=list( 'ro' = ro$ro,
'x1'=ro$x1,
'x2'=ro$x2,
'x3'= ro$x3,
'x4'= ro$x4, 'Ntotal'=Ntotal),

inits =list('alpha' =glm_int$coef[[1]],'beta[1]'=   glm_int$coef[[2]],
'beta[2]'=  glm_int$coef[[3]],'beta[3]'= glm_int$coef[[4]],
'beta[4]'= glm_int$coef[[5]]),

n.chains=3,
n.adapt=1000)

期待您的帮助。

EN

回答 1

Stack Overflow用户

发布于 2016-09-03 16:18:35

该错误告诉您问题在第22行。代码的第21-23行是:

代码语言:javascript
复制
for (j in 1:4) {
     beta[i]~ dnorm(0, 1.0E-6)
}

也就是说,索引变量i不存在于j上的这个循环中。

JAGS花了相当多的精力来提供信息性错误,所以总是值得仔细阅读它们。请注意,如果您的模型位于单独的文本文件中,行号引用会更有用(或者runjags会根据请求显示带有行号的模型- r2jags可能会做类似的事情,我不确定)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39302238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档