Appropriation et extensions d'un logiciel libre de traitement de réseaux bayésiens complexes pour l’appréciation quantitative des risques alimentaires. Olivier GOUZE 21 JUIN 2005
But Mise en place de nouvelles structures pour l’application au risque. Choisir un logiciel libre pour le traitement de réseaux bayesiens complexes. S’approprier ce logiciel. Coder des extensions fonctionnelles.
Introduction sur l‘approche bayesienne Théorie qui repose sur la formule de Bayes. Choix d’une loi « a priori » sur θ. De plus en plus populaire =>disponibilité d’outils (algorithme, logiciels). Complexe = variables continues.
Algorithmes Stochastiques Méthodes de rejet fondée sur un calcul de probabilité. Méthode de Monte Carlo par chaînes de Markov : Métropolis-Hastings, Echantillonnage de Gibbs. Il est extrêmement difficile de contrôler la vitesse de convergence de la méthode.
Présentation des 2 logiciels OpenBUGS (Open Bayesian inference Using Gibbs Sampling) : Sous Windows (Spiegelhalter), Winbugs 2.0 OpenSource depuis Novembre 2004, Implémenté en « Pascal Component ». JAGS (Just Another Gibbs Sampler ) : Concurrent de OpenBUGS sous Linux (M.Plummer), GNU licence, Implémenté en « C ».
Installation de OpenBUGS Installer la version exécutable de OpenBUGS.(http://mathstat.helsinki.fi/openbugs/) Incorporer les codes sources de OpenBUGS. Installer l’outil de développement BlackBox. Incorporer le dossier OpenBUGS dans le dossier BlackBox, afin de créer une fusion des deux exécutables.
Installation de JAGS Vérifier la présence sur le système des compilateurs C (gcc/g++) et FORTRAN 77 (g77). (Problème sous Mandrake 10.1) Installer la dernière version de l’outil R. Installer JAGS.
Différences entre JAGS et OpenBUGS Format des Données. JAGS code les données comme R. OpenBUGS a un problème de compatibilité avec R. Déclaration des Variables. Interface pour OpenBUGS. Directement dans la déclaration du modèle. Échantillonnage : JAGS a un ensemble de distributions de probabilités plus limité que OpenBUGS. => Certaines ayant une relative mauvaise performance.
Structure de OpenBUGS. Code : Code compilé Docu : Document/Spécification des programmes Rsrc : Fichiers utiles pour le développement (ex. Grammar.txt dans sous systeme Bugs) Mod : Code Pascal Component Sym : Code machine (fichier .osf)
Structure de JAGS. JAGS est beaucoup moins structuré que OpenBUGS. 2 répertoires : lib/ et terminal/ Lib/ contient les librairies utiles pour produire les modèles bayésiens (8 au total : matrix, graph, sampler, model…) Terminal/ permet la mise en place de la lecture des commandes dans le terminal de JAGS.
Choix : OpenBUGS OpenBUGS possède plus de fonctionnalités et une interface utilisateur plus agréable. La documentation de OpenBUGS est beaucoup plus dense. Les objectifs de JAGS (extension, gratuit…) sont obsolètes depuis le passage OpenSource de WinBUGS. Le C++ est plus dur à découvrir pour un néophyte que le Pascal Component JAGS est donc plus difficile à développer. Le but des 2 programmes est aujourd’hui le même, c'est-à-dire de se fondre dans l’environnement R (library pour JAGS, appel de OB par BRugs)
Pascal Component ?(1) Raffinement du langage Oberon-2 Descendant des langages Pascal, Modula 2, Oberon. Principales Caractéristiques : Structure en blocs Modularité Compilation séparée Typage statique avec forte vérification à la compilation Extensions de Type avec Méthodes Chargement dynamique de Modules Garbage Collector (réattribution de mémoire)
Pascal Component ?(2) Langage orienté objet extension de type Les données de type « Abstract » sont des enregistrements extensibles Templates « Langage orienté composant » modèle d’objet dynamique, fort typage
Implémentation sous BlackBox (1)
Implémentation sous BlackBox (2) Utilisation de Templates. Mot clé ABSTRACT, Implémenter les méthodes « mathématiques ». Chargement des modules. Utilisation : Dans les modèles, Comme un programme classique.
Résultats Nouvelles distributions. Nouvelles Fonctions. Ex. Triangular, Empirique Nouvelles Fonctions. Ex. Quantile Utilisation pour l’étude du risque. Sanitaire (publication de Spiegelhalter) Alimentaire
Application au risque alimentaire model{ mu ~ dempirique(20,x[],y[]) } # Maintenant on ajoute les données list( y=c( 1, 2,3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,17, 18,19, 20), x=c(5, 10 ,15, 10 ,5, 10 ,15, 5, 0, 0, 10 ,15, 10,5, 10, 5 , 0, 20, 5) )
Ouvertures Templates sont contraignants : Absence de Template pour les distributions discrètes Absence de Template pour les distributions multivariables Regarder « plus profondément » le code : Contrôler certains facteurs. Afficher des messages d’erreurs explicites. Interface utilisateur (ex. chargement du modèle) Exportation des résultats.