Я пытаюсь запускать зазубрины и не уверен в своем коде зазубрин. Любые советы или отзывы будут оценены. введите описание изображения здесь
n=number of subjects (N=1000)
i=number of items(questions) (I=42)
m= number of attempts (M=5)
Как вы можете видеть на снимке экрана с моими данными, они категориальные (или порядковые).
1 means : p1[n,i]
2 means : (1-p1[n,i])*p2[n,i]
3 means :(1-p1[n,i])(1-p2[n,i])*p3[n,i])
4 means :(1-p1[n,i])(1-p2[n,i])(1-p3[n,i])*p4[n,i]
5 means : (1-p1[n,1])(1-p2[n,i])(1-p3[n,i])(1-p4[n,i])
Я сослался на книгу под названием «Проведение байесовского анализа» и написал код Jags, как показано ниже.
linear<-function(){
for(n in 1:N){ ## number of subjects (N=1000)
for(i in 1:I){ ## number of items (I=42)
responses[n,i]~dcat(prob[n,i,1:5])
}
}
for(n in 1:N){
for(i in 1:I){
prob[n,i,1]<-p[n,i,1] ## first attempt
prob[n,i,2]<-prod(1-p[n,i,1:1])*p[n,i,2]
prob[n,i,3]<-prod(1-p[n,i,1:2])*p[n,i,3]
prob[n,i,4]<-prod(1-p[n,i,1:3])*p[n,i,4]
prob[n,i,5]<-prod(1-p[n,i,1:4])
}
}
Однако, когда я посмотрел на другие ресурсы, касающиеся порядковых данных, они написали, как показано ниже (и я адаптировал свой код)
for(n in 1:N){
for(i in 1:I){
responses[n,i] ~ dcat(prob[n,i,1:M[i])
}
}
}
for(n in 1:N){
for (i in 1:I){
prob[n, i, 1] <- p[n, i, 1]
}
for (m in 2:(M[i]-1)){
prob[n,i,m]<-prod(1-p[n,i,1:(m-1)])*p[n,i,m]
}
prob[n,i,5]<-prod(1-p[n,i,1:4])
}
* for(n in 1:N){
for(i in 1:9){
for(m in 1:4){
logit(p[n,i,m])<-lambda0[i]+lambda1[i]*alpha[n,1,m]*Q[i,1]
}
}
}*
Я не уверен, какой из них правильный. Есть ли другие (правильные ??) способы сделать это?
Другая проблема заключается в том, что когда я запускаю Jags вторым способом, я получаю ошибку «неизвестная переменная i» (которая относится к *) и я не знаю, как решить эту проблему. Я не могу использовать for (i in 1: I), потому что lo git применяется только тогда, когда i равен 1 ~ 9.
Пожалуйста, предоставьте мне любые отзывы или комментарии. Спасибо