2352 shaares
6 results
tagged
JAGS
Le package a l'air génial
Il y a un logiciel programmable en langage JAGS qui implément le sequential monte carlo!!!!!
Par des mecs de l'INRIA, le truc a l'air super propre, c'est génial.
Par des mecs de l'INRIA, le truc a l'air super propre, c'est génial.
Une autre solution au slicer coincé à l'infini. Et une explication au problème...
grrrrrr
Edit: si le problème se produit, il ne faut pas oublier que la distribution gamma inclue une *fonction* gamma, et que Gamma(x) = (x-1)!
Et la factorielle augmente assez fortement avec x. Donc pour une distribution gamma G(a,b), si a est trop important, Gamma(a) ne pourra être calculé numériquement, et ça se traduira par une valeur infinie. Un bidouillage consiste à tronquer la prior de a si a est une variable à estimer.
grrrrrr
Edit: si le problème se produit, il ne faut pas oublier que la distribution gamma inclue une *fonction* gamma, et que Gamma(x) = (x-1)!
Et la factorielle augmente assez fortement avec x. Donc pour une distribution gamma G(a,b), si a est trop important, Gamma(a) ne pourra être calculé numériquement, et ça se traduira par une valeur infinie. Un bidouillage consiste à tronquer la prior de a si a est une variable à estimer.
La loi gamma est une loi de merde. Mais malheureusement, parfois inévitable.
Je me stocke ça ici pour si jamais un jour je retombe sur le même problème. Quand on ajuste un modèle de tendance temporelle avec des résidus autocorrélés selon un modèle de corrélation exponentielle (Diggle et al. 2002, Analysis of longitudinal data, p. 56) avec JAGS, il ne faut pas générer les résidus en tirant dans une loi multinormale de moyenne nulle que l'on va ajouter à une tendance. Il faut tirer dans une loi multinormale dont le vecteur moyenne EST la tendance. Je me suis arraché les cheveux là-dessus, mais le mélange est bien meilleur si l'on procède comme ça. Autrement dit, il ne faut pas faire ça:
residus~dmnorm(vecteurDeZeros, Omega)
for (i in 1:10) {
esperance[i]<- mu[i] + residus[i]
}
Mais plutôt faire ça:
esperance~dmnorm(mu, Omega)
Les chaînes se mélangent mieux. Fallait le savoir...
Edit: Bon apparemment, la stratégie est connue et est valable pour tout modèle linéaire réclamant un résidu quelconque: on ne doit jamais tirer au sort un résidu dans une loi normale de moyenne nulle. Mais on indique que la réponse suit une loi normale de moyenne correspondant à l'espérance modélisée. Ça s'appelle du hierarchical centring (voir Browne et al. 2009, dans Journal of the Royal Statistical Society). Par contre, il paraît que ça marche pas top quand la variance est faible.
residus~dmnorm(vecteurDeZeros, Omega)
for (i in 1:10) {
esperance[i]<- mu[i] + residus[i]
}
Mais plutôt faire ça:
esperance~dmnorm(mu, Omega)
Les chaînes se mélangent mieux. Fallait le savoir...
Edit: Bon apparemment, la stratégie est connue et est valable pour tout modèle linéaire réclamant un résidu quelconque: on ne doit jamais tirer au sort un résidu dans une loi normale de moyenne nulle. Mais on indique que la réponse suit une loi normale de moyenne correspondant à l'espérance modélisée. Ça s'appelle du hierarchical centring (voir Browne et al. 2009, dans Journal of the Royal Statistical Society). Par contre, il paraît que ça marche pas top quand la variance est faible.
Utiliser JAGS pour ajuster du modèle avec autocorrélation spatiale. À garder sous le coude pour le jour où...
Qui pourrait bien arriver plus rapidement que prévu (je crains cependant qu'on ne soit limité en termes de nombre d'unités spatiales que l'on peut intégrer le modèle).
À lire un jour
Qui pourrait bien arriver plus rapidement que prévu (je crains cependant qu'on ne soit limité en termes de nombre d'unités spatiales que l'on peut intégrer le modèle).
À lire un jour