Невозможно установить значение неизменяемого узла - PullRequest
0 голосов
/ 16 апреля 2019

У меня есть вопрос об ошибке, которую я не смог решить самостоятельно.

Когда я попытался скомпилировать модель ниже, я получил сообщение об ошибке:

Ошибка в 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)
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...