由inits字段引起的jags.model函数错误

时间:2018-10-10 01:58:20

标签: bayesian rjags

我刚刚开始学习如何在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)

0 个答案:

没有答案