我刚刚开始学习如何在R中使用rjags包,但是在运行jags.model()函数后遇到了无法解决的错误。该错误是“ setParameters(init.values [[i]],i)中的错误:运行时错误: 为theta提供的值中的尺寸不匹配” 自从我排除函数中的列表列表以来,该问题似乎与init数据有关。这是代码。我已按照指示创建了列表列表,但它似乎仍然是导致错误的原因。
library(rjags)
myData = read.csv("z6N8z2N7.csv")
newData = data.frame(y=c(1,1,1,1,1,1,1,0,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0,1), s = rep("Mike", 32))
newMyData = rbind(myData, newData)
y = newMyData$y
s = as.numeric(newMyData$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(1, 1)
}
}
"
writeLines( modelString, con ="TEMPmodel.txt" )
thetaInit = as.numeric(sum(newMyData %>% filter(s == unique(newMyData$s)[1]) %>% select(1)) /
count(newMyData %>% filter(s == unique(newMyData$s)[1]) %>% select(1)))
thetaInit2 = as.numeric(sum(newMyData %>% filter(s == unique(newMyData$s)[2]) %>% select(1)) /
count(newMyData %>% filter(s == unique(newMyData$s)[2]) %>% select(1)))
thetaInit3 = as.numeric(sum(newMyData %>% filter(s == unique(newMyData$s)[3]) %>% select(1)) /
count(newMyData %>% filter(s == unique(newMyData$s)[3]) %>% select(1)))
initsList = list( list(theta = thetaInit), list(theta = thetaInit2),
list(theta = thetaInit3))
jags.model = jags.model(file = "TEMPmodel.txt",
data = dataList, #inits = initsList,
n.chains = 3, n.adapt = 5000)