intIV <- nimbleCode({
### Prior ####
# betas
beta0 ~ dflat()
for (k in 1:p)
betas[k] ~ dflat()
# sigma
sigma.U ~ dflat()
sigma.v ~ dflat()
sigma.delta ~ dflat()
sigma.sigma ~ dflat()
sigma.delta1it ~ dflat()
sigma.betaU ~ dflat()
sigma.betav ~ dflat()
sigma.gamma ~ dflat()
sigma.betag ~ dflat()
# precision
prec.U <- pow(sigma.U, -2)
prec.v <- pow(sigma.v, -2)
prec.delta <- pow(sigma.delta, -2)
tau.sigma <- pow(sigma.sigma, -2)
tau.delta1it <- pow(sigma.delta1it, -2)
tau.U <- pow(sigma.U, -2)
tau.betaU <- pow(sigma.betaU, -2)
tau.v <- pow(sigma.v, -2)
tau.betav <- pow(sigma.betav, -2)
tau.gamma <- pow(sigma.gamma, -2)
tau.betag <- pow(sigma.betag, -2)
for (i in 1:N){
U[i] ~ dnorm(0, tau.U)
betaU[i] ~ dnorm(0, tau.betaU)
}
v[1:N] ~ dcar_normal(adj = tm.adj[1:L], num = tm.num[1:N], tau = tau.v)
betav[1:N] ~ dcar_normal(adj = tm.adj[1:L], num = tm.num[1:N], tau = tau.betav)
gamma[1] ~ dnorm(0, 1)
betag[1] ~ dnorm(0, 1)
for (t in 2:T){
gamma[t] ~ dnorm(gamma[t-1], tau.gamma)
betag[t] ~ dnorm(betag[t-1], tau.betag)
}
for (t in 2:T) {
delta_1it[1:N, t-1] ~ dcar_normal(adj = tm.adj[1:L], num = tm.num[1:N], tau = tau.delta1it)
}
for (i in 1:N){
for (t in 2:T){
epsilonit[i,t] ~ dflat()
delta_1it[i,t] <- delta_1it[i,t-1] + epsilonit[i,t]
}
for (t in 1:T){
epsilon[i,t] ~ dflat()
beta1[i,t] <- betaU[i] + betav[i] + betag[t] + delta_1it[i, t]
y[i,t] ~ dnorm(beta0 + (beta1[i, t] * x[(N*(t-1))+i, 1]) + (betas %*% x[(N*(t-1))+i, 2:(p+1)]) + U[i] + v[i] + gamma[t] + epsilon[i,t], tau.sigma)
}
}
})