我们希望使用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是未定义的。