2338 shaares
Je stocke l'expérience ici car je viens de perdre une semaine à cause de cette connerie.
Quand on ajuste un modèle par MCMC avec un sampler de Gibbs (JAGS, Winbugs, etc.), toutes les variables pour lesquelles on va générer des valeurs jouent sur le comportement du sampler.
Ça a l'air évident à dire, mais je viens de me faire avoir comme un bleu en oubliant ça.
Je cherchais à ajuster un modèle estimant des limites de populations, avec estimation de probabilités de migration d'une pop à l'autre. Et je m'étais dit, tiens, ben comme j'ai tous les éléments nécessaires, pour chaque individu de mon échantillon, je vais échantillonner une appartenance de l'individu à une population dans la posterior. Pour chaque individu, je considère cette appartenance comme une variable cachée n'ayant aucune influence sur mon estimation. Cette appartenance dépend des paramètres estimés, du coup, à chaque itération, je génère une valeur et comme ça à la fin, j'ai déjà les dépendances dont je peux me servir directement à titre exploratoire.
Et j'avais pas pensé que ça marche aussi dans l'autre sens: le sampler de Gibbs, quand il va sampler dans la postérior conditionnelle pour les limites de population, il va le faire conditionnellement aux appartenances des individus à une population à l'itération t. Donc pour modifier une limite de population, il faut simultanément modifier les paramètres qui contrôlent cette limite ET les appartenance de tous les individus "frontaliers" concerné (changer leur "nationalité"). Or, la question du simultané avec un sampler de Gibbs, c'est très compliqué...
Résultat: mélange franchement dégueulasse, et résultat inutilisable.
Bon ben je le saurai pour la prochaine fois. Conclusion évidente toujours bonne à rappeler: On ne met dans le modèle à ajuster que les paramètres que l'on souhaite ajuster. Et rien d'autre.
Quand on ajuste un modèle par MCMC avec un sampler de Gibbs (JAGS, Winbugs, etc.), toutes les variables pour lesquelles on va générer des valeurs jouent sur le comportement du sampler.
Ça a l'air évident à dire, mais je viens de me faire avoir comme un bleu en oubliant ça.
Je cherchais à ajuster un modèle estimant des limites de populations, avec estimation de probabilités de migration d'une pop à l'autre. Et je m'étais dit, tiens, ben comme j'ai tous les éléments nécessaires, pour chaque individu de mon échantillon, je vais échantillonner une appartenance de l'individu à une population dans la posterior. Pour chaque individu, je considère cette appartenance comme une variable cachée n'ayant aucune influence sur mon estimation. Cette appartenance dépend des paramètres estimés, du coup, à chaque itération, je génère une valeur et comme ça à la fin, j'ai déjà les dépendances dont je peux me servir directement à titre exploratoire.
Et j'avais pas pensé que ça marche aussi dans l'autre sens: le sampler de Gibbs, quand il va sampler dans la postérior conditionnelle pour les limites de population, il va le faire conditionnellement aux appartenances des individus à une population à l'itération t. Donc pour modifier une limite de population, il faut simultanément modifier les paramètres qui contrôlent cette limite ET les appartenance de tous les individus "frontaliers" concerné (changer leur "nationalité"). Or, la question du simultané avec un sampler de Gibbs, c'est très compliqué...
Résultat: mélange franchement dégueulasse, et résultat inutilisable.
Bon ben je le saurai pour la prochaine fois. Conclusion évidente toujours bonne à rappeler: On ne met dans le modèle à ajuster que les paramètres que l'on souhaite ajuster. Et rien d'autre.