makeJAGSmodel2 <- function(doselink,metareg,beta.effects,consistency,class.effect){
if(consistency){
dose.str <- "d[i, k] <- (b1[t[i, k]] * dose1[i, k]) - (b1[t[i, 1]] * dose1[i, 1]) + (b2[t[i, k]] *dose2[i, k]) - (b2[t[i, 1]] * dose2[i,1])"
# Absolute effect
abs.eff <- "
for (i in 1:ns) { ## for each study
rr[i,1] ~ dbinom(p0[i],nn[i,1])
logit(p0[i]) <- z[i]
z[i] ~ dnorm(Z, prec.z)
}
# priors
Z ~ dnorm(0, 0.001)
prec.z <- 1/v.z
v.z <- sigma.z * sigma.z
sigma.z ~ dunif(0,10) #!! sprintf not accept dollar sign
for (k in c(1:(ref.index-1),(ref.index+1):ndrugs)){
for( j in 1:nd.new[k]){
OR[j,k] <- exp(b1[k]*new.dose[k,j]+ b2[k]*f.new.dose[k,j])
odds.drug[j,k] <- OR[j,k]*exp(Z)
p.drug[j,k] <- odds.drug[j,k]/(1+odds.drug[j,k])
}
}
"
}else{
dose.str <- "d[i,k] <- beta1[t[i,1],t[i,k]]*dose1[i,k] + beta2[t[i,1],t[i,k]]*dose2[i,k]"
prior.b1.str <- "
for (i in 1:ncomp){
beta1[t1[i],t2[i]] <- bb1[t1[i],t2[i]]
bb1[t1[i],t2[i]] ~ dnorm(0,0.001)
}"
prior.b2.str <- "
for (i in 1:ncomp){
beta2[t1[i],t2[i]] <- bb2[t1[i],t2[i]]
bb2[t1[i],t2[i]] ~ dnorm(0,0.001)
}"
}
if (metareg) {
metareg.str <- "+ (gamma[t[i,k]] - gamma[t[i,1]])*cov[i]"
prior.b.str <- "
gamma[ref.index] <- 0
for (k in c(1:(ref.index-1),(ref.index+1):ndrugs)){
gamma[k] ~ dnorm(g,prec.g)
}
g ~dnorm(0,0.001)
tau.g~dunif(0,5) # common standard deviation is given a vague prior
prec.g<-pow(tau.g,-2) # common precision in RE-NMA model
"
}else{metareg.str <- ""
prior.b.str<- ""
}
if (beta.effects == "fixed"){
beta1.effect <- "
for(i in 1:ns){
beta1[i,ref.index] <- 0
for (k in c(1:(ref.index-1),(ref.index+1):ndrugs)){
beta1[i,k] <- b1[k]
}}
"
beta2.effect <- "
for(i in 1:ns){
beta2[i,ref.index] <- 0
for (k in c(1:(ref.index-1),(ref.index+1):ndrugs)){
beta2[i,k] <- b2[k]
}
}
"
}
if (beta.effects == "random"){
beta1.effect <- "
for(i in 1:ns){
beta1[i,ref.index] <- 0
for (k in c(1:(ref.index-1),(ref.index+1):ndrugs)){
beta1[i,k] ~ dnorm( b1[k],prec.beta)
}
}
tau.beta~dunif(0,5) # common standard deviation is given a vague prio
prec.beta<-1/pow(tau.beta,2) # common precision in RE-NMA model
"
beta2.effect <- "
for(i in 1:ns){
beta2[i,ref.index] <- 0
for (k in c(1:(ref.index-1),(ref.index+1):ndrugs)){
beta2[i,k] ~ dnorm(b2[k],prec.beta)
}
}"
}
link.str <- "logit(p[i,k]) <- u[i] + delta[i,k]"
link.str <- paste0(link.str, metareg.str)
if(consistency){
code.str <- sprintf("
#model{
b1[ref.index] <- 0
b2[ref.index] <- 0
for (i in 1:ns) {
delta[i, 1] <- 0
#d[i, 1] <- 0.00000E+00
u[i] ~ dnorm(0, 0.001)
for (k in 1:na[i]) {
r[i, k] ~ dbin(p[i, k], n[i, k])
%s
rhat[i, k] <- p[i, k] * n[i, k]
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])))
}
resdev[i] <- sum(dev[i, 1:na[i]])
for (k in 2:na[i]) {
%s # dose-response fun
delta[i, k] <- d[i, k]
}
}
for (k in c(1:(ref.index - 1), (ref.index + 1):ndrugs)) {
b1[k] ~ dnorm(0.00000E+00, 0.001)
b2[k] ~ dnorm(0.00000E+00, 0.001)
}
%s # prior for gamma
%s # absolute effect
# heterogeniety across trials
tau~dunif(0,1) # common standard deviation is given a vague prior
precd<-pow(tau,-2) # common precision in RE-NMA model
totresdev <- sum(resdev[])
#}
",link.str,dose.str, prior.b.str,abs.eff)
}else{
code.str <- sprintf("
for(i in 1:ns){ # Run Through all ns trials
w[i,1] <-0
delta[i,1]<-0
u[i] ~ dnorm(0,0.001)
for (k in 1:na[i]){
r[i,k] ~ dbin(p[i,k],n[i,k])
logit(p[i,k])<- theta[i,k]
theta[i,k] <- u[i] + delta[i,k] # Trial specific u + EMaxModel from RE
}
for (k in 2:na[i]){
%s # linkstr
delta[i,k] ~ dnorm(d[i,k],prec)
}
}
%s # prior for b1
%s # prior for b2
# heterogeniety across trials
tau~dunif(0,5) # common standard deviation is given a vague prior
prec<-1/pow(tau,2) # common precision in RE-NMA model
",dose.str,prior.b1.str,prior.b2.str)
}
jagsmodelDRnetmeta <- (eval(parse(text=paste0('jagsmodelDRnetmeta <- function(){',code.str,'}'))))
return(jagsmodelDRnetmeta)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.