2

我们希望使用 R 和 WinBugs 运行给定的贝叶斯模型进行决策。我们正在使用 RStudio 和 R2WinBugs。模型由下式给出:

# Search and Stop 
model{
  # Data

  for (i in 1:ns){
    for (q in 1:nq){
      y[i,q] ~ dbern(dec[t[i,q,z1[i,q]]])
      ypred[i,q] ~ dbern(dec[t[i,q,z1[i,q]]])
    }
  }   
  # TTB Decision
  for (i in 1:ns){
    for (q in 1:nq){
      for (j in 1:nc){
        tmp1[i,q,j] <- (m[p[q,1],j]-m[p[q,2],j])*pow(2,s[i,j]-1)
      }
      tmp2[i,q] <- sum(tmp1[i,q,1:nc])
      tmp3[i,q] <- -1*step(-tmp2[i,q])+step(tmp2[i,q])
      t[i,q,1] <- tmp3[i,q]+2
    }
  }
  # WADD Decision
  for (i in 1:ns){
    for (q in 1:nq){
      for (j in 1:nc){
        tmp4[i,q,j] <- (m[p[q,1],j]-m[p[q,2],j])*x[j]
      }
      # Find if Cue Favors First, Second, or Neither Stimulus
      tmp5[i,q] <- sum(tmp4[i,q,1:nc])
      tmp6[i,q] <- -1*step(-tmp5[i,q])+step(tmp5[i,q])
      t[i,q,2] <- tmp6[i,q]+2
    }
  }
  # Follow Decision With Probability Gamma, or Guess
  dec[1] <- 1-gamma
  dec[2] <- 0.5
  dec[3] <- gamma
  # Cue Search Order From Ranking stmp
  for (i in 1:ns){
    for (j in 1:nc){
      s[i,j] <- rank(stmp[i,1:nc],j)
      stmp[i,j] ~ dnorm(0,1)I(0,)
    }
  }
  # TTB and WADD Rate Per Subject
  for (i in 1:ns){
    phi[i] ~ dbeta(1,1)
    for (q in 1:nq){
      z[i,q] ~ dbern(phi[i])
      z1[i,q] <- z[i,q]+1
    }
  }
  gamma ~ dunif(0.5,1)
}`

底层数据由一个 matlab 文件给出,我们通过 readMat() 方法读入该文件。

所有数据 <-readMat("file.mat")。

这实际上是有效的,因为我们可以在 RStudio 中看到这个文件给出的数据。该文件包含数组 x、v、p、y、m。这些数组存储在列表中

数据<-列表(所有数据$x,所有数据$v,所有数据$p,所有数据$y,所有数据$m)。

目前我们使用 NULL 作为 inits 值,这意味着 WinBugs 生成数据。但是我们不确定是否需要 WinBugs 来生成数据,或者我们是否需要自己指定:

样本 <- 错误(数据,inits=NULL,参数,model.file = "Path/SearchStop.txt",bugs.directory = bugsdir,debug = TRUE)

这会带来以下错误:

undefined variable
compile(3)
gen.inits()
command #Bugs:gen.inits cannot be executed (is greyed out)
thin.updater(3)
update(334)
command #Bugs:update cannot be executed (is greyed out)
set(gamma)
command #Bugs:set cannot be executed (is greyed out)
set(deviance)
command #Bugs:set cannot be executed (is greyed out)
dic.set()
command #Bugs:dic.set cannot be executed (is greyed out)

在 R2WinBugs 中没有关于哪个变量未定义的确切信息,但是当我们在 Matlab 中尝试它时,错误消息说 z1 未定义。

4

0 回答 0