无法评估Jags中的子集表达式

时间:2017-10-10 01:53:31

标签: jags

我对Jags不熟悉,我一直绞尽脑汁试图看看我的代码出错了什么,这给出了这个错误信息:

'无法评估precd'的子集表达式。

我正在附加我的代码,其中包含编码的数据。我很感激能得到的所有帮助。

this.bar

基本参数的基础

nS=number of studies, 
r=number of events, 
n=sample size, 
tau.sq=heterogeneity, 
na=number of arms, 
sw='correction' for multi-arm trials. 

Model<- function(){
for(i in 1:nS) { 
  w[i,1]<- 0  
  theta[i,t[i,1]]<- 0  

for (k in 1:na[i]) {r[i,t[i,k]] ~ dbin(p[i,t[i,k]],n[i,t[i,k]])}                                                                 
logit(p[i,t[i,1]])<- u[i]                           
for (k in 2:na[i]) {
  logit(p[i,t[i,k]])<- u[i] + theta[i,t[i,k]]

  theta[i,t[i,k]] ~ dnorm(md[i,t[i,k]],precd[i,t[i,k]])

  md[i,t[i,k]]<- mean[i,k] + sw[i,k]                                   
  w[i,k]<- (theta[i,t[i,k]]  - mean[i,k])          
  sw[i,k]<- sum(w[i,1:k-1])/(k-1)
  precd[i,t[i,k]]<- prec*2*(k-1)/k  

  mean[i,k] <-d[t[i,k]] - d[t[i,1]] 

}}

从这一点收集结果

for (i in 1:nS) {u[i] ~ dnorm(0,.01)}

tau ~ dnorm(0,.01)                                     
prec<- 1/pow(tau,2)
tau.sq<- pow(tau,2)

d[ref] <- 0 
for(k in 1:(ref-1)) {d[k] ~ dnorm(0,.01)}
for(k in (ref+1):nT) {d[k] ~ dnorm(0,.01)}

治疗排名

for(i in 1:(nT-1)) {
for (j in (i+1):nT) {
  OR[j,i]<- exp(d[j] - d[i])
  LOR[j,i]<- d[j] - d[i]}}

for(j in 1:(ref-1)){ORref[j]<- exp(d[j] - d[ref])}
for(j in (ref+1):nT) {ORref[j]<- exp(d[j] - d[ref])}

数据编码如下

for(k in 1:nT) {
order[k]<- rank(d[],k) 
most.effective[k]<-equals(order[k],1)
for(j in 1:nT) {effectiveness[k,j]<- equals(order[k],j)
cumeffectiveness[k,j]<- sum(effectiveness[k,1:j])}}     

for(k in 1:nT) {
SUCRA[k]<- sum(cumeffectiveness[k,1:(nT-1)]) /(nT-1)
}

for(i in 1:nS) {
for (k in 1:na[i]) {            
  Darm[i,k]<- -2*( r[i,t[i,k]] *log(n[i,t[i,k]]*p[i,t[i,k]]/ 
r[i,t[i,k]])+(n[i,t[i,k]] - r[i,t[i,k]])*log((n[i,t[i,k]]-
n[i,t[i,k]]* p[i,t[i,k]])/(n[i,t[i,k]]- r[i,t[i,k]])))}
D[i]<- sum(Darm[i,1:na[i]])}
D.bar<- sum(D[])
}

1 个答案:

答案 0 :(得分:0)

您使用对象t对数据进行子集化,对象t_RCT在您的R环境中为i = 1。此对象中包含NA值。因此,例如,如果k = 3p,那么您尝试将JAGS中的对象p[i,t[i,k]] = p[1,NA]子集为:

[standalone@localhost:9999 /] module add --name="test" --resources="." Failed to locate C:\EAP-6.4.0\bin\"."

您不能像这样设置子集,因为必须将行和列索引为整数。