贝叶斯 - R和R2WinBugs的决策模型

时间:2016-12-15 15:05:01

标签: r matlab bayesian winbugs r2winbugs

我们希望使用R和WinBugs运行给定的baysian模型进行决策。我们正在使用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()方法读取它。

alldata&lt; -readMat(&#34; file.mat&#34;)。

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

data&lt; -list(alldata $ x,alldata $ v,alldata $ p,alldata $ y,alldata $ m)。

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

  

samples&lt; - bugs(data,inits = NULL,parameters,model.file =&#34; Path / SearchStop.txt&#34;,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是未定义的。

0 个答案:

没有答案