Я только начал изучать, как использовать пакет rjags в R, но натолкнулся на ошибку, которую не могу исправить после запуска функции jags.model ().Ошибка «Ошибка в setParameters (init.values [[i]], i): ОШИБКА ВРЕМЕНИ: Несоответствие размеров в значениях, предоставленных для тета» Проблема, по-видимому, связана с данными inits, поскольку при исключении списка списков вфункция.Вот кодЯ создал список списков в соответствии с инструкциями, но он по-прежнему является причиной ошибки.
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)