# Standardize the data:
data {
  y.m <- mean(y)
  y.sd <- sd(y)
  for (j in 1:q) {
    for ( i in 1:length(y) ) {
      zY[i,j] <- ( y[i] - y.m ) / y.sd
    } 
  }
  for (j in 1:q) {
    for (k in 1:n.x[j]) {
      x.m[j,k] <- mean(x[, k])
      x.sd[j,k] <- sd(x[, k])
      for (i in 1:n) {
        zX[i, j, k] <- (x[i, k] - x.m[j,k]) / x.sd[j,k]
      }
    }
  }
}
# Specify the model for standardized data:
model {
  for (j in 1:q) {
    for (i in 1:n) {
      zY[i,j] ~ dt(zbeta0[j] + sum(zbeta[j,1:n.x[j]] * zX[i, j, 1:n.x[j]]), 1 / zsigma[j] ^ 2, nu[j])
    }
  }
  # Priors vague on standardized scale:
  for (k in 1:q) {
    zbeta0[k] ~ dnorm(0, 0.001)
    for (l in 1:n.x[k]) {
      zbeta[k,l] ~ dnorm(0, 0.001)
    }
  }
  for (m in 1:q) {
    zsigma[m] <- 1 / sqrt(zsigma.prec[m])
    zsigma.prec[m] ~ dgamma(0.0001,0.0001)
    nu[m] <- nu.prec[m] + 1
    nu.prec[m] ~ dexp(1 / 29)
  }
  
  # Transform to original scale:
  for (n in 1:q) {
    beta[n, 1:n.x[n]] <- (zbeta[n, 1:n.x[n]] / x.sd[n, 1:n.x[n]]) * y.sd
    beta0[n] <- zbeta0[n] * y.sd + y.m - sum(zbeta[n, 1:n.x[n]] * x.m[n, 1:n.x[n]] / x.sd[n, 1:n.x[n]]) * y.sd
    sigma[n] <- zsigma[n] * y.sd
  }
}