簡體   English   中英

錯誤消息JAGS子集超出范圍

[英]error message JAGS subset out of range

我試圖在R中調用以下jags模型:

model{
  # Main model level 1
  for (i in 1:N){
    ficon[i] ~ dnorm(mu[i], tau)
    mu[i] <- alpha[country[i]]
  }

  # Priors level 1 
  tau ~ dgamma(.1,.1)

  # Main model level 2
  for (j in 1:J){
    alpha[j] ~ dnorm(mu.alpha, tau.alpha)
  }

  # Priors level 2
  mu.alpha ~ dnorm(0,.01)
  tau.alpha ~ dgamma(.1,.1)

  sigma.1 <- 1/(tau)
  sigma.2 <- 1/(tau.alpha)

  ICC <- sigma.2 / (sigma.1+sigma.2)  
}

這是一個分層模型,其中ficon是連續變量0-60,可能具有不同的平均值或按國家/地區分布。 N =總觀測數(2244)和J =國家數(34)。 當我運行此模型時,我不斷收到以下錯誤消息:

Compilation error on line 5.
Subset out of range: alpha[35]

這段代碼工作得比較早,但現在還沒有用。 我認為問題是只有34個國家,這就是為什么它會被困在i = 35,但我不知道如何解決這個問題。 歡迎任何建議!

我用來調用模型的R代碼:

### input files JAGS ###
data <- list(ficon = X$ficon, country = X$country, J = 34, N = 2244)

inits1 <- list(alpha = rep(0, 34), mu.alpha = 0, tau = 1, tau.alpha = 1)
inits2 <- list(alpha = rep(1, 34), mu.alpha = 1, tau = .5, tau.alpha = .5)
inits <- list(inits1, inits2)

# call empty model 
eqlsempty <- jags(data, inits, model.file = "eqls_emptymodel.R",
                  parameters  = c("mu.alpha", "sigma.1", "sigma.2", "ICC"), 
                  n.chains = 2, n.iter = itt, n.burnin = bi, n.thin = 10)

要解決此問題,您需要重新編號您的國家/地區,以便它們只有1到34的值。如果您只有34個國家/地區但是您收到錯誤消息,則說明其中一個國家/地區必須具有值35.要解決此問題在捆綁數據之前,可以調用以下R代碼:

x$country <- factor(x$country)
x$country <- droplevels(x$country)
x$country <- as.integer(x$country)

希望這可以幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM