R/ModelIPDADnetmetareg.R

Defines functions modelIPDADnetmetareg

modelIPDADnetmetareg <-function(){

  # IPD
  for (i in 1:np) { # loop through individuals

    # binomial likelihood of 0/1 bianry outcome y for each individual i of study j in arm k
    y[i]~dbern(p[i])

    # logistic transformation with treatment-by-covariate interactions - to estimate Odds Ratio (OR)
    logit(p[i]) <- u[studyid[i]]+theta[studyid[i],treat[i]]*(1-equals(treat[i],baseline[i]))+
      beta.0[studyid[i]]*(x[i]-37)+
      beta.w[studyid[i],treat[i]]*(x[i]-37)*(1-equals(treat[i],baseline[i]))#+
      # beta.b[studyid[i],treat[i]]*(xbar[i])*(1-equals(treat[i],baseline[i]))
      # beta.w[studyid[i],treat[i]]*(x[i])*(1-equals(treat[i],baseline[i]))
      # beta.w[studyid[i],treat[i]]*(x[i]-xbar[i])*(1-equals(treat[i],baseline[i]))+
      # beta.b[studyid[i],treat[i]]*xbar[i]*(1-equals(treat[i],baseline[i]))
  }
  for(j in 1:nIPD) { # loop through IPD studies

    w[j,1]<- 0
    theta[j,t[j,1]]<- 0
    beta.w[j,t[j,1]] <- 0
    beta.b[j,t[j,1]] <- 0

    for (k in 2:na[j]) { # loop through non-referent IPD arms

      # distribution of random effects
      theta[j,t[j,k]] ~ dnorm(md[j,t[j,k]],precd[j,t[j,k]])

      # accounting for correlation between effect sizes estimated in multi-arm trials
      md[j,t[j,k]]<- mean[j,k] + sw[j,k]
      w[j,k]<- (theta[j,t[j,k]]  - mean[j,k])
      sw[j,k]<- sum(w[j,1:(k-1)])/(k-1)
      precd[j,t[j,k]]<- prec *2*(k-1)/k

      # consistency equations
      mean[j,k] <-d[t[j,k]] - d[t[j,1]]
      beta.w[j,t[j,k]] <- b[t[j,k]] - b[t[j,1]]
      #beta.w[j,t[j,k]] <- bw[t[j,k]] - bw[t[j,1]]
      #beta.b[j,t[j,k]] <- bb[t[j,k]] - bb[t[j,1]]
    }}

  # AD
  for (j in (nIPD+1):(nAD+nIPD)) { # loop through AD studies
    w[j,1]<- 0
    theta[j,t[j,1]]<- 0

    for (k in 1:na[j]) { # loop through AD arms

      # binomial likelihood of number of events for each study j in arm k
      r[(j-nIPD),t[j,k]] ~ dbin(pa[j,t[j,k]],n[(j-nIPD),t[j,k]])
    }

    # referent arm
    logit(pa[j,t[j,1]]) <- u[j]

    for (k in 2:na[j]) { # loop through non-referent AD arms

      # logistic transformation with treatment-by-covariate interactions in study-level - to estimate Odds Ratio (OR)
      logit(pa[j,t[j,k]]) <- u[j]+theta[j,t[j,k]]+(b[t[j,k]] - b[t[j,1]])*(xbar.a[(j-nIPD)]-37)#(bb[t[j,k]] - bb[t[j,1]])*(xbar.a[(j-nIPD)])
      # distribution of random effects
      theta[j,t[j,k]] ~ dnorm(md[j,t[j,k]],precd[j,t[j,k]])

      # accounting for correlation between effect sizes estimated in multi-arm trials
      md[j,t[j,k]]<- mean[j,k] + sw[j,k]
      w[j,k]<- (theta[j,t[j,k]]  - mean[j,k])
      sw[j,k]<- sum(w[j,1:(k-1)])/(k-1)
      precd[j,t[j,k]]<- prec *2*(k-1)/k

      # consistency equations
      mean[j,k] <-d[t[j,k]] - d[t[j,1]]
      #beta.b[j,t[j,k]] <- bb[t[j,k]] - bb[t[j,1]]
    }
  }

  #** PRIORS

  # prior distribution for log-odds in baseline arm of study j
  for (j in 1:(nIPD+nAD)) {u[j] ~ dnorm(0,.01)}

  # prior distribution of the progonostic regression coefficient
  for (j in 1:nIPD) {
    beta.0[j] ~ dnorm(0,.01)
  }

  # prior distribution for heterogeneity
  tau ~ dnorm(0,1)%_%T(0,)
  prec<- 1/pow(tau,2)
  tau.sq<- pow(tau,2)

  # prior distribution for basic parameters
  d[ref] <- 0
  bb[ref] <- 0
  bw[ref] <- 0
  b[ref] <- 0
  for(k in 1:(ref-1)) {
    d[k] ~ dnorm(0,.01)
    # bw[k]~dnorm(m.betaw,prec.betaw)
    # bb[k]~dnorm(m.betab,prec.betab)
    b[k]~dnorm(m.betaw,prec.betaw)
    # bw[k]<-m.betaw
    # bb[k]<-m.betab
  }
  for(k in (ref+1):nt) {
    d[k] ~ dnorm(0,.01)
    b[k]~dnorm(m.betaw,prec.betaw)
    # bw[k]~dnorm(m.betaw,prec.betaw)
    # bb[k]~dnorm(m.betab,prec.betab)
    # bw[k]<-m.betaw
    # bb[k]<-m.betab
  }

  # prior distribution for regression coefficients
  m.betaw~dnorm(0,1e-2)
  tau.betaw~dunif(0,2)
  tau.sq.betaw <- tau.betaw*tau.betaw
  prec.betaw <- 1/tau.sq.betaw

  m.betab~dnorm(0,1e-2)
  tau.betab~dunif(0,2)
  tau.sq.betab <- tau.betab*tau.betab
  prec.betab <- 1/tau.sq.betab

  ##OR for each comparison
  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]}}

}
#
htx-r/GenericModelNMA documentation built on Nov. 10, 2020, 2:36 a.m.