doseresNMA <- function(){
# Begin Model Code
s.beta.2[ref.index] <- 0
s.beta.1[ref.index] <- 0
for(i in 1:ns){ # Run through all NS trials
delta[i,1] <- 0
#DR[i,1] <- 0 # Dose-response model is 0 for baseline arms
mu[i] ~ dnorm(0,0.001)
for (k in 1:na[i]){ # Run through all arms within a study
rhat[i,k] <- p[i,k] * n[i,k]
resdev[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])))
r[i,k] ~ dbin(p[i,k], n[i,k])
logit(p[i,k]) <- theta[i,k]
theta[i,k] <- mu[i] + delta[i,k]
}
resstudydev[i] <- sum(resdev[i, 1:na[i]])
for(k in 2:na[i]){ # Treatment effects
delta[i,k] <- DR[i,k]
DR[i,k] <- ((s.beta.1[t[i,k]] * dose1[i,k]) + (s.beta.2[t[i,k]] * dose2[i,k])) - ((s.beta.1[t[i,1]] * dose1[i,1]) + (s.beta.2[t[i,1]] * dose2[i,1]))
}
}
for (k in c(1:(ref.index - 1), (ref.index + 1):ndrugs)){ # Priors on relative treatment effects
mult[1:2,k] ~ dmnorm(d.prior[], inv.R[1:2, 1:2])
d.2[k] <- mult[2,k]
s.beta.2[k] <- d.2[k]
d.1[k] <- mult[1,k]
s.beta.1[k] <- d.1[k]
}
totresdev <- sum(resstudydev[])
Omega[1,1] <- 1
Omega[2,2] <- 1
for (r in 1:2) {
d.prior[r] <- 0
}
inv.R ~ dwish(Omega[,], 2)
for (r in 1:(2-1)) { # Covariance matrix upper/lower triangles
for (c in (r+1):2) {
Omega[r,c] <- 0 # Lower triangle
Omega[c,r] <- 0 # Upper triangle
}
}
}
mydoseresNMA <- function(){
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])
logit(p[i, k]) <- theta[i,k]
theta[i,k] <- u[i] + delta[i, k]
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]) {
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])
delta[i, k] <- d[i, k]
}
}
for (k in c(1:(ref.index - 1), (ref.index + 1):ndrugs)) {
# b[1:2,k]~dmnorm(b.prior[],inv.R[1:2,1:2])
# # b1[k] <- b[1,k]
# # b2[k] <- b[2,k]
# d1[k] <- b[1,k]
# d2[k] <- b[2,k]
#
# b1[k] <- d1[k]
# b2[k] <- d2[k]
b1[k] ~ dnorm(0.00000E+00, 0.001)
b2[k] ~ dnorm(0.00000E+00, 0.001)
}
# b.prior[1] <- 0
# b.prior[2] <- 0
for (r in 1:2) {
b.prior[r] <- 0
}
inv.R ~ dwish(Omega[,], 2)
Omega[1,1] <- 1
Omega[2,2] <- 1
# Omega[1,2] <- 0
# Omega[2,1] <- 0
for (r in 1:(2-1)) { # Covariance matrix upper/lower triangles
for (c in (r+1):2) {
Omega[r,c] <- 0 # Lower triangle
Omega[c,r] <- 0 # Upper triangle
}
}
}
dosresnetmeta.jagsdata <- makeJAGSdata(data=antidep,metareg=F,class.effect =F,ref.lab='placebo',refclass.lab = 'placebo')
dosresnetmeta.jagsdata$rmin <- dosresnetmeta.jagsdata$r[,1]
dosresnetmeta.jagsdata$nmin <- dosresnetmeta.jagsdata$n[,1]
# jags model
#jagsmodelDRnetmeta<- makeJAGSmodel(metareg=F,beta.effects='random',consistency=T,class.effect=F,doselink='spline')
# run jags model
doseresNMAfit <- jags.parallel(data = dosresnetmeta.jagsdata,inits=NULL,parameters.to.save = c('s.beta.1','s.beta.2'),model.file = doseresNMA,
n.chains=2,n.iter = 10000,n.burnin = 4000,DIC=F,n.thin = 5)
histDRparam2(doseresNMAfit)
# 7. Histogram of DR parameters
histDRparam2 <- function(x=x,metareg=F,class.effect=F){ # , drug.lab=drug.lab
require(tidyr)
param.lab <- c('s.beta.1.','s.beta.2.')
if(metareg){
param.lab0 <- 'g.'
param.lab <- append(param.lab,param.lab0)
}
sims <- x$BUGSoutput$sims.array
sims.mat <- apply(sims,3L,c) # merge the 3 chains (columns into one)
sims.param <- sims.mat%>%data.frame()%>%select(starts_with(param.lab))
plotdata <- data.frame(sim=unlist(c(sims.param)),param=rep(colnames(sims.param),each=nrow(sims.param)))
g <- ggplot(plotdata, aes(x=sim)) +
geom_histogram(alpha=0.6, binwidth = 0.001,color="darkblue", fill="lightblue")
g <- g + ggplot2::facet_wrap(~plotdata$param,scales = 'free')
g <- g + ggplot2::labs(y="Frequency", x="iterations")
g+ theme(axis.line = element_line(colour = "black"),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank())+theme_bw()
}
jagsmodelDRnetmeta<- makeJAGSmodel2(metareg=F,beta.effects='fixed',consistency=T,class.effect=F,doselink='spline')
# run jags model
dosresnetmeta.runjagsRCS <- jags.parallel(data = dosresnetmeta.jagsdata,inits=NULL,parameters.to.save = c('b1','b2'),model.file = jagsmodelDRnetmeta,
n.chains=2,n.iter = 10000,n.burnin = 4000,DIC=F,n.thin = 5)
dosresnetmeta.runjagsRCS$model
mydoseresNMAfit <- jags.parallel(data = dosresnetmeta.jagsdata,inits=NULL,parameters.to.save = c('s.beta.1','s.beta.2'),model.file = mydoseresNMA,
n.chains=2,n.iter = 10000,n.burnin = 4000,DIC=F,n.thin = 5)
mydoseresNMAfit$BUGSoutput$summary[c('s.beta.1[17]','s.beta.2[17]'),]
res12 <- round(cbind(doseresNMAfit$BUGSoutput$mean$s.beta.1,dosresnetmeta.runjagsRCS$BUGSoutput$mean$b1),4)
dif <- unlist(sapply(1:nrow(res12), function(i) res12[i,1]-res12[i,2]))
cbind(res12,dif=dif)
levels(factor(antidep$drug))
antidep[antidep$drug=='reboxetine',]
round(cbind(doseresNMAfit$BUGSoutput$mean$s.beta.2,dosresnetmeta.runjagsRCS$BUGSoutput$mean$b2,mydoseresNMAfit$BUGSoutput$mean$b2),4)
round(rbind(doseresNMAfit$BUGSoutput$summary[c('s.beta.1[17]','s.beta.2[17]'),],dosresnetmeta.runjagsRCS$BUGSoutput$summary[c('b1[17]','b2[17]'),],mydoseresNMAfit$BUGSoutput$summary[c('b1[17]','b2[17]'),]),4)
# dose ditsribution per drug
antidep$tindex <- as.factor(as.numeric(factor(antidep$drug)))
ggplot(data = antidep, aes(x=tindex, y=dose)) +
facet_wrap( ~ drug, scales="free")+
geom_dotplot(binaxis='y', stackdir='center', dotsize=3,col='orange')
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.