我对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[])
}
答案 0 :(得分:0)
您使用对象t
对数据进行子集化,对象t_RCT
在您的R环境中为i = 1
。此对象中包含NA值。因此,例如,如果k = 3
和p
,那么您尝试将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\"."
您不能像这样设置子集,因为必须将行和列索引为整数。