У меня есть вопрос об ошибке, которую я не смог решить самостоятельно.
Когда я попытался скомпилировать модель ниже, я получил сообщение об ошибке:
Ошибка в setParameters (init.values [[i]], i):
Ошибка в узле lambda.division0 [1,1]
Невозможно установить значение неизменяемого узла
odel{
for(i in 1:N){ ## loop over respondents
x[i] ~ dnorm(delta.division0[division[i]], .01)
for (j in 1:J){ ## loop over questions
s[i,j] ~ dnorm(lambda.division0[division[i],endorser[i,j]], pow(omega[endorser[i,j]], -2))
p[i,j,1] <- phi(alpha[j,1] - beta0[j]*(x[i] + s[i,j]))
p[i,j,2] <- phi(alpha[j,2] - beta0[j]*(x[i] + s[i,j])) - (p[i,j,1])
p[i,j,3] <- phi(alpha[j,3] - beta0[j]*(x[i] + s[i,j])) - (p[i,j,1] + p[i,j,2])
p[i,j,4] <- phi(alpha[j,4] - beta0[j]*(x[i] + s[i,j])) - (p[i,j,1] + p[i,j,2] + p[i,j,3])
p[i,j,5] <- 1 - (p[i,j,1] + p[i,j,2] + p[i,j,3] + p[i,j,4])
Y[i,j] ~ dcat(p[i,j,1:5])
## In-sample average prediction rates
correct[i,j] <- p[i,j,Y[i,j]]
}}
for (j in 1:J){ beta0[j] ~ dlnorm(0, 1) } ## log-normal prior for discrimination parameter
beta <- beta0 * sd.x ## If sd.x is large, that forces beta0 to be small
for (j in 1:J){ for (l in 1:4){ alpha0[j,l] ~ dnorm(0,.01) }}
for (j in 1:J){ alpha[j,1:4] <- sort(alpha0[j,]) } ## Cutpoints
for (i in 1:n.division){
delta.division0[i] ~ dnorm(delta.province[province[i]], pow(sigma[province[i]],-2))
}
delta.division <- (delta.division0 - mean(delta.division0[])) / sd.x #Quantity of interest
for (i in 1:n.province){
delta.province[i] ~ dnorm(0, .01)
sigma[i] ~ dunif(0,10)
}
for (i in 1:n.division){
lambda.division0[i,1] <- 0
for (k in 2:K){
lambda.division0[i,k] ~ dnorm(theta.province[province[i],k], pow(psi[province[i],k], -2))
}}
lambda.division <- lambda.division0 / sd.x #Quantity of interest
for (i in 1:n.province){
theta.province[i,1] <- 0
psi[i,1] <- 0
for (k in 2:K){
theta.province[i,k] ~ dnorm(0, .01)
psi[i,k] ~ dunif(0, 10)
}}
omega[1] <- 0
for (k in 2:K){
omega[k] ~ dunif(0, 10)
}