r - R2OpenBugs 错误消息:预期集合运算符 c 错误 pos 2174
问题描述
以下代码在 OpenBugs 中运行良好,但是当我在 R2OpenBugs 中运行它时,我收到一条错误消息“预期集合运算符 c 错误 pos 2174”。感谢您帮助修复错误。谢谢。
R2OpenBugsCode
# Load the R2OpenBUGS library
library(coda)
library(boot)
library(R2OpenBUGS)
library(mcmcplots)
# workingdirectory
setwd("C:/Users/)
sink("model3.txt")
cat("# Binomial likelihood, logit link, subgroup
# Fixed effects model with one covariate
model{ # *** PROGRAM STARTS
for(i in 1:ns){ # LOOP THROUGH STUDIES
mu[i] ~ dnorm(0,.0001) # vague priors for all trial baselines
for (k in 1:na[i]) { # LOOP THROUGH ARMS
r[i,k] ~ dbin(p[i,k],n[i,k]) # binomial likelihood
# model for linear predictor, covariate effect relative to treat in arm 1
logit(p[i,k]) <- mu[i] + d[t[i,k]] - d[t[i,1]]
+ (beta[t[i,k]]-beta[t[i,1]]) * x[i]
# expected value of the numerators
rhat[i,k] <- p[i,k] * n[i,k]
#Deviance contribution
dev[i,k] <- 2 * (r[i,k] * (log(r[i,k])-log(rhat[i,k]))
+ (n[i,k]-r[i,k]) * (log(n[i,k]-r[i,k]) - log(n[i,k]-rhat[i,k])))
}
# summed residual deviance contribution for this trial
resdev[i] <- sum(dev[i,1:na[i]])
}
totresdev <- sum(resdev[]) # Total Residual Deviance
d[1] <- 0 # treatment effect is zero for reference treatment
beta[1] <- 0 # covariate effect is zero for reference treatment
for (k in 2:nt){ # LOOP THROUGH TREATMENTS
d[k] ~ dnorm(0,.0001) # vague priors for treatment effects
beta[k] <- B # common covariate effect
}
B ~ dnorm(0,.0001) # vague prior for covariate effect
# treatment effect when covariate = z[j]
for (k in 1:nt){ # LOOP THROUGH TREATMENTS
for (j in 1:nz) { dz[j,k] <- d[k] + (beta[k]-beta[1])*z[j] }
}
# pairwise ORs and LORs for all possible pair-wise comparisons, if nt>2
for (c in 1:(nt-1)) {
for (k in (c+1):nt) {
# when covariate is zero
or[c,k] <- exp(d[k] - d[c])
lor[c,k] <- (d[k]-d[c])
# at covariate=z[j]
for (j in 1:nz) {
orz[j,c,k] <- exp(dz[j,k] - dz[j,c])
lorz[j,c,k] <- (dz[j,k]-dz[j,c])
}
}
}
# Provide estimates of treatment effects T[k] on the natural (probability) scale
# Given a Mean Effect, meanA, for 'standard' treatment A,
# with precision (1/variance) precA and covariate value z[j]
#A ~ dnorm(meanA,precA)
#for (k in 1:nt) {
# for (j in 1:nz){
# logit(T[j,k]) <- A + d[k] + (beta[k]-beta[1]) * z[j]
# }
# }
} # *** PROGRAM ENDS
", fill = TRUE)
sink()
cat(
"t[,1] t[,2] na[] r[,1] n[,1] r[,2] n[,2] x[] # ID name
1 2 2 256 2223 182 2221 1 # 1 4S
1 2 2 4 125 1 129 1 # 2 Bestehorn
1 2 2 0 52 1 94 1 # 3 Brown
1 2 2 2 166 2 165 1 # 4 CCAIT
1 2 2 77 3301 80 3304 0 # 5 Downs
1 2 2 3 1663 33 6582 0 # 6 EXCEL
1 2 2 8 459 1 460 1 # 7 Furberg
1 2 2 3 155 3 145 1 # 8 Haskell
1 2 2 0 42 1 83 1 # 9 Jones
1 2 2 4 223 3 224 0 # 10 KAPS
1 2 2 633 4520 498 4512 1 # 12 LIPID
1 2 2 1 124 2 123 1 # 13 MARS
1 2 2 11 188 4 193 1 # 14 MAAS
1 2 2 5 78 4 79 1 # 15 PLAC 1
1 2 2 6 202 4 206 1 # 16 PLAC 2
1 2 2 3 532 0 530 0 # 17 PMSGCRP
1 2 2 4 178 2 187 1 # 18 Riegger
1 2 2 1 201 3 203 1 # 19 Weintraub
1 2 2 135 3293 106 3305 0 # 20 Wscotland
", file="mydata.txt")
mydata=read.table("mydata.txt", header = TRUE,col.names=c("t1","t2","na","r1","n1","r2","n2","x"),sep="")
t<-cbind(mydata$t1,mydata$t2)
t<- as.matrix(t)
na<-as.vector(mydata$na)
r<-cbind(mydata$r1,mydata$r2)
r<-as.matrix(r)
n<-cbind(mydata$n1,mydata$n2)
n<-as.matrix(n)
x<-as.vector(mydata$x)
ns=19
nt=2
z=c(1)
nz=1
N = nrow(mydata)
mydata3 = list("N","t","na","r","n","x", "ns", "nt", "nz", "z")
# Parameters to be monitored (= to estimate)
params = c( "d", "B")
inits <- list(
inits1=list(d=c( NA, 0), mu=c(0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0), B=0),
inits2=list(d=c( NA, -1), mu=c(-3,-3,3,-3,3, -3,3,-3,3,-3, -3,-3,3,3,-3, 3,-3,-3,3), B=-1),
inits3=list(d=c( NA, 2), mu=c(-3,5,-1,-3,7, -3,-4,-3,-3,0, 5,0,-2,-5,1, -2,5,3,0), B=1.5))
# MCMC settings
nc <- 3 #number of MCMC chains to run
ni <- 50000 #number of samples for each chain
nb <- 20000 #number of samples to discard as burn-in
nt <- 1 #thinning rate, increase this to reduce autocorrelation
output <- bugs(data=mydata3, inits=inits, parameters.to.save=params, model.file="model3.txt",
n.chains=nc, n.iter=ni, n.burnin=nb, n.thin=nt, debug=TRUE, DIC=TRUE,
working.directory=getwd())
我得到的日志文件错误是这样的:
model is syntactically correct
**expected the collection operator c error pos 2174**
variable ns is not defined
model must have been compiled but not updated to be able to change RN generator
BugsCmds:NoCompileInits
BugsCmds:NoCompileInits
BugsCmds:NoCompileInits
model must be compiled before generating initial values
model must be initialized before updating
model must be initialized before monitors used
model must be initialized before monitors used
model must be initialized before monitors used
model must be initialized before DIC can be monitored
model must be initialized before updating
model must be initialized before monitors used
DIC monitor not set
解决方案
推荐阅读
- asp.net-core-mvc - 如何获取 asp.net 身份以从数据库中获取对声明的更改?
- javascript - NuxtJS 在特定滚动位置显示替代导航栏不起作用
- python - 避免`can't open camera by index`,用cv2测试时,所有cam都连接
- asp.net - ConfigureAwait(false) 如何防止 UI 死锁
- javascript - 如何在jquery中动态添加表单元素?
- reactjs - TypeScript:对象的类型为“未知”.ts(2571)
- azure-blob-storage - 当文件在 Blob 存储中被修改时自动触发快照
- python - 用于检测服务器是否宕机的 Python 脚本
- python - 使用 uvicorn + fastapi 在 AWS EC2 上出现 uvicorn 错误
- c++ - 如何在 Google Colab 上编译自定义 cpp 文件