簡體   English   中英

嘗試使用 RJAGS 解析貝葉斯 model 時出現語法錯誤

[英]Syntax error when trying to parse Bayesian model using RJAGS

我正在運行以下代碼以嘗試使用 rjags 進行貝葉斯建模,但出現以下語法錯誤。

jags.model(file = "RhoModeldef.txt", data = ModelData, inits = ModelInits, : Error in parsing model 文件錯誤:第 4 行“~”附近的語法錯誤

RhoModel.def <- function() {
  for (s in 1:S) {
    log(rhohat[s]) ~ dnorm(log(rho[s]),log(rhovar[s]))
    rho[s] ~ dgamma(Kappa,Beta)
  }
  Kappa ~ dt(0,2.5,1) # dt(0, pow(2.5,-2), 1) https://stackoverflow.com/questions/34935606/cauchy-prior-in-jags https://arxiv.org/pdf/0901.4011.pdf 
  sig.k <- abs(Kappa)
  Beta ~ dt(0,2.5,1)
  sig.b <- abs(Beta)
}

S <- length(africasad21)-1 # integer
Rhohat <- afzip30$Rho # vector
Rhovar <- afzip30$RhoVar # vector

ModelData <-list(S=S,rhohat=Rhohat,rhovar=Rhovar)

ModelInits <-  list(list(rho = rep(1,S),Kappa=0.1,Beta=0.1))

Model.1 <- jags.model(file = 'RhoModeldef.txt',data = ModelData,inits=ModelInits,
                              n.chains = 4, n.adapt = 100)

有誰知道我如何解決這個問題? 我在想這可能與我嘗試安裝已記錄的 model 有關嗎? 如果需要更多詳細信息,請告訴我。

謝謝!

文件“RhoModeldef.txt”的第 4 行很可能是這一行:

log(rhohat[s]) ~ dnorm(log(rho[s]),log(rhovar[s]))

JAGS 不允許在隨機關系左側進行對數轉換,只允許確定性關系。 鑒於您將 rhohat 作為數據提供,最簡單的解決方案是在 R 中進行對數轉換並將該部分放入 JAGS,即:

log_rhohat[s] ~ dnorm(log(rho[s]), log(rhovar[s]))

ModelData <-list(S=S, log_rhohat=log(Rhohat), rhovar=Rhovar)

或者,您可以在 JAGS 中使用 dlnorm 而不是 dnorm。

這能解決你的問題嗎? 你的例子不是獨立的,所以我無法檢查自己,但我想它現在應該可以工作了。

暫無
暫無

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

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