首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rjags错误消息:尺寸不匹配

Rjags错误消息:尺寸不匹配
EN

Stack Overflow用户
提问于 2015-10-24 08:41:59
回答 1查看 3.7K关注 0票数 6

我试图研究基于“做贝叶斯数据分析: R,JAGS和Stan (2015)教程”一书的贝叶斯分析。

在这本书中有一些例子。所以,我试图在R中复制这个例子,但是在这个例子中我得到了一个错误消息。

具体来说,这是示例的数据。

代码语言:javascript
复制
data
   y        s
1  1 Reginald
2  0 Reginald
3  1 Reginald
4  1 Reginald
5  1 Reginald
6  1 Reginald
7  1 Reginald
8  0 Reginald
9  0     Tony
10 0     Tony
11 1     Tony
12 0     Tony
13 0     Tony
14 1     Tony
15 0     Tony

y<-data$y
s<-as.numeric(data$s)
Ntotal=length(y)
Nsubj=length(unique(s))

dataList=list(y=y, s=s, Ntotal=Ntotal, Nsubj=Nsubj)

这也是我的模型。

代码语言:javascript
复制
modelString=" 
model{
  for(i in 1:Ntotal){
    y[i] ~ dbern(theta[s[i]])
  }
  for(s in 1:Nsubj){
    theta[s] ~ dbeta(2,2)
  }
}
"
writeLines(modelString, con="TEMPmodel.txt")

library(rjags)
library(runjags)
jagsModel=jags.model(file="TEMPmodel.txt",data=dataList)

在这种情况下,我得到了一条错误消息。

代码语言:javascript
复制
Error in jags.model(file = "TEMPmodel.txt", data = dataList) : 
  RUNTIME ERROR:
Cannot insert node into theta[1...2]. Dimension mismatch

我不知道我在这段代码中犯了什么错误。请给我一些建议。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-25 02:40:56

正如@nicola所建议的那样,问题在于您将s作为数据传递给您的模型,但也使用s作为对1:Nsubj的计数器迭代。正如JAGS所指出的,这会导致对theta的维度的混淆。它的长度是15还是2?

以下工作:

代码语言:javascript
复制
model{
  for(i in 1:Ntotal){
    y[i] ~ dbern(theta[s[i]])
  }
  for(j in 1:Nsubj){
    theta[j] ~ dbeta(2,2)
  }
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33316206

复制
相关文章

相似问题

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