Je suis en train d'analyser une variable ordinale (échelle de 0 à 5). Je cherche à savoir si elle est influencée par deux variables catégorielles, dont l'une (famille, 362 niveaux) est nichée dans l'autre (prov, 25 niveaux). Je souhaite traiter les données en bayésien et pour cela, j'utilise JAGS. Pour le moment, les priors sont non informatifs.
Malheureusement, j'obtiens le message d'erreur suivant :
Error in jags.model(model.file, data = data, inits = init.values, n.chains = n.chains, :
RUNTIME ERROR:
Compilation error on line 25.
Attempt to redefine node betapro[11]
Et bien sur, je ne vois pas d'où vient le problème !
Voici mon script :
Code : Tout sélectionner
prov <- as.numeric(data$PRO)
famille <- as.numeric(data$DESC)
model <- "model{
for(i in 1:N){
mu[i] <- betapro[prov[i] + betadesc[famille[i]]
logit(Q[i,1]) <- alpha[1]-mu[i]
p[i,1] <- Q[i,1]
for(j in 2:5){
logit(Q[i,j]) <- alpha[j]-mu[i]
p[i,j] <- Q[i,j] - Q[i,j-1]
}
p[i,6] <- 1 - Q[i,5]
y[i] ~ dcat(p[i,])
}
## priors over thresholds
for(j in 1:5){
alpha0[j] ~ dnorm(0,1.0E-3)
}
alpha <- sort(alpha0)
for(i in 1:N) {
betapro[prov[i]] ~ dnorm(0,taupro)
betadesc[famille[i]] ~ dnorm(betapro[prov[i]], taudesc)
}
taupro ~ dgamma(0.01, 0.01)
taudesc ~ dgamma(0.01, 0.01)
}
"
writeLines(model,con="model_PRO_DESC.txt")
variable <- data$var + 1
datalist <- list(N=nrow(data), y=variable, prov=prov, famille=famille)
initiale <- list(alpha0 = c(-0.5, -0.25,0, 0.25, 0.5), betapro=rep(0,25), betadesc=rep(0, 362))
nchain <- 3
init <- list(list(alpha0=initiale$alpha0-2,
betapro=initiale$betapro-2,
betadesc=initiale$betadesc-2),
initiale,
list(alpha0=initiale$alpha0+2,
betapro=initiale$betapro+2,
betadesc=initiale$betadesc+2))
Nechantillons <- 10000
burnin <- 1000
eclair<-1
parameters <- c("alpha", "betapro")
DEB13_PRO_DESC <-jags(model.file="model_PRO_DESC.txt", data=datalist, n.chain = nchain, inits=init, parameters.to.save=parameters,
n.iter=Nechantillons, n.burnin=burnin, n.thin=eclair)
Est-ce que quelqu'un peut m'aider ?
Merci par avance !
Sophie