1

我正在使用模拟数据运行分层贝叶斯模型,只是为了查看贝叶斯模型是否可以检索我为生成模拟数据而设置的参数值。当我在 JAGS(使用 rjags)中运行贝叶斯模型时,它为我的一个名为comp.p的参数返回了“无效的父值”错误。但是,由于我的模型中的参数comp.p不是随机变量,而是简单地由确定性表达式定义,因此我无法完全理解非随机变量如何可能出现“无效父值”错误。

因此,我只是想知道是否有人遇到过同样的问题,或者可能知道在什么情况下会发生这种情况。

这是我的 JAGS 代码的一部分。由于我的代码很长,我只放了我认为相关的部分,但如果需要信息,我很乐意用更多代码进行更新。

model {

##Priors setting here###

 for (k in 1:year){

##Long process model here###

   for(j in 1:ngrids) {
      N[j,1,k+1]~dpois(u2[j,1,k]+u4_frag_post[j,1,k])
      N[j,2,k+1]~dpois(u2[j,2,k]+u4_frag_post[j,2,k]) 
      N[j,3,k+1]~dpois(u2[j,3,k]+f.f[j,k]*trans.F.4*u2[j,4,k]) 
      N[j,4,k+1]~dpois(u2[j,4,k])

      NTotal[j,k+1]<-N[j,1,k+1]+N[j,2,k+1]+N[j,3,k+1]+N[j,4,k+1]     
    }
  }

##End of process model######

#### Data model ############

  for (k in 2:year){
    for (i in 1:n.comp) {
      comp.p[i,1,k]<-N[comp.ind[i],1,k]/NTotal[comp.ind[i],k]  
      comp.p[i,2,k]<-N[comp.ind[i],2,k]/NTotal[comp.ind[i],k]
      comp.p[i,3,k]<-N[comp.ind[i],3,k]/NTotal[comp.ind[i],k]
      comp.p[i,4,k]<-N[comp.ind[i],4,k]/NTotal[comp.ind[i],k]

      y.comp[i,2:5,k]~dmulti(comp.p[i,1:4,k],y.comp[i,6,k])   
    }
  }
##End of data model######
}

其中所有参数都是非负实数值

我得到的错误信息是:

Error in node comp.p[4,4,8]
Invalid parent values

这对我来说看起来很奇怪,因为这意味着它在前 7 个循环中运行良好,但在第 8 个循环开始出现问题,即使它们基于相同的表达式。

任何建议将不胜感激!

4

0 回答 0