索引超出范围GraphCat.Parent OpenBUGS

索引超出范围GraphCat.Parent OpenBUGS,r,R,我试图在R和OpenBUGS中实现FHMM,但现在遇到以下错误 起初OpenBUGS只是给了我一个恼人的“出错”错误,在将Traphandler.ocf重命名为Traphandler_simple.ocf后,我发现GraphCat.Parents中出现了一个“索引超出范围”错误。尽管如此,我还是无法找到这段令人不快的代码(对Fortran一无所知,对MCMC知之甚少) 我试图构建的FHMM的结构有M=3个子链(在我的代码中,s[M,n],其中M=1,2,3和n=1,…,100),每个子链有K=2

我试图在R和OpenBUGS中实现FHMM,但现在遇到以下错误

起初OpenBUGS只是给了我一个恼人的“出错”错误,在将Traphandler.ocf重命名为Traphandler_simple.ocf后,我发现GraphCat.Parents中出现了一个“索引超出范围”错误。尽管如此,我还是无法找到这段令人不快的代码(对Fortran一无所知,对MCMC知之甚少)

我试图构建的FHMM的结构有M=3个子链(在我的代码中,s[M,n],其中M=1,2,3和n=1,…,100),每个子链有K=2个状态,并且排放量y是3个子链排放量的线性高斯分布

这是我的模型

# M=3, K=2, N=100

model <- function() {
  for( m in 1:M ) {
    s[m,1] ~ dcat(pi[m,1:K])    # initial states of each sub-chain
  }
  for( m in 1:M ) {
    for( i in 2:N ) {
      s[m,i] ~ dcat(trans[s[m,i-1],1:K,m])    # dim(trans) is c(2,2,3)
    }
  }
  for( m in 1:M ) {
    for( i in 1:N ) {
      mu0[m,i] <- mu[m,s[m,i]]
      sigma[m,i] <- 1/tau[m,s[m,i]]
    }
  }

  for( i in 1:N ) {
    mm[i] <- sum(mu0[1:M,i])
    tt[i] <- 1/sum(sigma[1:M,i])
    y[i] ~ dnorm(mm[i],tt[i])
  }
}
#M=3,K=2,N=100
模型
# Initial values
s.B <- matrix(rep(M*N),nrow=M,ncol=N)
for(i in 1:M) {
  s.B[i,] <- sample(1:K, N, replace=TRUE, rdirichlet(1,rep(1, K)))
}
inits <- function() {list(s=s.B)}

# data
P1 <- array(dim=c(2,2,3))
for( i in 1:M ) {
  P1[,,i] <- rdirichlet(K,rep(1, K))
}
K <- 2,
M <- 3,
N <- 100,
pi <- rdirichlet(M,rep(1, K)),
trans <- P1,
mu <- mus + rnorm(M*K,0,1),
sigma <- sigmas + rnorm(M*K,0,0.3)
tau <- 1/sigma

# y is the observed sequence of data
data <- list("y","pi","trans","mu","tau","N","K","M")

# Parameters
params <- c("s")