2015-10-24 6 views
4

Я пытаюсь изучить байесовский анализ на основе книги «Выполнение байесовского анализа данных: учебное пособие с R, JAGS и Stan (2015)».Сообщение об ошибке Rjags: несоответствие измерений

В этой книге есть примеры. Итак, я пытаюсь воспроизвести этот пример в R. Однако в этом примере у меня есть сообщение об ошибке.

Конкретно, это данные примера.

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 

Я не знаю, что я совершил ошибку в этом коде. Пожалуйста, дайте мне совет.

Заранее спасибо.

+2

Не используйте повторно 's' во втором цикле. Просто используйте другой узел, например. 'K'. Замените 's' во втором цикле на' k', и все должно быть хорошо. – nicola

+0

На самом деле, я не могу воспроизвести. Пример работает для меня. – nicola

ответ

5

Как было предложено @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) 
    } 
} 
+0

Ваша модель будет работать! Спасибо за помощь. – kmangyo

 Смежные вопросы

  • Нет связанных вопросов^_^