Rjags 错误消息:维度不匹配
Rjags error message: Dimension mismatch
我正在尝试根据 "Doing Bayesian Data Analysis: A Tutorial with R, JAGS, and Stan (2015)" 一书学习贝叶斯分析。
这本书里有例子。所以,我试图在 R 中复制这个例子。
但是,我在这个例子中收到一条错误消息。
具体来说,这是example的数据。
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)
此外,这是我的模型。
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)
在这种情况下,我收到一条错误消息。
Error in jags.model(file = "TEMPmodel.txt", data = dataList) :
RUNTIME ERROR:
Cannot insert node into theta[1...2]. Dimension mismatch
我不知道我在这段代码中犯了什么错误。
请多多指教
提前致谢。
正如@nicola 所建议的那样,问题在于您将 s
作为数据传递给您的模型,而且还使用 s
作为遍历 1:Nsubj
的计数器。正如 JAGS 所指出的,这会导致对 theta
维度的混淆...它的长度是 15 还是 2?
以下作品:
model{
for(i in 1:Ntotal){
y[i] ~ dbern(theta[s[i]])
}
for(j in 1:Nsubj){
theta[j] ~ dbeta(2,2)
}
}
我正在尝试根据 "Doing Bayesian Data Analysis: A Tutorial with R, JAGS, and Stan (2015)" 一书学习贝叶斯分析。
这本书里有例子。所以,我试图在 R 中复制这个例子。 但是,我在这个例子中收到一条错误消息。
具体来说,这是example的数据。
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)
此外,这是我的模型。
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)
在这种情况下,我收到一条错误消息。
Error in jags.model(file = "TEMPmodel.txt", data = dataList) :
RUNTIME ERROR:
Cannot insert node into theta[1...2]. Dimension mismatch
我不知道我在这段代码中犯了什么错误。 请多多指教
提前致谢。
正如@nicola 所建议的那样,问题在于您将 s
作为数据传递给您的模型,而且还使用 s
作为遍历 1:Nsubj
的计数器。正如 JAGS 所指出的,这会导致对 theta
维度的混淆...它的长度是 15 还是 2?
以下作品:
model{
for(i in 1:Ntotal){
y[i] ~ dbern(theta[s[i]])
}
for(j in 1:Nsubj){
theta[j] ~ dbeta(2,2)
}
}