I am running the below code for a Multinomial Logistics Regression, but getting an error message "> mr <- run.jags(multinomial_model, n.chains = 2, data = reisby)
Error: No monitors were specified or found in the model block"
library(rjags)
library(runjags)
load("Reisby.Rdata")
reisby = as.data.frame(Reisby)
for (i in 1:length(reisby$hd)) {
if (reisby$hd[i] >= 0 && reisby$hd[i] <= 6) {
reisby$hd[i] = 1
} else if (reisby$hd[i] > 6 && reisby$hd[i] <= 17) {
reisby$hd[i] = 2
} else if (reisby$hd[i] > 17 && reisby$hd[i] <= 24) {
reisby$hd[i] = 3
} else {
reisby$hd[i] = 4
}
}
reisby <- reisby[,-c(1)]
reisby$hd <- as.factor(reisby$hd)
reisby$female <- as.factor(reisby$female)
reisby$reactive_depression <- as.factor(reisby$reactive_depression)
reisby$week = as.factor(reisby$week + 1)
multinomial_model = " model{
for(i in 1:N){
hd[i] ~ dcat(prob[i,1:n_cat])
for(k in 1:n_cat){
log(phi[i,k]) <- intercept[k] +
week[weeks[i],k] +
lnimieffect[k]*lnimi[i]+
lndmieffect[k]*lndmi[i] +
femaleeffect[k]*female[i] +
reactive_depressioneffect[k]*reactive_depression[i]
prob[i,k] <- phi[i,k] / sum(phi[i,1:n_cat])
}
}
for(k in 1:n_cat){
intercept[k] ~ dnorm(0, 1E-6)
femaleeffect[k] ~ dnorm(0, 1E-6)
reactive_depressioneffect[k] ~ dnorm(0, 1E-6)
week[1,k] ~ dnorm(0, 1E-6)
week[2,k] ~ dnorm(0, 1E-6)
week[3,k] ~ dnorm(0, 1E-6)
week[4,k] ~ dnorm(0, 1E-6)
lnimieffect[k] ~ dnorm(0, 1E-6)
lndmieffect[k] ~ dnorm(0, 1E-6)
}
}
"
jags_reisby_data = list(
hd = reisby$hd,
N = nrow(reisby),
n_cat = 4,
lnimi = reisby$lnimi,
lndmi = reisby$lndmi,
female = reisby$female,
reactive_depression = reisby$reactive_depression,
weeks = reisby$week
)
model = jags.model(textConnection(multinomial_model),
data = jags_reisby_data,
n.chains = 6)
update(model, n.iter = 5E4)
th = 100 # Thinning interval
samples = coda.samples(
model,
variable.names = c(
"intercept",
"femaleeffect",
"reactive_depressioneffect",
"week",
"lnimieffect",
"lndmieffect"
),
n.iter = 1E4
)
dic2 = dic.samples(model = model,
n.iter = 1E4,
thin = 60)
dic2
summary(samples)
plot(samples)
gelman.diag(samples)
as.data.frame(samples[[1]][, 11:93])
N <- nrow(reisby)
Categories <- length(levels(reisby$hd))
intercept <- list(chain1 = c(NA,-2, 2, 2), chain2 = c(NA, 2,-2, 2))
lnimieffect <- list(chain1 = c(NA, -2, 2, 2), chain2 = c(NA, 2, -2, 2))
lndmieffect <- list(chain1 = c(NA, -2, 2, 2), chain2 = c(NA, 2, -2, 2))
t1 <- matrix(ncol = Categories, nrow = 2)
t1[2, ] <- c(NA, 2, -2, 2)
t2 <- matrix(ncol = Categories, nrow = 2)
t2[2, ] <- c(NA,-2, 2, 2)
femaleeffect <- list(chain1 = t1, chain2 = t2)
reactive_depressioneffect <-
list(chain1 = t1, chain2 = t2) placeboeffect <-
list(chain1 = t1, chain2 = t2)
mr <- run.jags(multinomial_model, n.chains = 2, data = reisby)
summary(mr)