Méthodes de Monte-Carlo avec R
Springer Paris Berlin Heidelberg New York Hong Kong Londres Milan Tokyo
Christian P. Robert George Casella
Méthodes de Monte-Carlo avec R Traduit de l’anglais par Joachim Robert, Robin Ryder, Julyan Arbel, Pierre Jacob et Brigitte Plessis
Christian P. Robert Ceremade – Université Paris-Dauphine Institut Universitaire de France et CREST Place du Maréchal-de-Lattre-de-Tassigny 75775 Paris Cedex 16 France
George Casella Department of Statistics University of Florida 103 Griffin-Floyd Hall Gainesville FL 3261-8545 USA ISBN : 978-2-8178-0180-3 Springer Paris Berlin Heidelberg New York ISSN : 2112-8294 © Springer-Verlag France, 2011 Traduction de l’édition en langue anglaise : Christian P. Robert & George Casella, Introducing Monte Carlo Methods With R Copyright © 2010 Springer Science + Business Media LLC Tous droits réservés Imprimé en France
Springer-Verlag est membre du groupe Springer Science + Business Media Cet ouvrage est soumis au copyright. Tous droits réservés, notamment la reproduction et la représentation, la traduction, la réimpression, l’exposé, la reproduction des illustrations et des tableaux, la transmission par voie d’enregistrement sonore ou visuel, la reproduction par microfilm ou tout autre moyen ainsi que la conservation des banques de données. La loi française sur le copyright du 9 septembre 1965 dans la version en vigueur n’autorise une reproduction intégrale ou partielle que dans certains cas, et en principe moyennant le paiement des droits. Toute représentation, reproduction, contrefaçon ou conservation dans une banque de données par quelque procédé que ce soit est sanctionnée par la loi pénale sur le copyright. L’utilisation dans cet ouvrage de désignations, dénominations commerciales, marques de fabrique, etc. même sans spécification ne signifie pas que ces termes soient libres de la législation sur les marques de fabrique et la protection des marques et qu’ils puissent être utilisés par chacun. La maison d’édition décline toute responsabilité quant à l’exactitude des indications de dosage et des modes d’emploi. Dans chaque cas il incombe à l’usager de vérifier les informations données par comparaison à la littérature existante.
Maquette de couverture : Jean-François Montmarché
Collection Pratique R dirigée par Pierre-André Cornillon et Eric Matzner-Løber Département MASS Université Rennes-2-Haute-Bretagne France
Comité éditorial : Eva Cantoni Département d’économétrie Université de Genève Suisse Vincent Goulet École d’actuariat Université Laval Canada Philippe Grosjean Département d’écologie numérique des milieux aquatiques Université de Mons Belgique
Nicolas Hengartner Los Alamos National Laboratory USA François Husson Département Sciences de l’ingénieur Agrocampus Ouest France Sophie Lambert-Lacroix Département IUT STID Université Pierre Mendès France France
Déjà paru dans la même collection : Régression avec R Pierre-André Cornillon, Eric Matzner-Løber, 2011
À paraître dans la même collection : Séries temporelles avec R Yves Aragon, 2011
To our parents, who taught us much in many ways.
REMERCIEMENTS Nous sommes profondément reconnaissants à nos collègues et amis pour l’aide qu’ils nous ont prodiguée, en particulier à Ed George pour ses commentaires sur l’orientation générale du livre et sur quelques exercices spécifiques ; Jim Hobert et Fernando Quintana pour des discussions formatrices sur la version Monte-Carlo de l’algorithme EM ; Alessandra Iacobucci pour avoir repéré à temps une erreur fatale ; Jean-Michel Marin pour nous avoir permis de recycler le premier chapitre de Bayesian Core (Marin & Robert, 2007) en notre introduction à R et pour de nombreux conseils sur R et sur la pédagogie du livre ; Antonietta Mira pour les erreurs signalées lors d’une session d’une conférence MCMC à Warwick ; François Perron pour son invitation (de Christian Robert) à Montréal, qui a donné à celuici la fenêtre nécessaire pour finir le Chapitre 8 (et l’opportunité de faire de la cascade de glace à Québéc !), ainsi qu’à François Perron et Clémentine Trimont pour avoir testé la version bêta du livre des points de vue respectifs du professeur et de l’étudiante ; Martyn Plummer pour ses réponses à nos questions sur coda ; Jeff Rosenthal pour des échanges illuminants sur amcmc ; Dimitris Rizopoulos pour son Exercise 7.10 ; et Phil Spector de Berkeley pour l’aide anonyme fournie par ses notes et transparents sur R disponibles sur le Web, maintenant publiées dans Spector (2009). Les commentaires des deux rapporteurs ont été particulièrement utiles dans l’étape finale de rédaction. Nous sommes aussi reconnaissants à John Kimmel de Springer, New York, pour ses conseils et son efficacité, mais aussi pour avoir créé la série Use R ! chez Springer, fournissant ainsi une tribune pour le développement du langage R. Enfin, au nom de la communauté R tout entière, nous remercions les professeurs Gentleman et Ihaka pour avoir développé le langage R et pour l’avoir fait dans le cadre de l’open-source. Sur la traduction Cette version française de Introduction to Monte Carlo Methods with R a été réalisée par Joachim Robert (Chapitres 2 à 4), Robin Ryder (Chapitres 5 et 7), Julyan Arbel (Chapitre 6), Pierre Jacob (Chapitre 8) et Brigitte Plessis (Chapitre 4), sous la supervision du premier auteur. Nous sommes reconnaissants à ces traducteurs pour avoir produit une version quasi définitive en quelques mois. Merci aussi à Mathilde Bouriga pour sa relecture. Nous apprécions également l’effort fourni par Springer Paris pour lancer la collection Pratique R, ainsi que le soutien de Charles Ruelle, d’Eric Matzner-Løber et de Pierre-André Cornillon. Sceaux et Gainesville 7 décembre 2010
Christian P. Robert et George Casella
AVANT-PROPOS “After that, it was down to attitude.” Ian Rankin Black & Blue Le but de ce livre est de fournir une porte d’entrée autonome dans le domaine des méthodes de calcul de type Monte-Carlo. Tout d’abord, il ne doit pas être pris comme une annexe technique de notre précédent livre, Monte Carlo Statistical Methods, dont la seconde édition est parue en 2004. Ce nouveau livre vise un autre but, qui est de rendre un public plus vaste à même de programmer en R les méthodes de Monte-Carlo en le guidant dans ses premiers pas. Par conséquent, les aspects du langage R sont centraux dans ce livre, dont le contenu est clairement différent de celui de Monte Carlo Statistical Methods. Evidemment, la vision globale du champ des méthodes simulées n’en demeure pas moins la même, mais nous avons supprimé ici toute insertion dans les aspects théoriques de ces méthodes. L’insistance sur le côté pratique de cette introduction a en effet pour but de faire en sorte qu’un public composé d’abord d’étudiants en statistique, biostatistique, traitement du signal, économétrie, etc., devienne assez familier avec les méthodes de simulation pour les utiliser dans son travail quotidien. Le livre est aussi conçu pour les scientifiques de toutes les disciplines, attirés par la versatilité des outils de Monte-Carlo. Il peut de plus être employé dans des cours de statistique plus traditionnels, en tant que rapide introduction, via R, aux méthodes modernes de calcul statistique, par exemple en fin de Licence comme c’est le cas à l’Université Paris-Dauphine. Le choix d’un langage de programmation comme R, au lieu d’alternatives plus efficaces comme Matlab ou C et de logiciels plus élaborés comme BUGS, est fondé sur sa simplicité d’apprentissage et sur sa versatilité. Les lecteurs peuvent aisément élaborer des expériences par eux-mêmes dans le langage qu’ils ou elles préfèrent à partir des exemples fournis dans ces pages. (Bien entendu, ce livre peut servir comme supplément à des livres plus traditionnels comme nos livres Le Choix Bayésien (Robert, 2006) et Monte Carlo Statistical Methods (Robert & Casella, 2004).) Enfin, ce livre peut aussi être vu comme un compagnon, plutôt que comme un concurrent, du livre R de Jim Albert Bayesian Computation with R (Albert, 2009). De fait, envisagé en tandem, ces deux livres fournissent une introduction parfaite aux aspects empiriques des méthodes de Monte-Carlo et de modélisation bayésienne. Dès cette première page, nous insistons sur le fait que, dans une perspective de production (c’est-à-dire dans l’utilisation de méthodes de Monte-Carlo avancées pour l’analyse de jeux de données complexes), R ne peut être recommandé comme langage de programmation par défaut. Cependant, l’expertise et l’intuition accumulées lors de la lecture de ce livre devraient hautement faciliter le passage à un autre langage de programmation.
Contrairement aux usages standard, nous avons choisi d’inclure les exercices aux endroits les plus appropriés du texte, plutôt que d’attendre systématiquement la fin de chaque chapitre. Ce choix n’est pas toujours compris mais nous avions au moins deux raisons. D’une part, les exercices peuvent servir à établir des résultats ou des procédures nécessaires dans la suite du chapitre mais pénibles à construire. D’autre part, ces exercices signalent au lecteur qu’une étape de révision ou tout du moins de réflexion est la bienvenue avant d’accéder au thème suivant. Les exercices peuvent donc servir d’auto-tests, d’autant que les exercices à numéro impair sont corrigés sur Internet (voir nos pages personnelles ou le site de Springer). Des exercices supplémentaires sont aussi fournis à la fin de chaque chapitre.
Table des matières Avant-propos 1 Préliminaires 1.1 Introduction . . . . . . . . . . . . . . . 1.2 La librairie mcsm . . . . . . . . . . . . 1.3 Distributions de probabilité prédéfinies 1.4 Quelques mots sur le bootstrap . . . . 1.5 Exercices supplémentaires . . . . . . .
xi
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
1 2 3 5 6 9
2 Génération de variables aléatoires 2.1 Introduction . . . . . . . . . . . . . . . . . . . 2.1.1 La simulation uniforme . . . . . . . . 2.1.2 Méthode de la transformation inverse 2.2 Méthodes de transformation générales . . . . 2.2.1 Un générateur aléatoire normal . . . . 2.2.2 Distributions discrètes . . . . . . . . . 2.2.3 Représentations par mélange . . . . . 2.3 Méthodes de rejet . . . . . . . . . . . . . . . 2.4 Exercices supplémentaires . . . . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
11 12 12 14 16 17 19 21 22 28
3 Intégration de Monte-Carlo 3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.1 Intégration numérique . . . . . . . . . . . . . . . 3.2 L’intégration classique de Monte-Carlo . . . . . . . . . . 3.3 Echantillonnage préférentiel . . . . . . . . . . . . . . . . 3.3.1 Un changement arbitraire de mesure de référence 3.3.2 Rééchantillonnage préférentiel . . . . . . . . . . . 3.3.3 Sélection de la loi instrumentale . . . . . . . . . 3.4 Exercices supplémentaires . . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
33 34 34 37 41 42 47 51 59
Contrôler et accélérer la convergence 4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
63 64
4
. . . . . . en R . . . . . .
xiv
Méthodes de Monte-Carlo avec R 4.2 4.3 4.4 4.5 4.6 4.7
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
65 67 72 74 80 84 84 87 89 95
5 Optimisation par les méthodes de Monte-Carlo 5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Méthodes d’optimisation numérique . . . . . . . . . . . . . 5.3 Recherche stochastique . . . . . . . . . . . . . . . . . . . . . 5.3.1 Une solution basique . . . . . . . . . . . . . . . . . . 5.3.2 Méthodes de gradient stochastique . . . . . . . . . . 5.3.3 Recuit simulé . . . . . . . . . . . . . . . . . . . . . . 5.4 Approximation stochastique . . . . . . . . . . . . . . . . . . 5.4.1 Optimisation d’approximations de Monte-Carlo . . . 5.4.2 Modèles à données manquantes et démarginalisation 5.4.3 L’algorithme EM . . . . . . . . . . . . . . . . . . . . 5.4.4 EM par Monte-Carlo . . . . . . . . . . . . . . . . . . 5.5 Exercices supplémentaires . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
99 100 101 104 104 110 113 120 121 124 125 130 137
6 Algorithmes de Metropolis–Hastings 6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 6.2 Aperçu sur la théorie des chaînes de Markov . . . . . . . 6.3 Algorithmes de Metropolis–Hastings élémentaires . . . . 6.3.1 Un algorithme MCMC générique . . . . . . . . . 6.3.2 Algorithme de Metropolis–Hastings indépendant 6.4 Sélection des lois de proposition . . . . . . . . . . . . . . 6.4.1 Marches aléatoires . . . . . . . . . . . . . . . . . 6.4.2 Lois de proposition alternatives . . . . . . . . . . 6.4.3 Choix de modèles . . . . . . . . . . . . . . . . . . 6.5 Taux d’acceptation . . . . . . . . . . . . . . . . . . . . . 6.6 Exercices supplémentaires . . . . . . . . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
141 142 142 144 145 149 156 156 160 163 166 169
7 Echantillonneurs de Gibbs 7.1 Introduction . . . . . . . . . . . . . . . . . . . 7.2 L’échantillonneur de Gibbs à deux étapes . . 7.3 L’échantillonneur de Gibbs à plusieurs étapes 7.4 Données manquantes et variables latentes . . 7.5 Structures hiérarchiques . . . . . . . . . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
173 174 174 179 183 195
4.8
Evaluation de la variation . . . . . . . . . . . . . . . . . Variance asymptotique de l’échantillonnage préférentiel . Taille effective et perplexité d’un échantillon . . . . . . . Contrôles simultanés . . . . . . . . . . . . . . . . . . . . Rao–Blackwellisation et déconditionnement . . . . . . . Méthodes d’accélération . . . . . . . . . . . . . . . . . . 4.7.1 Simulations corrélées . . . . . . . . . . . . . . . . 4.7.2 Variables antithétiques . . . . . . . . . . . . . . . 4.7.3 Variables de contrôle . . . . . . . . . . . . . . . . Exercices supplémentaires . . . . . . . . . . . . . . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . . . . . . .
Table des matières 7.6
7.7
Autres considérations . . . . . . . . . . . . . . . . . 7.6.1 Reparamétrisation . . . . . . . . . . . . . . . 7.6.2 Rao–Blackwellisation . . . . . . . . . . . . . . 7.6.3 Metropolis dans Gibbs et stratégies hybrides 7.6.4 Distributions a priori impropres . . . . . . . . Exercices supplémentaires . . . . . . . . . . . . . . .
8 Contrôle et adaptation des algorithmes MCMC 8.1 Introduction . . . . . . . . . . . . . . . . . . . . . 8.2 Que contrôler et pourquoi ? . . . . . . . . . . . . 8.2.1 Convergence vers la loi stationnaire . . . . 8.2.2 Convergence de moyennes . . . . . . . . . 8.2.3 Approcher les échantillons iid . . . . . . . 8.2.4 La librairie coda . . . . . . . . . . . . . . 8.3 Contrôler la convergence vers la stationnarité . . 8.3.1 Diagnostics graphiques . . . . . . . . . . . 8.3.2 Tests non paramétriques de stationnarité 8.3.3 Analyse spectrale . . . . . . . . . . . . . . 8.4 Contrôler la convergence des moyennes . . . . . . 8.4.1 Diagnostics graphiques . . . . . . . . . . . 8.4.2 Variances intra et inter . . . . . . . . . . 8.4.3 Taille effective d’échantillon . . . . . . . . 8.4.4 Moyennes par lots de taille fixée . . . . . 8.5 MCMC adaptatif . . . . . . . . . . . . . . . . . . 8.5.1 Précautions d’emploi . . . . . . . . . . . . 8.5.2 La librairie amcmc . . . . . . . . . . . . . 8.6 Exercices supplémentaires . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
xv
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
197 198 200 204 206 209
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
211 212 212 212 214 214 215 216 216 219 221 225 225 227 229 231 233 233 237 240
Bibliographie
243
Index
249
Index des commandes
255
Chapitre 1
Préliminaires “You’re missing the big picture,” he told her. “A good album should be more than the sum of its parts.” Ian Rankin Exit Music
Guide du lecteur Le Guide du lecteur est un paragraphe précédant chaque chapitre, couvrant son contenu en quelques phrases et signalant les éléments fondamentaux de ce chapitre. Par exemple, ce premier chapitre couvre les conventions adoptées dans ce livre et fonctionne comme un court manuel de R. Il ne traite pas en détail des bases de la programmation dans le langage R, puisque celui-ci est supposé assimilé avant de démarrer la lecture du livre. Nous rappelons simplement ici les fonctions de R liées à la simulation, décrivons les fonctionnalités de la librairie mcsm et donnons un bref aperçu de la notion de bootstrap, procédure statistique dépendant si fortement de la simulation qu’elle en est devenue inséparable.
C. P. Robert et al., Méthodes de Monte-Carlo avec R © Springer-Verlag France 2011
2
Méthodes de Monte-Carlo avec R
1.1
Introduction
En cas de doute sur l’étendue de vos connaissances en R, vous pouvez consulter le monumental R Book de Crawley (2007), l’introduction de Dalgaard (2002), le manuel plus technique sur les structures de données en R par Spector (2009), voire le chapitre introductif de Robert & Casella (2009). (De nombreuses introductions sont aussi disponibles sur Internet 1 .) Le meilleur moyen de vous rassurer est cependant de s’exercer sur les exemples fournis dans ce livre et dans la librairie associée, mcsm, utilisant les commandes en ligne help() et help.search() pour obtenir une information sur une fonction inconnue ou sur un concept plus général. Dans ce premier paragraphe, nous essayons de justifier quelque peu notre choix du langage R comme support de cette introduction aux méthodes de Monte-Carlo. En effet, il existe de nombreuses alternatives, la plupart plus rapides que R, comme par exemple Matlab, et certaines sont gratuites, comme C ou Python. Bien entendu, notre choix ne procède pas d’une perspective militante ou commerciale. Nous nous sommes appuyés sur ce langage car il est d’un apprentissage facile tout en offrant de hautes capacités de programmation et une syntaxe claire, ainsi que de remarquables facilités graphiques. Le fait qu’il soit interprété, plutôt que compilé, entraîne qu’il est nécessairement plus lent mais aussi plus facile à déboguer. De plus, son aspect open source implique qu’il dispose d’une importante communauté de contributeurs en statistique comme dans d’autres domaines. Enfin, le langage R dispose d’une interface puissante qui permet d’intégrer des (parties de) programmes écrits dans d’autres langages comme C, C++, Fortran, Perl, Python et Java. L’évaluation des performances d’un programme (ou d’une partie d’un programme) peut se faire via la commande system.time ou les commandes plus évoluées Rprof et Rprofmem décrites dans le manuel. En toute rigueur, R est fondamentalement plus lent que les autres langages ! Il existe néanmoins des façons d’accélérer l’exécution d’un programme. Tout d’abord, l’utilisation de fonctions plus rapides (comme celles déjà programmées en C) apporte évidemment une amélioration. Ensuite, une préallocation de la mémoire comme dans x=double(10^5) accroît également la vitesse. Enfin, et ceci dépasse les objectifs de cette introduction, il est possible de recompiler des parties de la librairie R avec des librairies conçues pour votre machine. Un exemple en est Blas (basic linear algebra subprogram), qui peut être optimisée en utilisant la librairie Atlas (et conduit à des améliorations par des facteurs de deux à cinq). Les détails peuvent se trouver dans le manuel d’administration de R. De même, et cela exige aussi des capacités certaines en programmation, vous pouvez tirer parti des multiprocesseurs de votre ordinateur, utilisant par exemple netWorkSpace (NWS), Rpmi, ou snow, développé par Luke Tierney. Bien que nous ne puissions développer plus avant le sujet de l’interfaçage de R avec d’autres langages, nous soulignons néanmoins que cette caractéristique de R demande un approfondissement de votre part, simplement parce qu’il existe des 1. Au minimum, vous pouvez vous assurer des commandes de base sur la fiche de rappel cran.r-project.org/doc/contrib/Short-refcard.pdf.
Chapitre 1. Préliminaires problèmes que R seul ne peut pas traiter ! Utiliser des sous-programmes écrits en C ou en Fortran devient alors une exigence qui permet de conserver les avantages principaux de R. La manière la plus facile de connecter R avec du code externe comme le programme C exécutable mycprog.o est de concevoir ce programme C de sorte qu’il prenne comme input un fichier comme mycinput et écrive son output dans un autre fichier comme mycouput. Dans ce cas, utiliser la ligne > system("mycprog.o") dans le programme R est suffisant. Bien sûr, c’est un type rudimentaire d’interface et il souffre de deux défauts, le premier étant que des accès répétés à des fichiers externes est coûteux en temps, le second étant qu’un programme C ne peut pas appeler des fonctions R comme cela. Une approche plus élaborée est fondée sur la fonction .C, qui peut appeler des fonctions C avec des arguments, et la subroutine C call_R, comme le décrit par exemple Crawley (2007). La difficulté principale de ces techniques plus avancées consiste en la vérification de la compatibilité entre les types de données. La section 8.5.2 fournit une illustration d’un programme C appelé par un programme R de manière efficace.
1.2
La librairie mcsm
Pour des raisons évidentes de gestion de mémoire, R n’installe pas à chaque démarrage les milliers de librairies existantes mais seulement un sous-ensemble de librairies de base, qui sont base, stats, graphics, nmle et lattice. Les librairies peuvent être chargées par la commande library, comme dans > library(combinat) # utilitaires de combinatoire > library(datasets) # package R de jeux de données La liste complète de toutes les librairies disponibles est fournie par library() 2 . Pour installer une nouvelle librairie comme la librairie mcsm qui a été élaborée spécialement pour ce livre, il suffit d’appeler (une seule fois) > install.package("mcsm") ou > download.package("mcsm") en ayant choisi un site miroir proche de vous. Ensuite, la librairie peut être réutilisée par la commande library, par exemple library(mcsm). Toutes les fonctions définies dans la librairie sont alors disponibles au même titre que les fonctions des librairies de base. 2. Les librairies qui ont été validées et testées par l’équipe centrale de R peuvent être téléchargées sur http://cran.r-project.org/src/contrib/PACKAGES.html
3
4
Méthodes de Monte-Carlo avec R Comme ce livre est tout d’abord conçu pour sa version papier, recopier les codes R imprimés dans les pages qui suivent sur votre ordinateur est une perte de temps. Nous avons par conséquent rassemblé tous les programmes de la version anglaise de ce livre (Robert & Casella, 2009) dans une librairie R appelée mcsm. (Puisque la version anglaise de ce premier chapitre est plus longue, certaines fonctions de mcsm ne sont pas présentées dans ce livre.) Le nom mcsm a en fait été choisi par référence au livre originel, Monte Carlo Statistical Methods, écrit en 1998. Cette librairie devrait être téléchargée du CRAN avant que vous n’entamiez le prochain chapitre. Une reproduction pas-à-pas des exemples discutés dans ce livre s’obtient via la commande demo : > demo(Chapter.1) demo(Chapter.1) ---- ~~~~~~~~~ Type
to start :
> # Chapter 1 R commands > > # Section 1.3.2 > > x=matrix(1:4,ncol=3) > print(x[x>5]) integer(0) > print(x[1.]) [1] 1 > S=readline(prompt="Type Type to continue :
to continue : ")
et de même pour les chapitres suivants. Bien entendu, toute commande ou toute fonction contenue dans les démonstrations de la librairie peut être modifiée, une fois mcsm chargé (mais sans conséquence sur les appels futurs à mcsm).
Même si la plupart des étapes de ces démonstrations sont courtes, certaines demandent un certain temps pour s’exécuter. Rappelez-vous qu’un programme en cours peut toujours s’interrompre par la commande (universelle) Ctrl-C.
Chapitre 1. Préliminaires
1.3
Distributions de probabilité prédéfinies en R
R étant en grande partie promu et développé par des statisticiens, il va de soi que les distributions de probabilité y occupent une place importante. Ainsi, la plupart des lois usuelles y apparaissent sous la forme assez spécifique d’un noyau, comme norm, auquel s’associent les préfixes d, p, q et r correspondant aux quatre fonctions de base qui sont la fonction de répartition (p), la fonction quantile (q), la densité (d) et la procédure de simulation (r). Par exemple, dnorm, pnorm, qnorm et rnorm sont les versions de ces fonctions pour la loi normale. Le Tableau 1.1 décrit la structure des fonctions pour les lois les plus standard, ainsi que les paramètres par défaut quand ils existent. La plupart des fonctions exigent une ou des entrées, comme par exemple pnorm(1.96) ou rnorm(10,mean=3,sd=3), q et n n’ayant pas de valeur par défaut. (On rappelle que pnorm et qnorm sont inverses l’une de l’autre.) Loi bêta binomiale Cauchy chi-deux exponentielle F, Fisher gamma géométrique hypergéométrique log-normale logistique normale Poisson t, Student uniforme Weibull
Noyau beta binom cauchy chisq exp f gamma geom hyper lnorm logis norm pois t unif weibull
Paramètres shape1, shape2 size, prob location, scale df 1/mean df1, df2 shape,1/scale prob m, n, k mean, sd location, scale mean, sd lambda df min, max shape
Valeurs par défaut
0, 1 1 NA, 1
0, 1 0, 1 0, 1
0, 1
Tableau 1.1 – Lois de probabilité standard avec leur noyau R et leur paramétrisation. Exercice 1.1 Etudier les propriétés de la fonction R lm à partir de données simulées comme dans > > > >
x=rnorm(20) y=3*x+5+rnorm(20,sd=0.3) reslm=lm(y∼x) summary(reslm)
Les fondements de la simulation pour la loi normale (et les autres lois usuelles) seront discutés dans le Chapitre 2. Mais la fonction rnorm et ses semblables doivent
5
6
Méthodes de Monte-Carlo avec R dès à présent être considérées comme représentant “l’état de l’art” pour la simulation des lois standard.
1.4
Quelques mots sur le bootstrap
Cette section est consacrée au bootstrap. Cette procédure statistique de rééchantillonnage a de nombreuses applications en statistique (voir Efron & Tibshirani, 1993), mais nous l’incluons dans ce chapitre à la fois pour ses liens très étroits avec la simulation et comme méthode universelle de construction de distribution d’erreurs. Pour les lecteurs peu familiers avec la notion de bootstrap, rappelons ici que cette méthode statistique se fonde sur le fait que la distribution empirique d’un échantillon X1 , . . . , Xn converge avec n vers la distribution véritable. (La distribution empirique est une loi discrète qui met un poids de 1/n en chaque point Xi de l’échantillon et 0 partout ailleurs.) L’idée de base du bootstrap est d’utiliser cette distribution empirique comme substitut de la distribution véritable pour en déduire des estimateurs de la variance et des intervalles de confiance pour les quantités d’intérêt. Du fait du support fini mais très grand de la loi d’un échantillon tiré de la loi empirique, puisque ce support comprend nn points, des approximations de Monte-Carlo sont presque inévitablement nécessaires pour évaluer toute espérance suivant cette loi, comme le montre l’exemple 1.1.
Fig. 1.1 – Histogramme de 2500 moyennes bootstrap d’un échantillon de taille 8 généré à partir d’une loi gamma G(4, 1) et approximation normale en superposition. Ainsi, si nous disposons d’un échantillon observé y, créer un échantillon bootstrap y∗ se fait par le code R > ystar=sample(y,replace=TRUE) La Figure 1.1 représente un histogramme de 2500 moyennes bootstrap obtenues par mean(ystar) et associées avec l’échantillon observé
Chapitre 1. Préliminaires > y=c(4.313, 4.513, 5.489, 4.265, 3.641, 5.106, 8.006, 5.087) ainsi que la densité de l’approximation normale fondée sur l’échantillon observé (soit donc sur la moyenne empirique et la variance empirique de y). L’échantillon ci-dessus est en fait tiré d’une loi gamma G(4, 1) et cet histogramme montre que l’approximation bootstrap capture d’une certaine manière l’asymétrie de la distribution de y¯ (car la taille d’échantillon n = 8 est trop petite pour que le Théorème de la Limite Centrale s’applique). L’écart type de l’échantillon est 0.4699, à comparer avec l’écart type de l’échantillon bootstrap qui est 0.4368. Une difficulté particulière dans l’implantation de la technique bootstrap est de déterminer à quelles quantités elle doit s’appliquer. L’analyse de ce problème fondamental ne peut être proposée dans ce livre, mais nous mettons ici en garde le lecteur sur les précautions à prendre avant d’utiliser le bootstrap dans une application donnée. Un exemple approprié de la technique bootstrap est son application à la régression linéaire simple. Exemple 1.1 (Bootstrap de la régression linéaire simple) Soit un modèle de régression simulé par > x=seq(-3,3,le=5) > y=2+4*x+rnorm(5) > lm(y∼x)
#régresseurs équidispersés #variable dépendante simulée #régression standard
Les données correspondent donc au modèle de régression Yij = α + βxi + εij , où α et β sont les paramètres supposés inconnus de l’abscisse à l’origine et de la pente, tandis que les εij sont les erreurs normales iid. Comme le montre lm(y∼x), les estimateurs des moindres carrés sont α ˆ = 1.820 et βˆ = 4.238. 3 Les résidus des moindres carrés sont donnés par ˆ i, ˆ − βx εˆij = yij − α et ce sont les variables aléatoires que nous pouvons bootstrapper. En effet, nous pouvons produire des échantillons bootstrap en rééchantillonnant les εˆij , produisant ainsi un nouvel échantillon (ˆ ε∗ij )ij par tirage avec remise parmi les εˆij . Les ∗ données bootstrap sont donc yij = yij + εˆ∗ij , ce qui correspond au code R > > > >
fit=lm(y∼x) Rdata=fit$residuals nBoot=2000 B=array(0,dim=c(nBoot, 2))
#adéquation du modèle linéaire #calcul des résidus #nombre d’échantillons bootstrap #tableau bootstrap
3. Si vous appliquez le programme R ci-dessus, vous obtiendrez des valeurs numériques différentes de α ˆ et de βˆ parce que vos données simulées seront différentes.
7
8
Méthodes de Monte-Carlo avec R > for(i in 1:nBoot){ #boucle bootstrap > ystar=y+sample(Rdata,replace=T) > Bfit=lm(ystar∼x) > B[i,]=Bfit$coefficients > }
Fig. 1.2 – Histogramme de 2000 échantillons bootstrap des abscisses à l’origine (gauche) et des pentes (droite) pour la régression linéaire de l’Exemple 1.1. L’estimateur des moindres carrés de l’abscisse à l’origine est 2.900 et l’estimateur de la pente est 4.35. Les résultats associés avec cette inférence bootstrap sont résumés par la Figure 1.2, via l’histogramme des 2000 échantillons bootstrap des deux coefficients de la régression linéaire simple. Il est évidemment possible de déduire de ces répliques bootstrap des intervalles de confiance sur les deux coefficients (en utilisant les quantiles à 2.5% et à 97.5%). Ainsi, pour nos échantillons bootstrap, les intervalles de confiance à 90% sont (2.350, 3.416) pour l’abscisse à l’origine α et (4.099, 4.592) pour la pente β. Exercice 1.2 Pour les données associées avec la Figure 1.1 : a. Bootstrapper les données et construire une figure semblable fondée sur 1000 réplications y ), donner un bootstrap. Si l’inférence concerne le quantile à 95% de la loi de y¯, q.95 (¯ estimateur bootstrap de cette quantité, qˆ.95 (¯ y ). b. Construire une expérience bootstrap qui donne un intervalle de confiance à 95% sur y ). (Suggestion : Vous devez utiliser deux niveaux de bootstrap pour obtenir cette qˆ.95 (¯ approximation bootstrap.) Exercice 1.3 Pour des données simulées comme dans l’Exemple 1.1, comparer les intervalles de confiance bootstrap sur les deux coefficients par rapport à ceux fondés sur la loi t de Student.
Chapitre 1. Préliminaires
1.5
9
Exercices supplémentaires
Exercice 1.4 Examiner l’utilité des commandes attach et assign dans l’utilisation de bases de données autres que .RData. Exercice 1.5 Construire un vecteur x qui contienne simultanément des entiers, des réels, des chaînes de caractères et plusieurs données manquantes NA. Tester l’identification des données manquantes en utilisant la fonction is.na. Exhiber le sous-vecteur ayant éliminé les données manquantes. Exercice 1.6 Expliquer les différences entre les commandes R capture.output, dput, dump, save, sink et write, et illustrer ces différences sur des exemples de votre cru. Exercice 1.7 Montrer que, si a est un scalaire et x un vecteur, match(a,x) équivaut à min(which(x == a)). Discuter les avantages des commandes match et which pour la comparaison de deux vecteurs. Comparer avec l’utilisation de %in%. Exercice 1.8 Comparer les temps d’exécution des trois commandes R équivalentes a. y=c();for (t in 1:100) y[t]=exp(t) b. y=exp(1:100) c. y=sapply(1:100,exp) grâce à la commande system.time. Exercice 1.9 Expliquer pourquoi les fonctions diag, dim, length et names peuvent être associées à de nouvelles fonctions (comme dans diag(m)=pi). Exercice 1.10 En utilisant le générateur U (0, 1) uniforme runif, construire une matrice 2x2 A telle que la somme de chaque rangée vaut 1. Montrer que cette propriété est conservée par produit matriciel et puissance matricielle et vérifier si des erreurs d’approximation se produisent pour une puissance suffisamment élevée. Exercice 1.11 Nous rappelons qu’une grille de Sudoku est un tableau 9x9 rempli en partie par des chiffres entre 1 et 9 tels que tout chiffre entre 1 et 9 apparaît une et une seule fois par rangée, par colonne et par carré 3x3 de la grille. Cet exercice propose un algorithme de résolution dans le cas où il existe une suite logique de remplissage unique de la grille. On prend le Sudoku > > > > > > > > >
s=matrix(0,ncol=9,nrow=9) s[1,c(6,8)]=c(6,4) s[2,c(1:3,8)]=c(2,7,9,5) s[3,c(2,4,9)]=c(5,8,2) s[4,3:4]=c(2,6) s[6,c(3,5,7:9)]=c(1,9,6,7,3) s[7,c(1,3:4,7)]=c(8,5,2,4) s[8,c(1,8:9)]=c(3,8,5) s[9,c(1,7,9)]=c(6,9,1)
10
Méthodes de Monte-Carlo avec R a. Imprimer le Sudoku de départ. b. On définit le tableau pool=array(TRUE,dim=c(9,9,9)) des valeurs possibles pour chaque entrée (i, j) de la grille, pool[i,j,k] étant FALSE si la valeur k peut être exclue. Construire un code R qui met à jour pool pour les entrées déjà connues. c. Si i est un entier entre 1 et 81, expliciter le sens de s[i]. d. Montrer que, pour une entrée (a, b), les indices des entiers dans le même carré 3x3 que (a, b) sont définis par boxa=3*trunc((a-1)/3)+1 boxa=boxa:(boxa+2) boxb=3*trunc((b-1)/3)+1 boxb=boxb:(boxb+2) e. Déduire que les valeurs d’une entrée (a,b) non encore déterminée peuvent être réduites par for (u in (1:9)[pool[a,b,]]) pool[a,b,u]=(sum(u==s[a,])+sum(u==s[,b])+ sum(u==s[boxa,boxb]))==0 et que les entrées déterminées correspondent à if (sum(pool[a,b,])==1)
s[i]=(1:9)[pool[a,b,]]
f. Résoudre le Sudoku par une exploration aléatoire des entrées (a,b) tant que sum(s==0)>0.
Si vous appliquez ce programme à un Sudoku arbitraire, il se peut qu’il continue indéfiniment car les Sudokus les plus durs ne permettent pas une résolution par cette méthode de remplissage déterministe, mais demandent au contraire une exploration en arbres.
Chapitre 2
Génération de variables aléatoires “It has long been an axiom of mine that the little things are infinitely the most important.” Arthur Conan Doyle A Case of Identity
Guide du lecteur Dans ce chapitre, nous présentons les techniques les plus standard permettant de produire des variables aléatoires de distribution donnée, classique ou non, en utilisant un code informatique. Comme il existe un générateur uniforme en R, dont l’emploi est détaillé dans la Section 2.1.1, nous ne traitons pas de la production spécifique de variables aléatoires uniformes. Par contre, les techniques de simulation les plus simples relient la distribution à simuler à une variable uniforme par une transformation ou une propriété probabiliste particulière, comme dans la Section 2.3 pour le cas relativement générique de la méthode de rejet. Toutes ces solutions s’appuient sur la représentativité de suites de générations uniformes indépendantes, fournies par le générateur résident de R, runif.
C. P. Robert et al., Méthodes de Monte-Carlo avec R © Springer-Verlag France 2011
12
2.1
Méthodes de Monte-Carlo avec R
Introduction
Les méthodes développées dans ce livre et résumées sous la dénomination de méthodes de Monte-Carlo s’appuient sur la possibilité de produire (par ordinateur) un flux supposé infini de variables aléatoires suivant des distributions déjà connues ou de nouvelles distributions. La simulation de ce flux est, à son tour, fondée sur la production (approximative) de variables aléatoires uniformes sur l’intervalle (0, 1). Puisque nous ne sommes pas directement concernés par les rouages de la production de ces variables uniformes, car nous considérons le générateur uniforme de R comme “parfait", nous nous appuierons donc complètement sur ces générateurs pour produire d’autres variables aléatoires. Dans un sens pratique autant que théorique, la distribution uniforme U[0,1] fournit une représentation sur ordinateur équivalente à l’aléa probabiliste fondamental et les générateurs pseudo-aléatoires des distributions autres que la loi uniforme nécessitent bien tous le recours à une suite simulée de variables uniformes. Comme déjà indiqué dans la Section 1.3 du Chapitre 1, R a un grand nombre de fonctions intégrées qui permettent de générer des variables aléatoires standard, comme le montre le Tableau 1.1. Par exemple, > rgamma(3,2.5,4.5) produit trois générations indépendantes suivant une distribution G(5/2, 9/2) avec toutes les garanties de représentativité de cette distribution. Nous insistons sur le caractère contre-productif, inefficace et même parfois biaisé de chercher à générer ces distributions standard en utilisant une autre approche que les générateurs R résidents. Les principes développés dans les sections suivantes sont, par contre, essentiels pour traiter de distributions moins standard qui ne sont pas disponibles sous R (dans la librairie de base).
2.1.1
La simulation uniforme
Le générateur uniforme fondamental en R est la fonction runif, dont la seule entrée requise est le nombre de valeurs à générer. Les autres paramètres optionnels de cette fonction sont min et max, qui caractérisent les limites de l’intervalle sur lequel est générée la loi uniforme. (Les valeurs par défaut sont min=0 et max=1.) Par exemple, > runif(100, min=2, max=5) produit 100 variables aléatoires distribuées uniformément entre 2 et 5. Formellement, toutes les méthodes que nous verrons dans ce livre (et cela inclut runif) produisent des nombres pseudo-aléatoires qui n’ont pas de caractère aléatoire véritable — partant d’une valeur initiale u0 de la suite uniforme U (0, 1) et d’une transformation D, le générateur uniforme produit une suite déterministe (ui ) = (Di (u0 )) de valeurs sur (0, 1) — mais le résultat produit a les mêmes
Chapitre 2. Génération de variables aléatoires
13
propriétés statistiques qu’une véritable suite iid. Des détails plus précis sur le générateur uniforme de R sont fournis dans l’aide en ligne sur RNG. Un examen intensif de la fonction D sous-jacente à runif a bien sûr été entrepris pour s’assurer qu’elle produit effectivement des variantes uniformes, quelle que soit son utilisation (voir, par exemple, Robert & Casella, 2004, Chapitre 2). Un moyen de contrôle rapide et rudimentaire des propriétés de ce générateur uniforme est graphique, en examinant non seulement un histogramme des Xi , mais aussi le graphe des couples (Xi , Xi+1 ) et la fonction d’autocorrélation estimée, car beaucoup de générateurs uniformes souffrent d’une autocorrélation résiduelle, évitée par les bons algorithmes. Le code R utilisé pour produire la Figure 2.1 est > > > > > > > >
Nsim=10^4 #nombre de variables aléatoires x=runif(Nsim) x1=x[-Nsim] #vecteurs représentés x2=x[-1] #paires adjacentes par(mfrow=c(1,3)) hist(x) plot(x1,x2) acf(x)
et cette Figure indique que runif est (superficiellement) acceptable comme générateur uniforme.
Fig. 2.1 – Histogramme (gauche), représentation par paires (centre) et fonction d’autocorrélation estimée (droite) d’une suite de 104 nombres aléatoires générés par runif. Comme nous l’avons indiqué dans la remarque précédente, runif n’a pas de caractère stochastique per se. Le produit de runif(Nsim) est en fait une suite déterministe fondée sur un point de départ aléatoire. Une illustration pertinente de ce fait est obtenue grâce à la fonction R set.seed, qui utilise son unique argument
14
Méthodes de Monte-Carlo avec R
entier pour mettre en place autant de “graines de départ" (seeds) que nécessaire. Par exemple, > set.seed(1) > runif(5) [1] 0.2655087 0.3721239 0.5728534 0.9082078 0.2016819 > set.seed(1) > runif(5) [1] 0.2655087 0.3721239 0.5728534 0.9082078 0.2016819 > set.seed(2) > runif(5) [1] 0.0693609 0.8177752 0.9426217 0.2693818 0.1693481 montre que fixer les graines de départ détermine l’ensemble des valeurs produites par le générateur aléatoire. Dans l’écrasante majorité des utilisations de runif, nous ne sélectionnons pas la graine de départ, qui est alors choisie en fonction de l’horloge interne. Cependant, dans les cas où nous avons besoin de reproduire exactement la même suite de simulations aléatoires, par exemple pour comparer deux procédures statistiques ou deux vitesses de convergence, recourir à une valeur fixe de la graine est nécessaire pour assurer la reproductibilité des résultats.
2.1.2
Méthode de la transformation inverse
Il existe une transformation simple et parfois utile, connue sous le nom de la transformée de la fonction de répartition. Formellement, elle nous autorise à transformer n’importe quelle variable aléatoire en une variable aléatoire uniforme et, de manière plus intéressante, inversement. Par exemple, si X a une loi de densité f , la fonction de répartition associée F vérifie x F (x) = f (t) dt. −∞
Donc, si nous posons U = F (X), la variable U est bien une variable aléatoire de loi U(0, 1) uniforme. En effet, P (U ≤ u) = P [F (X) ≤ F (x)] = P [F −1 (F (X)) ≤ F −1 (F (x))] = P (X ≤ x), où nous avons fait l’hypothèse que F admet une fonction inverse. (Cette hypothèse peut en fait être supprimée, voir Robert & Casella, 2004, Section 2.1, mais elle s’applique évidemment aux distributions continues). Exercice 2.1 Pour une variable aléatoire arbitraire X de fonction de répartition F , on définit l’inverse généralisée de F par F − (u) = inf {x; F (x) ≥ u} . Montrer que, si U ∼ U(0, 1), alors F − (U ) est distribué comme X.
Chapitre 2. Génération de variables aléatoires
15
Exemple 2.1 (Géneration de variables exponentielles) Si X ∼ Exp(1), on a F (x) = 1 − e−x . Résoudre en x l’équation u = 1 − e−x conduit à x = − log(1 − u). Donc, si U ∼ U[0,1] , alors X = − log U ∼ Exp(1) (car U et 1 − U sont toutes deux uniformes). Le code R ci-dessous > > > > > > >
Nsim=10^4 #nombre de variables aléatoires U=runif(Nsim) X=-log(U) #transformation des uniformes Y=rexp(Nsim) #exponentielles sous R par(mfrow=c(1,2)) #graphes hist(X,freq=F,main="Exp from uniformes") hist(Y,freq=F,main="Exp from R")
compare le résultat utilisant la transformation inverse de la fonction de répartition avec le résultat obtenu par rexp. Sans grande surprise, les adéquations des deux histogrammes à leur cible exponentielle ne se distinguent pas sur la Figure 2.2.
Exp from R
0.0
0.0
0.2
0.2
0.4
0.4
0.6
0.6
0.8
0.8
1.0
Exp from Uniform
0
2
4
6
8
0
2
4
6
8
Fig. 2.2 – Histogrammes d’échantillons exponentiels utilisant la transformation inverse (droite) et la commande R rexp (gauche), avec la densité Exp(1) en superposition. La génération de variables aléatoires uniformes est par conséquent un élément déterminant des méthodes de simulation pour d’autres distributions de probabilité, puisque ces distributions peuvent être représentées comme transformations déterministes de variables uniformes.
16
Méthodes de Monte-Carlo avec R
Exercice 2.2 Deux distributions ayant des fonctions de répartition explicites sont les lois logistique et de Cauchy. Elles peuvent donc être simulées par la méthode de la transformation inverse. Pour chacune des lois suivantes, vérifier la forme de la fonction de répartition et générer 10 000 variables aléatoires en utilisant la transformation inverse. Comparer le produit de votre programme avec celui des fonctions R intégrées rlogis et rcauchy, respectivement : a. Densité logistique : f (x) =
e−(x−μ)/β 1 , β [1+e−(x−μ)/β ]2
b. Densité de Cauchy : f (x) = 1 arctan((x π
2.2
− μ)/σ).
fonction de répartition : F (x) =
1 1 , πσ 1+ x−μ 2 ( σ )
1 1+e−(x−μ)/β
fonction de répartition : F (x) =
1 2
+
Méthodes de transformation générales
Quand une distribution de densité f est reliée de manière relativement simple à une autre distribution qui est facile à simuler, cette relation probabiliste peut souvent être exploitée pour construire un algorithme de génération suivant f . Exemple 2.2 (Transformations d’exponentielles) Dans l’Exemple 2.1, nous avons vu comment générer une variable aléatoire exponentielle à partir d’une variable uniforme. Nous illustrons ici comment de nouvelles lois peuvent être générées à partir d’une distribution exponentielle. Si les Xi sont des variables aléatoires iid de loi Exp(1), alors trois distributions standard peuvent être déduites sous la forme Y
Y
Y
=
=
=
2
β
ν j=1 a
Xj ∼ χ22ν ,
ν ∈ N∗ ,
Xj ∼ G(a, β) ,
j=1 a j=1 Xj a+b j=1 Xj
a ∈ N∗ ,
∼ Be(a, b) ,
(2.1)
a, b ∈ N∗ ,
où N∗ = {1, 2, . . .}. Par exemple, pour générer des variables aléatoires du χ26 , nous pourrions utiliser le code R > > > >
U=runif(3*10^4) U=matrix(data=U,nrow=3) X=-log(U) X=2* apply(X,2,sum)
#matrice des sommes #d’uniforme à exponentielle #sommes donnant le chi-deux
De toute évidence, cette méthode n’est pas aussi efficace que l’appel à rchisq, comme on peut le vérifier par le code R > system.time(test1());system.time(test2()) user system elapsed
.
Chapitre 2. Génération de variables aléatoires 0.104 user 0.004
17
0.000 0.107 system elapsed 0.000 0.004
où test1 correspond au code R ci-dessus et où test2 correspond à sa substitution par X=rchisq(10^4,df=6). Un grand nombre de lois standard sont simulables aisément quand on tire parti de l’existence de certaines de leurs propriétés probabilistes, comme le montre l’Exercice 2.7.
Ces transformations sont assez simples à utiliser et seront donc souvent des favorites de nos illustrations. Cependant, il existe des limites à leur utilisation, à la fois sur le nombre de lois qui peuvent être générées par ce moyen (pensez, par exemple, à la distribution du chi-deux avec un degré de liberté quelconque) et sur l’efficacité d’une telle génération. En fait, pour toute distribution spécifique ayant été étudiée, des algorithmes efficaces spécifiques ont été développés. Ainsi, si R intègre une distribution donnée, son générateur uniforme doit systématiquement être utilisé, comme le démontre l’Exemple 2.2. Par ailleurs, la méthode de transformation décrite ci-dessus ne peut pas espérer couvrir toutes les distributions ; par exemple, elle ne s’applique pas à la loi normale standard.
2.2.1
Un générateur aléatoire normal
Un moyen efficace de fournir un générateur de variables aléatoires normales via une transformation est l’algorithme de Box–Muller, inventé pour la génération de variables de lois N (0, 1). Exemple 2.3 (Génération de variables normales) On a la propriété générique que, si U1 et U2 sont iid U[0,1] , les variables X1 et X2 définies par X1 = −2 log(U1 ) cos(2πU2 ) , X2 = −2 log(U1 ) sin(2πU2 ) , sont en fait iid N (0, 1), ceci en vertu d’un simple argument de changement de variables. Notons cependant que cet algorithme n’est pas le générateur implémenté en R, qui utilise par défaut la transformation inverse de la fonction de répartition, fondée sur une représentation très précise qnorm (allant jusqu’à 16 décimales de précision !). Il est cependant possible, bien que contre-indiqué, de changer le générateur normal en la version Box–Muller (ou même en celle de Kinderman-Ramage) avec la fonction RNG. En comparaison avec les (grossiers) algorithmes approximatifs fondés sur le Théorème de la Limite Centrale (TCL), l’algorithme de Box–Muller est exact et produit
18
Méthodes de Monte-Carlo avec R
deux variables aléatoires normales à partir de deux variables aléatoires uniformes, son seul inconvénient (en terme de vitesse) étant la nécessité de calculer des fonctions transcendentales comme log, cos et sin. Exercice 2.1 Un générateur démodé autrefois utilisé pour la loi normale est : . . . , U12 ∼ U[−1/2, 1/2] Générer U1 , Poser Z = 12 i=1 Ui l’argument étant que la normalité du TCL est suffisamment précise en se reposant sur 12 termes uniformes. a. Montrer que E[Z] = 0 et que var(Z) = 1. b. A partir d’histogrammes, comparer ce générateur normal-TCL avec l’algorithme de Box–Muller. Faites particulièrement attention aux probabilités de queues. c. Comparer les deux générateurs de la partie a. avec rnorm.
Insistons sur le fait que cet exercice ne suggère en rien l’utilisation du TCL pour la génération normale ! Cette approximation est très imprécise et, bien entendu, ne devrait jamais être utilisée. La simulation d’une distribution normale multivariée Np (μ, Σ), où Σ est une matrice p × p symétrique et définie positive, peut être déduite du générateur rnorm de base au sens où une décomposition de Cholesky de Σ (c’est-à-dire, la représentation de Σ = AAT avec A matrice triangulaire) nous autorise à prendre la transformation via A d’un vecteur iid normal de dimension p comme un vecteur normal Np (0, Σ). Il existe également une fonction R qui regroupe ces étapes, sous le nom de rmnorm et disponible dans la librairie mnormt (Genz & Azzalini, 2009). Cette libraire autorise aussi le calcul numérique de la probabilité d’appartenir à un hypercube grâce à la fonction sadmvn, comme dans > sadmvn(low=c(1,2,3),upp=c(10,11,12),mean=rep(0,3),var=B) [1] 9.012408e-05 attr(,"error") [1] 1.729111e-08 où B est une matrice définie positive. Cette possibilité se révèle assez utile puisque le calcul analytique de cette probabilité est presque toujours impossible. Exercice 2.3 Etant donnée une matrice 3 × 3 Sigma : a. Montrer que Sigma=cov(matrix(rnorm(30),nrow=10)) définit une matrice de covariance propre. b. Montrer que poser A=t(chol(Sigma)) amène bien à la simulation suivant Np (0, Σ) en utilisant la commande x=A%*%rnorm(3). c. Comparer les temps d’exécution de cette approche et de rmnorm quand on simule 100 vecteurs en dimensions p = 10 et p = 50.
Chapitre 2. Génération de variables aléatoires
2.2.2
19
Distributions discrètes
Nous considérons dans cette section la génération de variables aléatoires discrètes, pour lesquelles il existe un algorithme générique. De nouveau, utilisant le principe de la transformation inverse abordé dans la Section 2.1.2, nous pouvons construire un algorithme de base qui fonctionne formellement pour toute distribution discrète. Pour générer X ∼ Pθ , où la loi Pθ est portée par les entiers, nous pouvons calculer — une fois pour toutes, en supposant que le stockage ne pose pas problème — les probabilités p0 = Pθ (X ≤ 0),
p1 = Pθ (X ≤ 1),
p2 = Pθ (X ≤ 2),
... ,
et puis générer U ∼ U[0,1] , déduisant X = k si pk−1 < U < pk comme notre valeur simulée. Exemple 2.4 (Variables aléatoires discrètes) Pour générer X ∼ Bin(10, .3), les valeurs des probabilités sont obtenues par pbinom(k,10,.3) comme p0 = 0.028,
p1 = 0.149,
p2 = 0.382, . . . , p10 = 1 .
Pour générer X ∼ P(7), on peut calculer p0 = 0.0009,
p1 = 0.0073,
p2 = 0.0296, . . . ,
jusqu’à ce que la suite approche 1 avec un nombre donné de décimales. (Par exemple, p20 = 0.999985). Les algorithmes spécifiques sont plus efficaces (comme démontré dans l’Exemple 2.5), mais ils dépendent souvent des capacités de stockage. Nous pouvons souvent améliorer l’algorithme ci-dessus par un choix judicieux de l’ordre des probabilités calculées. Par exemple, si nous voulons générer des variables aléatoires suivant une distribution de Poisson de moyenne λ = 100, l’algorithme ci-dessus est très inefficace. Ceci est √ dû au fait que la plupart de nos observations sont situées dans l’intervalle λ±3 λ (rappelons que λ est à la fois la moyenne et la variance de la loi de Poisson), et pour λ = 100 cet intervalle est (70, 130). Ainsi, commencer à x = 0 produira pratiquement toujours 70 rejets (inutiles) du fait que pk−1 < U < pk . Un premier remède à cette difficulté est d’“ignorer" ce qui se passe en dehors d’un intervalle hautement vraisemblable comme (70, 130) dans l’exemple traité ici, comme P (X < 70) + P (X > 130) = 0.00268. Formellement, nous devrions trouver des limites supérieure et inférieure qui fassent en sorte que cette probabilité soit assez petite, mais informellement la zone ±3σ fonctionne parfaitement.
20
Méthodes de Monte-Carlo avec R
Exemple 2.5 (Variables de Poisson) Le code R ci-dessous peut être utilisé pour générer des variables aléatoires de Poisson dans le cas de grandes valeurs de lambda. Les suites t de ce code contiennent les valeurs entières dans la zone autour de la moyenne. > > > > > > + +
Nsim=10^4; lambda=100 spread=3*sqrt(lambda) t=round(seq(max(0,lambda-spread),lambda+spread,1)) prob=ppois(t, lambda) X=rep(0,Nsim) for (i in 1:Nsim){ u=runif(1) X[i]=t[1]+sum(prob
La dernière ligne du code vérifie à quel intervalle la variable aléatoire uniforme appartient et elle assigne la valeur de Poisson correspondante à X. Voir l’Exercice 2.9 pour des exemples d’autres distributions. Un remède plus formel contrant l’inefficacité de commencer les probabilités cumulées en p0 est de démarrer autour du mode de la distribution discrète Pθ et d’explorer les valeurs voisines jusqu’à ce que la probabilité cumulée soit 1 à une erreur d’approximation fixée. Les pk sont alors indexés par les valeurs visitées plutôt que par les entiers, mais la validité de la méthode reste entière. Bien entendu, des algorithmes spécifiques ont été élaborés pour les distributions standard et ils sont optimisés. Nous insistons donc une fois de plus sur l’avantage comparatif à utiliser la fonction R correspondant à la distribution d’intérêt plutôt que de développer son code propre. Comme le montre l’Exemple 2.5, le code qui y est proposé, correspondant à la fonction test3, souffre de la comparaison avec le code résident rpois, qui correspond à la fonction test4 ci-dessous. Les temps d’exécution sont donnés par > system.time(test3()); system.time(test4()) user system elapsed 0.436 0.000 0.435 user system elapsed 0.008 0.000 0.006 Naturellement, R ne couvre pas toutes les distributions à support discret, donc des approches telles que celles proposées ci-dessus peuvent être utiles pour faire face à de nouvelles distributions. Voir l’Exercice 2.10 pour des exemples d’algorithmes spécifiques.
Chapitre 2. Génération de variables aléatoires
2.2.3
21
Représentations par mélange
Il arrive parfois qu’une distribution de probabilité soit naturellement représentée comme un mélange, c’est-à-dire, que sa densité puisse s’écrire sous la forme g(x|y)p(y) dy
f (x) =
ou
f (x) =
Y
pi fi (x) ,
(2.2)
i∈Y
suivant que l’espace auxilliaire Y soit continu ou discret, où g et p sont des distributions standard pouvant être facilement simulées. Pour générer une variable aléatoire X en utilisant cette représentation, nous pouvons tout d’abord générer une variable Y suivant la distribution de mélange puis ensuite générer X suivant la distribution conditionnelle sélectionnée, soit donc – si y ∼ p(y) et X ∼ f (x|y), alors X ∼ f (x) (si Y est continue) ; – si γ ∼ P (γ = i) = pi et X ∼ fγ (x), alors X ∼ f (x) (si Y est discrète). Par exemple, nous pouvons écrire la densité de la loi Student t à ν degrés de liberté Tν comme un mélange, où X|y ∼ N (0, ν/y)
et
Y ∼ χ2ν .
Générer suivant une distribution Tν revient donc à générer une variable de loi du χ2ν et à générer ensuite une variable normale correspondant à la variance conditionnelle. (Evidemment, utiliser directement la fonction rt est légèrement plus efficace, comme vous pouvez le vérifier avec system.time.) Exemple 2.6 (Variable négative binomiale et mélange) Si X est une variables aléatoire binomiale négative, X ∼ N eg(n, p), elle admet la représentation par mélange X|y ∼ P(y)
et
Y ∼ G(n, β),
où β = (1 − p)/p. Le code R ci-dessous génère selon ce mélange > > > > > >
Nsim=10^4 n=6;p=.3 y=rgamma(Nsim,n,rate=p/(1-p)) x=rpois(Nsim,y) hist(x,main="",freq=F,col="grey",breaks=40) lines(1:50,dnbinom(1:50,n,p),lwd=2,col="sienna")
et produit la Figure 2.3, où l’adéquation à la fonction de probabilité est aussi incluse.
Méthodes de Monte-Carlo avec R
0.00
0.01
0.02
0.03
0.04
0.05
0.06
22
0
10
20
30
40
50
60
4
Fig. 2.3 – Histogramme de 10 variables aléatoires binomiales négatives N eg(6, .3) générées suivant la représentation par mélange et fonction de probabilité.
2.3
Méthodes de rejet
Il existe beaucoup de distributions pour lesquelles ni la méthode de transformation inverse, ni des transformations plus générales ne peuvent produire des variables aléatoires de ces distributions. Pour ces cas, nous devons nous tourner vers des méthodes indirectes, c’est-à-dire vers des méthodes pour lesquelles nous générons tout d’abord une variable aléatoire candidate qui est alors soumise à un test. L’acceptation de ce test conduit à conserver la valeur simulée, son rejet à répéter la simulation. Comme nous allons le voir à présent, cette classe de méthodes est extrêmement puissante et nous autorisera à simuler virtuellement suivant n’importe quelle distribution. Cette méthode de rejet nous oblige seulement à connaître la forme fonctionnelle de la densité d’intérêt f (appelée densité cible) à une constante multiplicative près. Nous utilisons en parallèle une densité plus simple g pour les simulations effectives, densité appelée densité instrumentale ou candidate, qui produit un flot de valeurs candidates pour la simulation suivant f . Les seules contraintes que nous imposons sur cette densité candidate g sont que (i). f et g ont des supports compatibles (soit donc que g(x) > 0 quand f (x) > 0). (ii). Il existe une constante M telle que f (x)/g(x) ≤ M pour tout x. Sous ces conditions, X de loi f peut être simulé comme suit. Premièrement, nous générons Y ∼ g et, indépendamment, nous générons U ∼ U[0,1] . Si U≤
1 f (Y ) , M g(Y )
alors nous posons X = Y . Si, au contraire, l’inégalité n’est pas satisfaite, nous rejettons Y et U , puis nous recommençons la génération des valeurs candidates. Suc-
Chapitre 2. Génération de variables aléatoires
23
cinctement, la représentation algorithmique de la méthode de rejet s’écrit comme suit :
Algorithme 1 (Méthode de rejet) 1. Générer Y ∼ g, U ∼ U[0,1] ; 2. Accepter X = Y si U ≤ f (Y )/M g(Y ); 3. Revenir au 1 sinon.
L’implémentation R de cet algorithme est simple : Si randg est une fonction qui produit des générations suivant la densité g, dans le même esprit que rnorm ou rt, une simple version R de l’Algorithme 1 est > u=runif(1)*M > y=randg(1) > while (u>f(y)/g(y)){ + u=runif(1)*M + y=randg(1)} qui produit in fine une génération y suivant f . Pourquoi cette méthode marche-t-elle alors qu’elle repose uniquement sur des simulations suivant g ? Un simple calcul probabiliste montre que la fonction de répartition de la variable aléatoire acceptée, P (Y ≤ x|U ≤ f (Y )/{M g(Y )}), est exactement la fonction de répartition de X. En effet, P (Y ≤ x|U ≤ f (Y )/{M g(Y )})
= =
= =
P (Y ≤ x, U ≤ f (Y )/{M g(Y )}) P (U ≤ f (Y )/{M g(Y )}) x f (y)/{M g(y)} du g(y) dy −∞ 0 ∞ f (y)/{M g(y)} du g(y) dy −∞ 0 x [f (y)/{M g(y)}] g(y) dy −∞ ∞ [f (y)/{M g(y)}] g(y) dy −∞ x f (y) dy −∞ = P (X ≤ x), ∞ f (y) dy −∞
où nous utilisons le fait que l’intégrale suivant la densité uniforme est égale à sa limite supérieure. En dépit du fait paradoxal que toutes les simulations proviennent de g, ce calcul montre bien que la sortie de cet algorithme est exactement distribuée suivant f et non g.
La méthode de rejet est applicable quel que soit la dimension du problème, à condition que g soit une densité sur le même espace mesurable que f .
24
Méthodes de Monte-Carlo avec R
Notons que l’algorithme et les calculs ci-dessus ne font intervenir que le produit des g(y) et des M . Cette caractéristique implique donc que nous n’avons pas besoin de nous préoccuper des constantes de normalisation des densités f et g. Tant que nous connaissons f /g à une constante près, f /g ∝ f˜/˜ g , l’algorithme peut être implanté si une borne supérieure M peut être obtenue sur f˜/˜ g . (Les constantes manquantes sont alors absorbées par M .) Exercice 2.2 Montrer que la probabilité d’acceptation dans un algorithme de rejet avec une borne supérieure M sur le rapport des densités f /g est 1/M . Montrer que la valeur moyenne du taux ˜ g˜)], peut être utilisée pour calculer la constante manquante du d’acceptation, E[I(U < f˜/M rapport f /g.
Comme le souligne cet exercice, la probabilité d’acceptation est 1/M si et seulement si les constantes de normalisation sont connues. Dans les autres cas, comme ˜ , 1/M ˜ n’est pas égale à la proles constantes manquantes sont absorbées dans M babilité d’acceptation. Exemple 2.7 (Acceptation–rejet pour les lois bêta) L’Exemple 2.2 ne fournissait pas un algorithme général pour simuler des variables aléatoires de loi bêta Be(α, β). Nous pouvons à présent construire un algorithme générique fondé sur la méthode de rejet, en utilisant comme distribution instrumentale la loi uniforme U[0,1] quand les deux paramètres α et β sont plus grands que 1. (La fonction générique rbeta n’impose pas cette restriction et est bien sûr plus efficace.) La borne supérieure M est alors le maximum de la densité bêta, obtenue par exemple par optimize (ou son alias optimise) : > optimize(f=function(x){dbeta(x,2.7,6.3)}, + interval=c(0,1),max=T)$objective [1] 2.669744 Comme la densité candidate g est égale à un, la valeur proposée Y est acceptée si M × U < f (Y ), c’est-à-dire si M × U est située en dessous de la densité bêta f (Y ). Notons que générer U ∼ U[0,1] et le multiplier par M revient à générer U ∼ U[0,M ] . Pour α = 2.7 et β = 6.3, une implantation alternative en R de l’algorithme de rejet est > > > > >
Nsim=2500;M=2.67 a=2.7;b=6.3 u=runif(Nsim,max=M) y=runif(Nsim) x=y[u
#uniforme sur (0,M) #génération suivant g #points acceptés
et le panel gauche de la Figure 2.4 montre les résultats produits par la génération de 2500 paires (Y, U ) suivant U[0,1] × U[0,M ] . Les points noirs (Y, U g(Y )) qui se situent sous la densité f sont ceux pour lesquels nous acceptons X = Y ; les points
Chapitre 2. Génération de variables aléatoires
25
gris (Y, U g(Y )) qui tombent dehors sont rejetés. Il est évident, au vu de cette représentation graphique, que les points noirs sont uniformément distribués sur la zone située sous la densité f . Comme la probabilité d’acceptation d’une simulation donnée est 1/M (Exercice 2.2), quand M = 2.67 nous acceptons approximativement 1/2.67 = 37% des valeurs. ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ●● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ●● ● ●● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ●● ● ●● ● ●● ● ● ● ●● ● ● ●● ● ●● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ●● ● ● ● ● ●● ●● ● ● ●● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ●●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ● ●● ●● ● ● ● ● ●● ● ●● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ●● ●● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ●●●● ●● ● ● ● ●●● ● ● ● ● ● ● ●● ● ●● ● ●● ● ● ● ●● ● ● ● ●● ● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ●● ● ● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ●● ● ● ●● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ●● ● ● ● ●●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ●● ● ● ● ● ●● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●●● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ●● ●● ●● ● ● ● ●●● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ●●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ●● ● ● ● ● ● ●● ●● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ●●● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●●● ● ● ● ● ●● ● ● ●● ● ● ● ●● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ●● ● ●● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ●● ●● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ●● ●● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ●● ● ●● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ● ●● ● ●● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ●● ● ●● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ●● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ●● ● ●● ● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ●● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ●● ● ● ● ●● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ●●● ● ● ●●● ● ● ● ● ●● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ●● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ●● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ●● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ●● ● ● ●● ●● ● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●
0.0
0.2
0.4
0.6
0.8
1.0
3
4
● ●●
0
1
2
u.g(y)
1.5 0.0
0.5
1.0
u.g(y)
2.0
2.5
●
● ● ●
● ● ●● ● ● ● ● ● ● ●● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ●● ● ● ●● ●● ● ● ● ● ● ● ●●●● ● ● ● ● ● ● ● ●● ●● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ●● ● ●●● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ●●● ● ● ● ● ●● ● ● ●●● ●● ● ● ● ● ● ● ● ●● ● ● ●● ●● ● ●● ● ●● ●●● ● ● ● ● ●● ●●● ● ● ● ● ● ● ● ● ●● ● ● ●● ●● ● ● ●● ● ● ●● ●● ● ● ● ● ● ●● ● ●● ● ●● ●● ● ● ●● ● ● ●● ● ● ● ● ● ● ●● ●● ●● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ●●● ● ● ● ● ●● ● ● ● ●● ●● ●● ●● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●●● ● ● ● ● ● ● ●● ● ● ● ● ● ●●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●●● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ●●● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ●● ●●● ● ● ● ● ●● ● ● ● ● ● ● ●●●● ● ●● ● ● ● ●●● ●● ● ● ●● ●● ● ● ● ●● ●● ● ● ● ●● ● ● ● ● ● ●● ● ● ● ● ● ● ● ●●● ● ● ●● ● ● ● ● ● ● ●● ●● ●● ● ● ● ●● ● ●● ● ● ●●●● ● ●● ● ●● ●● ● ● ●● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ●● ● ●● ● ● ● ● ●● ●● ● ● ●● ● ● ● ● ● ●● ● ● ●● ● ● ●●● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ●● ● ● ●● ●●● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ●●● ● ● ● ●●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ●● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ●●● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ●●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ●● ●● ●● ● ●● ● ● ●● ●● ● ● ●● ●● ● ●● ● ●● ● ● ●● ● ● ● ● ●● ●●● ● ● ● ● ●● ● ● ● ●● ● ● ●● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ● ● ●●● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ● ●●●● ● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ●● ● ● ●● ● ● ● ● ● ● ●●●● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ●●● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ●●● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ●● ● ●● ● ● ● ● ● ● ●● ●● ● ● ●● ● ●● ●● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ● ●● ● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ●● ● ●● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ● ● ●● ● ● ●● ●● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ●● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ●● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●●● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ●● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ●●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ●● ● ●●● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ●● ● ● ● ● ●● ● ● ●● ● ● ● ● ● ●● ● ● ●● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ●● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ●● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ●● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ●● ● ● ● ●● ●● ● ● ●● ● ● ●● ● ● ●● ● ● ● ●● ● ● ● ● ● ●●● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ●● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ●●● ●● ● ● ● ● ● ●●● ● ● ●● ● ● ● ●● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ● ●● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ●● ● ●● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ●
0.0
y
0.2
0.4
0.6
● ● ● ●
● ● ● ●
0.8
y
Fig. 2.4 – Génération de variables aléatoires de loi bêta X ∼ Be(2.7, 6.3) : en utilisant l’algorithme de rejet, 2500 (Y, U ) propositions ont été générées suivant g et U[0,M ] , respectivement, et les réalisations (Y, U g(Y )) ont été représentées en gris. Dans le panel de gauche, Y ∼ U[0,1] et 36% des valeurs candidates ont été acceptées (points noirs). Dans le panel de droite, Y ∼ Be(2, 6) et 58% des valeurs simulées ont été acceptées (points noirs). Dans les deux pannels, f et M g sont aussi représentées. Dans l’implantation alternative de l’algorithme de rejet, ci-dessus, le nombre total d’essais Nsim est fixé, ce qui signifie que le nombre de valeurs acceptées est une variable aléatoire binomiale de probabilité 1/M . En pratique, le nombre de valeurs acceptées est fixé, mais cette implémentation peut néanmoins être exploitée comme dans le code suivant : > x=NULL > while (length(x) x=x[1:Nsim] (Notons qu’utiliser y=u=runif(Nsim*M) dans le programme produirait un biais, car y et u prendraient alors les mêmes valeurs.) Simuler Nsim*M propositions dès le début réduit le nombre d’appels à while puisque c’est le nombre moyen de propositions (Exercice 2.2).
26
Méthodes de Monte-Carlo avec R
Exercice 2.3 Comparer les temps d’exécution des deux implantations de l’algorithme de rejet proposées ci-dessus, ainsi que pour des propositions alternatives simulant Nsim*Nprop valeurs, lorsque Nprop varie.
Les propriétés clés de l’algorithme de rejet, qui devraient toujours être considérées lorsqu’on y fait appel, sont les suivantes : 1. Seul le rapport f /M est nécessaire, donc l’algorithme ne dépend pas de la constante de normalisation. 2. La borne f ≤ M g doit être finie ; l’algorithme reste valide (bien que moins efficace) quand M est remplacée par une borne plus grande. 3. La probabilité d’acceptation est 1/M , donc M doit être choisi aussi petit que possible pour limiter le temps de calcul. L’efficacité d’un algorithme de rejet donné peut être mesuré en terme de sa probabilité d’acceptation puisque plus cette probabilité est élevée, moins il y a de simulations inutiles suivant g. (Dans l’absolu, cette comparaison doit être pondérée par le coût informatique de la simulation suivant g puisque, sinon, le meilleur choix de g serait de prendre g = f !) Exemple 2.8 (Suite de l’Exemple 2.7) Examinons ici la méthode consistant à simuler Y ∼ Be(2, 6) comme proposition. Ce choix de g est acceptable puisque le rapport f /g est borné : > optimise(f=function(x){dbeta(x,2.7,6.3)/dbeta(x,2,6)}, + max=T,interval=c(0,1))$objective 1.671808 Cette modification de la proposition amène ainsi à une valeur de M plus petite et à un taux d’acceptation supérieur à celui de la proposition uniforme puisqu’il vaut 58%. Le panel de droite dans la Figure 2.4 montre le résultat de l’algorithme de rejet fondé sur Be(2, 6) ; il illustre le gain en efficacité produit par une borne plus petite. Exercice 2.4 Montrer formellement que, pour que le rapport f /g soit borné quand f une densité Be(α, β) et g est une densité Be(a, b), il faut avoir à la fois a ≤ α et b ≤ β. En déduire que le meilleur choix pour a et b parmi les valeurs entières est a = α et b = β.
Comme illustré par l’Exemple 2.8, certaines optimisations de l’algorithme de rejet sont possibles en choisissant la densité candidate g dans une famille paramétrique et en déterminant alors la valeur du paramètre qui minimise la limite M . Exercice 2.5 Considérons l’utilisation de l’algorithme de rejet pour générer une variable aléatoire N (0, 1) partir d’une distribution instrumentale doublement exponentielle L(α), de densité g(x|α) = (α/2) exp(−α|x|).
Chapitre 2. Génération de variables aléatoires a. Montrer que f (x) ≤ g(x|α)
27
2 −1 α2 /2 α e π
et que le minimum de cette borne (en α) est atteint pour α = 1. b. Montrer que la probabilité d’acceptation est alors π/2e = .76 et en déduire que, pour produire une variable aléatoire normale, cet algorithme de rejet nécessite en moyenne la simulation de 1/.76 ≈ 1.3 variable uniforme. c. Montrer que L(α) peut être généré par la transformation inverse et comparer cet algorithme avec l’algorithme de Box–Muller de l’Exemple 2.3, en terme de temps d’exécution.
Parfois, la complexité de l’optimisation peut être très coûteuse en terme de temps d’analyse ou de temps de calcul. Dans le premier cas, la construction de l’algorithme optimal doit néanmoins être entreprise quand l’algorithme est promis à une utilisation intense. C’est ainsi le cas de la plupart des générateurs aléatoires en R, comme on peut le vérifier par help. Dans le second cas, il est préférable d’explorer l’utilisation d’une famille alternative de distributions instrumentales g (voir Exercice 2.17.) Une application très spécifique de l’algorithme de rejet a trouvé une place en génétique des populations, sous le nom d’algorithme ABC suivant la dénomination proposée par Pritchard et al. (1999). La version de base est un algorithme de rejet adapté aux problèmes bayésiens, où l’on doit simuler une distribution a posteriori π(θ|x0 ) ∝ π(θ)f (x0 |θ) associée à une fonction de vraisemblance f (x|θ) qui n’est pas disponible analytiquement mais qui peut être simulée comme densité de x. L’algorithme ABC génère des valeurs de θ suivant la loi a priori et de x suivant la vraisemblance f (x|θ) jusqu’à ce que l’observation simulée x soit égale à l’observation originale x0 : Répéter Générer θ ∼ π(θ) et X ∼ f (x|θ) jusqu’à X = x0 Exercice 2.4 Montrer que la probabilité conditionnelle d’acceptation dans la boucle ci-dessus est f (x0 |θ) et en déduire que la distribution des θ acceptés est π(θ|x0 ).
Cet algorithme est donc bien valide, mais il ne s’applique que dans les cas où π(θ) est une loi a priori propre et où Pθ (X = x0 ) a une probabilité positive de se produire. Même en génétique des populations, où X est une variable aléatoire discrète, la taille de l’espace d’état est souvent telle que cet algorithme ne peut pas être implémenté en tant que tel. Pour généraliser la méthode, la proposition de Pritchard et al. (1999) est de remplacer la condition d’acceptation exacte X = x0 par une condition approximative d(X, x0 ) < , où d est une distance et un degré de tolérance. Bien qu’inévitable, ce pas d’approximation rend la méthode ABC difficile à recommander de manière générale, même si des travaux plus récents la
28
Méthodes de Monte-Carlo avec R
reformulent en une technique non paramétrique qui vise à estimer la fonction de vraisemblance f (x|θ) (Beaumont et al., 2002). Une des critiques émises sur l’algorithme de rejet est qu’il génère des simulations “inutiles" provenant de la loi instrumentale g qui sont ensuite rejetées, même si elles sont nécessaires pour valider l’algorithme comme générateur suivant la loi cible f . Nous verrons dans le Chapitre 3 comment la méthode d’échantillonage préférentiel (Section 3.3) peut être utilisée pour contourner ce problème.
2.4
Exercices supplémentaires
Exercice 2.5 Le vecteur randu est un rappel historique utile sur les possibilités d’erreur dans la conception d’un générateur aléatoire. Il consiste en 400 lignes de trois valeurs consécutives produites par un (ancien) générateur aléatoire VAX appelé RANDU. a. Produire un échantillon aléatoire en prenant toutes les colonnes de randu et reproduire la Figure 2.1. b. Montrer que les triplets randu[i,] reposent sur l’un des 15 hyperplans parallèles. Exercice 2.6 Dans les deux questions, la comparaison entre générateurs est comprise en terme d’efficacité via la fonction system.time. a. Générer une variable aléatoire binomiale Bin(n, p) avec n = 25 et p = .2. Dessiner l’histogramme d’un échantillon simulé et le comparer avec la fonction de probabilité binomiale, dbinom. Comparer ce générateur avec le générateur binomial de R. b. Pour α ∈ [0, 1], montrer que le code R > u=runif(1) > while(u > alpha) u=runif(1) > U=u produit une variable aléatoire U suivant U ([0, α]). Comparer ce code avec la transformation αU , U ∼ U (0, 1), pour des valeurs de α proches de 0 et proches de 1, et avec runif(1,max=alpha). Exercice 2.7 En prolongement de l’Exemple 2.2, a. Générer les variables aléatoires gamma et bêta suivant (2.1). b. Montrer que si U ∼ U[0,1] , alors X = − log U/λ ∼ Exp(λ). c. Montrer que si U ∼ U[0,1] , alors X = log
u 1−u
est une variable aléatoire (0, 1) logistique.
Exercice 2.8 La distribution P(α) de Pareto est définie par sa densité f (x|α) = αx−α−1 sur (1, ∞). Montrer qu’elle peut être générée comme une variable uniforme à la puissance −1/α. Dessiner l’histogramme produit et la densité correspondante. Exercice 2.9 En prolongement de l’Exemple 2.5 :
Chapitre 2. Génération de variables aléatoires
29
a. Vérifier le code R pour le générateur de la loi de Poisson. Le comparer avec rpois. b. La distribution binomiale négative, de paramètres r et p, a une loi de probabilité r+y−1 P (Y = y) = pr (1 − p)y , y = 0, 1, . . . , y avec une moyenne r(1 − p)/p et une variance r(1 − p)/p2 . Pour r = 10 et p = .01, .1, .5, générer 1000 variables aléatoires et dessiner leur histogramme. Comparer les histogrammes avec la fonction de probabilité et étudier le générateur rnegbin (qui est dans la librairie MASS). c. La loi des séries logarithmiques a une fonction de probabilité égale à P (X = x) =
−(1 − p)x , x log p
x = 1, 2, . . . ,
0 < p < 1.
Pour p = .001, .01, .5, générer 1000 variables aléatoires et dessiner les histogrammes. Comparer ces histogrammes avec la fonction de probabilité. Exercice 2.10 La loi de Poisson P(λ) est liée à la loi exponentielle via le processus de Poisson qui peut être simulé en générant des variables aléatoires exponentielles jusqu’à ce que leur somme excède 1. Plus précisément, si Xi ∼ Exp(λ) et si K est la première valeur pour laquelle K+1 i=1 Xi > 1, alors K ∼ P(λ). Comparer cet algorithme avec la fonction rpois et l’algorithme de l’Exemple 2.5 pour des valeurs, petites et grandes, de λ. Exercice 2.11 Un algorithme de génération de variables aléatoires bêta a été introduit dans l’Exemple 2.2 pour α ≥ 1 et β ≥ 1. Un algorithme alternatif est fondé sur la propriété suivante : Si U et V sont iid U[0,1] , la distribution de U 1/α , U 1/α + V 1/β 1/α 1/β +V ≤ 1, est la loi Be(α, β). Comparer cet algorithme avec sous la contrainte que U rbeta et avec l’algorithme de l’Exemple 2.2 pour deux valeurs, une petite et une grande, de α, β. Exercice 2.12 Nous avons vu dans l’Exemple 2.2 que, si α ∈ N, la loi gamma Ga(α, β) peut être représentée comme la somme de α variables aléatoires exponentielles i ∼ Exp(β). Quand α ∈ N, cette représentation ne tient plus. a. Montrer que l’on peut poser β = 1 en utilisant la transformation y = βx. b. Quand la loi G(n, 1) est générée à partir d’une distribution Exp(λ) par la méthode de rejet, déterminer la valeur optimale de λ. c. Quand α ≥ 1, montrer que l’on peut utiliser l’algorithme de rejet avec la distribution instrumentale Ga(a, b) pour générer une distribution Ga(α, 1), sous la condition a ≤ α. Montrer que le rapport f /g est égal à b−a xα−a exp{−(1 − b)x}, à une constante de normalisation près, produisant la borne α−a α−a M = b−a (1 − b)e pour b < 1.
30
Méthodes de Monte-Carlo avec R d. Montrer que le maximum de b−a (1 − b)α−a est atteint à b = a/α et donc que le choix optimal de b pour simuler Ga(α, 1) est b = a/α, qui donne la même moyenne pour Ga(α, 1) et Ga(a, b). e. Défendre le choix a = α comme le meilleur choix de a parmi les entiers. f. Traiter de la stratégie à adopter quand α < 1.
Exercice 2.13 La densité exotique f (x) ∝ exp(−x2 /2) sin(6x)2 + 3 cos(x)2 sin(4x)2 + 1 peut être générée en utilisant l’algorithme de rejet. a. Dessiner f (x) et montrer qu’elle peut√être bornée par M g(x), où g est la densité normale standard g(x) = exp(−x2 /2)/ 2π. Trouver une valeur acceptable, sans être forcément optimale, de M . (Suggestion : Utiliser la fonction optimise.) b. Générer 2500 variables aléatoires suivant f en utilisant l’algorithme de rejet. c. Déduire du taux d’acceptation de cet algorithme une approximation de la constante de normalisation de f et comparer l’histogramme avec le graphe de la densité normalisée f. Exercice 2.14 Dans un algorithme de rejet qui génère une variable aléatoire N (0, 1) à partir d’une loi doublement exponentielle de densité g(x|α) = (α/2) exp(−α|x|), calculer la borne supérieure M sur f /g et montrer que le choix α = 1 optimise le taux d’acceptation correspondant. Exercice 2.15 Dans chacun des cas suivants, construire un algorithme de rejet, générer un échantillon de variables aléatoires correspondantes et représenter la fonction de densité au-dessus de l’histogramme. a. Générer des variables aléatoires normales en utilisant des candidats suivant une loi de Cauchy dans le rejet. b. Générer des variables aléatoires de loi G(4.3, 6.2) en utilisant des candidats suivant une loi G(4, 7). Exercice 2.16 La distribution du chi-deux non centré, χ2p (λ), peut être définie par (i). une représentation de mélange (2.2), où g(x|y) est la densité de χ2p+2y et où p(y) est la densité de P(λ/2) et par (ii). la somme d’une variable aléatoire du χ2p−1 et du carré d’une variable N (||θ||, 1). a. Montrer que ces deux représentations sont valables. b. Montrer que les représentations sont équivalentes si λ = θ2 /2. c. Comparer les algorithmes qui peuvent être construits à partir de ces représentations entre eux et avec la fonction rchisq pour deux valeurs, une petite et une grande, de λ.
Chapitre 2. Génération de variables aléatoires
31
Exercice 2.17 Les lois normales tronquées N + (μ, σ 2 , a), dans lesquelles le champ des variables aléatoires est tronqué, apparaissent dans de nombreux contextes. Si X ∼ N (μ, σ 2 ), conditionnellement à l’événement {x ≥ a}, sa densité (conditionnelle) est proportionnelle à exp −(x − μ)2 /2σ 2 Ix≥a . a. La méthode naïve pour simuler cette variable aléatoire est de générer une loi N (μ, σ 2 ) jusqu’à ce que la valeur générée soit plus grande que a. Implanter le code R > Nsim=10^4 > X=rep(0,Nsim) > for (i in 1:Nsim){ + z=rnorm(1,mean=mu,sd=sigma) + while(z 0. Pour un a donné, traiter de l’optimisation de cet algorithme en μ. d. Une autre distribution instrumentale potentielle pour l’algorithme de rejet est la distribution exponentielle translatée, Exp(α, a), de densité gα (z) = αe−α(z−a) Iz≥a . 2
Montrer que le rapport (f /gα )(z) ∝ eα(z−a) e−z /2 est alors borné par exp(α2 /2−αa) si α ≥ a. En déduire que a = α donne une densité instrumentale légitime. Comparer la performance de l’algorithme de rejet correspondant fondé sur un candidat Exp(a, a) à l’algorithme de la partie c, en choisissant un a situé dans les queues de la loi normale N (0, 1). (L’échelle de la loi exponentielle dans la partie d pourrait être optimisée, mais cela ne conduit pas forcément à des valeurs explicites de l’échelle de la loi instrumentale. Une troncation double d’une loi normale (c’est-à-dire, quand le support est contraint par b ≤ x ≤ a) est un peu plus difficile à calibrer. Voir Robert (1995b) pour une résolution ou utiliser rtrun dans la librairie bayesm. Voir aussi l’Exercice 7.10 pour un autre générateur normal tronqué.) Exercice 2.18 Etant donné une densité d’échantillonnage f (x|θ) et une densité a priori π(θ), si nous observons x = (x1 , . . . , xn ), la distribution a posteriori sur θ est π(θ|x) = π(θ|x1 , . . . , xn ) ∝ f (xi |θ)π(θ), où
i
i
f (xi |θ) = L(θ|x1 , . . . , xn ) est la fonction de vraisemblance.
32
Méthodes de Monte-Carlo avec R a. Si π(θ|x) est la densité cible dans un algorithme de rejet et si π(θ) est la densité candidate, montrer que la borne optimale M est la fonction de vraisemblance évaluée en l’estimateur du maximum de vraisemblance. b. Pour estimer une moyenne normale, une loi a priori robuste est la loi de Cauchy. PourXi ∼ N (θ, 1), θ ∼ C(0, 1), la distribution a posteriori est π(θ|x) ∝
n 1 1 −(xi −θ)2 /2 1 e . π 1 + θ2 2π i=1
Prendre θ0 = 3, n = 10 et générer X1 , . . . , Xn ∼ N (θ0 , 1). Utiliser l’algorithme de rejet avec le candidat de Cauchy C(0, 1) pour générer un échantillon de la distribution a posteriori. Evaluer à quel point la valeur θ0 est approchée. Pouvez-vous observer une amélioration quand n augmente ?
Chapitre 3
Intégration de Monte-Carlo “Every time I think I know what’s going on, suddenly there’s another layer of complications. I just want this damn thing solved." John Scalzi The Last Colony
Guide du lecteur Alors que le Chapitre 2 se concentrait sur les techniques de simulation permettant de générer des variables aléatoires par ordinateur, ce chapitre introduit les concepts majeurs des méthodes de Monte-Carlo ; c’est-à-dire, tirer avantage de la disponibilité des variables aléatoires générées par ordinateur pour approcher des intégrales unidimensionnelles et multidimensionnelles. Dans la Section 3.2, nous introduisons les notions de base des approximations de Monte-Carlo comme un sous-produit de la Loi des Grands Nombres, tandis que la Section 3.3 souligne l’universalité de cette approche en insistant sur la versatilité de la représentation d’une intégrale comme espérance. Le Chapitre 5 traitera pareillement de la résolution des problèmes d’optimisation par des techniques de simulation.
C. P. Robert et al., Méthodes de Monte-Carlo avec R © Springer-Verlag France 2011
34
3.1
Méthodes de Monte-Carlo avec R
Introduction
Deux versants caractéristiques des problèmes numériques présents dans l’inférence statistique sont l’optimisation et l’intégration. De nombreux exemples (voir Rubinstein, 1981, Gentle, 2002, ou Robert, 2006) montrent qu’il n’est pas toujours possible de calculer analytiquement les estimateurs associés à un paradigme donné (que ce soit par maximum de vraisemblance, par des techniques bayésiennes ou par la méthode des moments). Par conséquent, quel que soit le type d’inférence statistique, nous sommes souvent amenés à considérer des solutions numériques. Le chapitre précédent introduit une variété de méthodes pour la génération par ordinateur de variables aléatoires de distributions données et il fournit donc une base pour la construction de solutions à nos problèmes statistiques. Une des solutions les plus standard est bien sûr d’utiliser la simulation, soit de la distribution originale, soit d’une distribution de substitution, pour calculer la quantité qui nous intéresse. Dans le cadre de la théorie de la décision (Robert, 2006), qu’elle soit classique ou bayésienne, cette solution est naturelle car les risques et les estimateurs de Bayes mettent en jeu des intégrales reliées à des distributions de probabilité. Notons que la possibilité de produire une quantité presque infinie de variables aléatoires distribuées selon une distribution donnée ouvre l’accès à l’utilisation de résultats fréquentistes et asymptotiques beaucoup plus facilement que dans le cas de l’inférence usuelle, où la taille de l’échantillon est souvent fixée. On peut donc appliquer des résultats probabilistes comme la Loi des Grands Nombres ou le Théorème de la Limite Centrale, puisqu’ils autorisent tous deux une évaluation de la convergence des méthodes de simulation (équivalente aux bornes déterministes utilisées par les approches numériques).
3.1.1
Intégration numérique
Avant de nous engager dans la description des techniques de Monte-Carlo, notons que l’alternative, a priori naturelle, à l’utilisation des méthodes de simulation pour les intégrales de la forme h(x) f (x) dx, X
où f est une densité de probabilité, serait de se reposer sur des méthodes numériques comme celle de Simpson et les règles du trapèze. Par exemple, R propose deux fonctions apparentées qui dirigent l’intégration unidimensionnelle, area (dans la librairie MASS) et integrate. Cependant, area ne s’applique pas aux intégrales avec des bornes infinies et nécessite donc des connaissances préalables de la région d’intégration. L’autre fonction, integrate, accepte des bornes infinies mais malheureusement, elle est très fragile et peut produire des résultat faux.
Chapitre 3. Intégration de Monte-Carlo
35
Exemple 3.1 (Précision de integrate) Comme cible test, nous comparons l’utilisation de integrate sur l’intégrale ∞ xλ−1 exp(−x) dx = Γ(λ) 0
avec le calcul de Γ(λ) fourni par la fonction gamma. En implantant cette comparaison sous la forme > > + +
ch=function(la){integrate(function(x){x^(la-1)*exp(-x)},0,Inf)$val} plot(lgamma(seq(.01,10,le=100)),log(apply(as.matrix( seq(.01,10,le=100)),1,ch)),xlab="log(integrate(f))", ylab=expression(log(Gamma(lambda))),pch=19,cex=.6)
nous obtenons la suite représentée dans la Figure 3.1, qui ne montre aucune divergence entre les deux évaluations même pour une très faible valeur de λ.
Fig. 3.1 – Comparaison de l’évaluation par integrate de l’intégrale Γ(λ) avec sa valeur réelle. Une des difficultés des méthodes d’intégration numérique comme integrate est qu’elles manquent souvent la région la plus significative pour la fonction à intégrer. Au contraire, les méthodes de simulation ciblent naturellement cette région en exploitant l’information apportée par la densité de probabilité associée aux intégrales. Exemple 3.2 (integrate versus area) Considérons un échantillon de 10 variables aléatoires de Cauchy xi (1 ≤ i ≤ 10) avec le paramètre de position θ = 350. La (pseudo-) marginale de l’échantillon sous une loi a priori plate est alors m(x) =
10 ∞
1 1 dθ . 2 π 1 + (x i − θ) −∞ i=1
36
Méthodes de Monte-Carlo avec R
Cependant, integrate retourne une valeur numérique fausse > cac=rcauchy(10)+350 > lik=function(the){ + u=dcauchy(cac[1]-the) + for (i in 2:10) + u=u*dcauchy(cac[i]-the) + return(u)} > integrate(lik,-Inf,Inf) 7.38034e-46 with absolute error < 1.5e-45 > integrate(lik,200,400) 4.83155e-13 with absolute error < 9e-13 et ne réussit même pas à signaler la difficulté car l’erreur d’évaluation est ridiculement petite. De plus, le résultat n’est pas comparable à area : > > > > > > > >
cac=rcauchy(10) nin=function(a){integrate(lik,-a,a)$val} nan=function(a){area(lik,-a,a)} x=seq(1,10^3,le=10^4) y=log(apply(as.matrix(x),1,nin)) z=log(apply(as.matrix(x),1,nan)) plot(x,y,type="l",ylim=range(cbind(y,z)),lwd=2) lines(x,z,lty=2,col="sienna",lwd=2)
Utiliser area dans ce cas produit une évaluation plus sûre comme démontré dans la Figure 3.2, car la commande area(lik,-a,a) reste relativement stable quand a augmente, mais cette évidence requiert des connaissances préalables à propos de la position du mode de l’intégrande.
Fig. 3.2 – Comparaison de integrate et de area pour l’intégrale d’une probabilité de Cauchy à l’échelle logarithmique (le résultat de area correspond à la courbe en plein dans le graphe ci-dessus).
Chapitre 3. Intégration de Monte-Carlo
37
Un dernier point est que les avancées continuelles de l’intégration numérique ne peuvent pas faire face aux intégrales hautement (voire modérément) multidimensionnelles qui sont la règle dans les problèmes statistiques. Elaborer des astuces fines d’intégration spécifiques pour ces problèmes serait par trop difficile, d’autant que nous pouvons tirer profit de la nature probabiliste de ces intégrales.
3.2
L’intégration classique de Monte-Carlo
Avant de proposer nos simulations techniques comme réponse aux problèmes pratiques d’intégration, rappelons les propriétés qui justifient leur usage, référant le lecteur à Robert & Casella (2004) pour (beaucoup) plus de détails. Le problème générique est d’évaluer l’intégrale h(x) f (x) dx, (3.1) Ef [h(X)] = X
où X dénote l’espace où la variable aléatoire X prend ses valeurs, qui est d’habitude égal au support de la densité f . Le principe de la méthode de Monte-Carlo pour approcher (3.1) est de générer (par ordinateur) un échantillon (X1 , . . . , Xn ) suivant la densité f et de proposer comme approximation la moyenne empirique hn =
n 1 h(xj ) , n j=1
calculée par mean(h(x)) sous R, car hn converge presque sûrement, c’est-à-dire pour presque toutes les suites générées, vers Ef [h(X)] par la Loi Forte des Grands Nombres. De plus, quand h2 (X) a une variance finie sous f , la vitesse de conver√ gence de hn peut être évaluée car la convergence se produit à la vitesse O( n) et la variance asymptotique de l’approximation est 1 2 (h(x) − Ef [h(X)]) f (x)dx, var(hn ) = n X variance qui peut aussi être estimée à partir de l’échantillon (X1 , . . . , Xn ) par vn =
n 1 [h(xj ) − hn ]2 . n2 j=1
Plus spécifiquement, grâce au Théorème de la Limite Centrale, pour une valeur assez grande de n, hn − Ef [h(X)] √ vn est approximativement distribué comme une variable N (0, 1) et cela conduit bien à un test de convergence et aux bornes de confiance sur l’approximation de Ef [h(X)].
38
Méthodes de Monte-Carlo avec R
Exemple 3.3 (Convergence de Monte Carlo) Pour la fonction artificiellement choisie 1 h(x) = [cos(50x) + sin(20x)]2 ,
(3.2)
représentée dans la partie supérieure de la Figure 3.3, considérons l’évaluation de son intégrale sur [0, 1]. Ce problème peut être vu comme une intégration uniforme. Par conséquent, nous générons des variables U1 , U2 , . . . , Un iid U(0, 1) et approchons h(x)dx par h(Ui )/n. La partie inférieure de la Figure 3.3 montre comment la convergence se produit, ainsi que les bornes dérivées des erreurs standard estimées en fonction du nombre n de simulations.
Fig. 3.3 – Approximation de l’intégrale de la fonction (3.2) : (haut) fonction (3.2) et (bas) moyenne ± deux écarts types en fonction des itérations pour une seule série de simulations. L’implémentation en R est comme suit : > h=function(x){(cos(50*x)+sin(20*x))^2} > par(mar=c(2,2,2,1),mfrow=c(2,1)) > curve(h,xlab="Fonction",ylab="",lwd=2) > integrate(h,0,1) 0.965201 with absolute error < 1.9e-10 > x=h(runif(10^4)) 1. Cette fonction peut être optimisée analytiquement.
Chapitre 3. Intégration de Monte-Carlo > > > + > >
39
estint=cumsum(x)/(1:10^4) esterr=sqrt(cumsum((x-estint)^2))/(1:10^4) plot(estint, xlab="Moyenne et variation",type="l",lwd= 2,ylim=mean(x)+20*c(-esterr[10^4],esterr[10^4]),ylab="") lines(estint+2*esterr,col="gold",lwd=2) lines(estint-2*esterr,col="gold",lwd=2)
Notons que la bande de confiance produite dans cette figure est bien une bande de confiance de 95% au sens classique, c’est-à-dire qu’elle ne correspond pas à une bande de confiance sur le graphe de convergence des valeurs estimées, mais plutôt à l’intervalle de confiance que vous pouvez produire pour tout nombre d’itérations sur lequel vous voulez vous arrêter.
Alors que le bonus apporté par l’évaluation simultanée de l’erreur par l’estimation de Monte-Carlo est indiscutable, vous devez rester attentif au fait que cette évaluation n’est valide que lorsque vn est elle-même une estimation convergente de la variance de hn . Dans des situations critiques où vn ne converge pas du tout ou même ne converge pas assez vite pour appliquer un Théorème de la Limite Centrale, cette estimation et la région de confiance asssociée à cette dernière ne peuvent pas être vérifiées. Quand vous évaluez la convergence des méthodes de Monte-Carlo, problème qui sera traité en détail dans le chapitre suivant, la commande R cumsum est assez pratique pour ce qui est de calculer toutes les sommes partielles d’une suite à la fois et pour autoriser une représentation immédiate de la suite correspondante des estimateurs. Exercice 3.1 Pour l’estimateur de Bayes Cauchy-normal ∞ ∞ 2 θ 1 −(x−θ)2 /2 e dθ e−(x−θ) /2 d θ , δ(x) = 2 2 1 + θ 1 + θ −∞ −∞ implantez l’expérience suivante quand x = 0, 2, 4. a. Précisez les intégrandes et utilisez une intégration de Monte-Carlo fondée sur une simulation de Cauchy pour calculer les intégrales. b. Surveillez la convergence avec l’erreur standard d’estimation. Obtenez trois chiffres de précision avec une probabilité de .95. c. Répétez l’expérience avec une intégration de Monte-Carlo fondée sur une simulation normale et comparez les deux approches.
La méthodologie de Monte-Carlo illustrée par l’exemple ci-dessus peut être implémentée dans un grand nombre de cas où les distributions impliquées dans le modèle peuvent être simulées. Par exemple, nous pourrions utiliser les sommes de Monte-Carlo pour calculer une fonction de répartition normale (même si cette fonction est maintenant disponible dans tous les logiciels de calcul et sur la plupart des calculatrices).
40
Méthodes de Monte-Carlo avec R
Exemple 3.4 (Précision d’une approximation de la fonction de répartition normale) Avec un échantillon normal N (0, 1) de taille n, (x1 , . . . , xn ), l’approximation de t 2 1 √ e−y /2 dy Φ(t) = 2π −∞ par la méthode de Monte-Carlo est 1 ˆ Φ(t) = Ix ≤t , n i=1 i n
avec une variance (exacte) de Φ(t)[1 − Φ(t)]/n (car les fonctions Ixi ≤t sont des variables de Bernoulli indépendantes avec probabilité de succès Φ(t)). L’implémentation R qui conduit au Tableau 3.1 est > > > > + + >
x=rnorm(10^8) #échantillon complet bound=qnorm(c(.5,.75,.8,.9,.95,.99,.999,.9999)) res=matrix(0,ncol=8,nrow=7) for (i in 2:8) #boucle longue ! for (j in 1:8) res[i-1,j]=mean(x[1:10^i]
0.0 0.485 0.4925 0.4962 0.4995 0.5001 0.5002 0.5
0.67 0.84 1.28 1.65 0.74 0.77 0.9 0.945 0.7455 0.801 0.902 0.9425 0.7425 0.7941 0.9 0.9498 0.7489 0.7993 0.9003 0.9498 0.7497 0.8 0.9002 0.9502 0.7499 0.8 0.9001 0.9501 0.75 0.8 0.9 0.95
2.32 0.985 0.9885 0.9896 0.9898 0.99 0.99 0.99
2.58 0.995 0.9955 0.995 0.995 0.995 0.995 0.995
3.09 1 0.9985 0.999 0.9989 0.999 0.999 0.999
3.72 1 1 0.9999 0.9999 0.9999 0.9999 0.9999
Tableau 3.1 – Evaluation de probabilités normales Pr(X ≤ t) par une méthode de Monte-Carlo basée sur n réplications d’une génération normale. La dernière ligne recouvre les valeurs exactes.
Pour des valeurs de t autour de t = 0, la variance est alors approximativement 1/4n et pour avoir une précision de quatre décimales, nous avons besoin de 2 × 1/4n ≤ 10−4 , soit environ n = (104 )2 = 108 , simulations. Le Tableau 3.1 donne l’évolution de cette approximation pour différentes valeurs de t et montre une évaluation précise pour 100 millions d’itérations. Notons qu’une plus grande précision (absolue) est atteinte dans les queues et que des méthodes de simulation (beaucoup) plus efficaces pourraient être utilisées.
Chapitre 3. Intégration de Monte-Carlo
41
Comme vous l’avez sans doute remarqué, les résultats sont représentés dans R avec toutes les décimales disponibles, comme dans > rnorm(1) [1] -0.08581098 Bien que logique d’un point de vue informatique, cette convention n’est pas recommandable en statistique et dans des environnements de simulation. En effet, la plupart des décimales sont non significatives. De plus, reproduire toutes les décimales affecte la lisibilité du résultat. La fonction format est utile pour réduire le total de décimales représentées, comme illustré dans la dernière ligne du progamme R ci-dessus. L’approximation de Monte-Carlo d’une fonction de répartition, illustrée par l’Exemple 3.4, a des applications originales. Par exemple, elle peut être utilisée lors de la construction de la distribution d’un test statistique comme un test du rapport de vraisemblance sous une hypothèse nulle, comme le montrent Robert & Casella (2004), aussi bien que pour approcher sa puissance sous l’alternative. On pourrait penser à ce stade que la méthode de Monte-Carlo introduite dans cette section est suffisante pour approcher les intégrales comme (3.1) de manière totalement contrôlée. En vérité, même si la méthode de Monte-Carlo directe fournit de bonnes approximations de (3.1) dans les cas les plus communs, il existe des alternatives plus efficaces qui n’évitent pas seulement une simulation directe de f mais peuvent aussi être utilisées plusieurs fois de suite pour plusieurs intégrales de la forme (3.1). L’utilisation peut de plus être recyclée soit pour une famille de fonctions h ou pour une famille de densités f . De plus, les problèmes de queues de simulations illustrés dans l’Exemple 3.4 peuvent être résolus beaucoup plus efficacement qu’en simulant suivant f car simuler des événements de très petite probabilité nécessite un très grand nombre de simulations sous f pour obtenir une précision (relative) donnée. Exercice 3.2 On considère IXi ≤t une variable aléatoire de Bernoulli égale à 1 avec une probabilité Φ(t). Montrez que la variance de l’estimateur normalisé IXi ≤t /Φ(t) tend vers l’infini quand t diminue jusqu’à −∞. Déduisez le nombre de simulations (en fonction de t) qui sont nécessaires pour obtenir une variance de moins de 10−8 . Exercice 3.3 Si nous sommes intéressés par la probabilité de queue Pr(X > 20) quand X ∼ N (0, 1), montrez que simuler depuis une distribution N (0, 1) ne marche pas. Exprimez la probabilité comme une intégrale et utilisez un changement de variables évident pour réécrire cette intégrale comme une espérance sous une distribution U (0, 1/20). Déduisez-en une approximation de Monte-Carlo de Pr(X > 20) avec une évaluation de l’erreur.
3.3
Echantillonnage préférentiel
La méthode que nous étudions à présent est appelée échantillonnage préférentiel car elle relie une fonction instrumentale, qui est une densité, à la distribution d’in-
42
Méthodes de Monte-Carlo avec R
térêt, f , aussi appelée distribution cible. En fait, une évaluation de (3.1) fondée sur des simulations suivant f n’est presque jamais optimale au sens où utiliser des distributions alternatives pour la simulation peut diminuer la variance de l’estimateur correspondant de (3.1).
3.3.1
Un changement arbitraire de mesure de référence
La méthode d’échantillonnage préférentiel est fondée sur une représentation alternative de (3.1). Pour une densité arbitraire donnée g qui est strictement positive quand h × f est différent de zéro, nous pouvons réécrire (3.1) comme
h(X)f (X) f (x) g(x) dx = Eg ; (3.3) h(x) Ef [h(X)] = g(x) g(X) X et donc comme espérance sous la densité g. (Notons que X est encore l’espace où X ∼ f (x) prend sa valeur et il peut donc être plus petit que le support de la densité g.) Cette identité fondamentale de l’échantillonnage préférentiel justifie l’usage de l’estimateur n 1 f (Xj ) (3.4) h(Xj ) → Ef [h(X)] n j=1 g(Xj ) fondé sur un échantillon X1 , . . . , Xn généré par g (et non par f !). Bien sûr, comme (3.1) peut aussi être écrit comme espérance sous g, (3.4) converge bien vers (3.1) pour la même raison que l’estimateur régulier de Monte-Carlo hn converge, quel que soit le choix de la distribution g (aussi longtemps que supp(g) ⊃ supp(h × f )). Cette propriété universelle est reliée au fait que l’intégrale (3.1) peut être représentée par une infinité de paires (h, f ) et donc qu’une intégrale donnée n’est pas intrinsèquement associée à une distribution donnée. A l’opposé, il y a une liberté presque absolue dans sa représentation en tant qu’espérance.
La contrainte sur le support de g, supp(g) ⊃ supp(h × f ), est fondamentale dans le sens qu’utiliser un support plus petit tronque l’intégrale (3.3) et produit donc un résultat biaisé. Ceci signifie, en particulier, que quand on considère une solution non paramétrique pour g, le support du noyau ne doit pas être restreint. Exercice 3.1 Pour le calcul de l’espérance Ef [h(X)] quand f est la densité normale et h(x) = exp(−(x − 3)2 /2) + exp(−(x − 6)2 /2) : a. Montrez que Ef [h(X)] peut être calculée sous forme explicite et déduire sa valeur. b. Construisez une approximation régulière de Monte-Carlo basée sur un échantillon N (0, 1) normal, de taille Nsim=10^3 et produisez une erreur d’évaluation. c. Comparez le résultat ci-dessus avec une approximation d’échantillonnage préférentiel fondée sur une fonction de préférence g correspondant à la distribution U (−8, −1) et un échantillon de taille Nsim=10^3. (Avertissement : ce choix de g ne produit pas une approximation convergente de Ef [h(X)] !)
Chapitre 3. Intégration de Monte-Carlo
43
Exemple 3.5 (Approximation de la probabilité de queue) Comme mentionné à la fin de l’Exemple 3.4, les probabilités de queue sont très mal approchées en utilisant des sommes standard de Monte-Carlo une fois rendu assez loin dans la queue. Par exemple, si Z ∼ N (0, 1) et si nous sommes intéressés par la probabilité P (Z > 4.5), qui est très petite, > pnorm(-4.5,log=T) [1] -12.59242 simuler Z (i) ∼ N (0, 1) produit une seule fois un succès sur environ 3 millions d’itérations ! Bien sûr, le problème est que nous sommes maintenant intéressés par la probabilité d’un événement très rare et donc une simulation naïve de f nécessitera un grand nombre de simulations pour avoir une réponse stable. Mais, grâce à l’échantillonnage préférentiel, nous pouvons grandement améliorer notre précision et donc diminuer le nombre de simulations par de nombreux ordres de magnitude. Par exemple, si nous considérons une distribution avec un support restreint à [4.5, ∞[, l’additionnelle et inutile variation de l’estimateur de Monte-Carlo due aux zéros simulés (quand x < 4.5) disparaît. Un choix naturel est de prendre pour g la densité d’une distribution exponentielle Exp(1) tronquée à 4.5, g(y) = e
−y
∞
e−x dx = e−(y−4.5) ,
4.5
et l’estimateur par échantillonnage préférentiel de la probabilité de queue est 2 n n 1 e−Yi /2+Yi −4.5 1 f (Y (i) ) √ = , n i=1 g(Y (i) ) n i=1 2π
où les Yi sont des générations suivant g. Le code correspondant est > > > > >
Nsim=10^3 y=rexp(Nsim)+4.5 weit=dnorm(y)/dexp(y-4.5) plot(cumsum(weit)/1:Nsim,type="l") abline(a=pnorm(-4.5),b=0,col="red")
La valeur finale est alors 3.312 10−6 , à comparer avec la vraie valeur de 3.398×10−6 . Comme illustré par la Figure 3.4, la précision de l’approximation est remarquable, tout spécialement quand elle est comparée aux exigences de taille imposées par une simulation normale.
Méthodes de Monte-Carlo avec R
0e+00
2e−06
4e−06
6e−06
8e−06
44
0
200
400
600
800
1000
Iterations
Fig. 3.4 – Convergence de l’approximation de l’échantillonnage préférentiel de la probabilité de queue normale P (Z ≥ 4.5), fondée sur une suite simulée d’une distribution exponentielle translatée. La ligne droite correspond à la vraie valeur de l’intégrale. Exercice 3.2 Dans l’exemple ci-dessus, examinez l’impact d’utiliser une distribution exponentielle tronquée Exp(λ) sur la variance de l’approximation de la probabilité de queue en fonction de λ.
L’échantillonnage préférentiel est alors d’un intérêt considérable car il impose très peu de restrictions sur le choix de la distribution instrumentale g, qui peut être choisie parmi des distributions qui sont soit très faciles à manipuler, soit efficaces dans l’approximation de l’intégrale. De plus, le même échantillon (généré suivant g) peut être utilisé de façon répétée, pas seulement pour des fonctions différentes h mais aussi pour différentes densités f . Exemple 3.6 (Approximation préférentielle de l’a posteriori d’observations bêta) Cet exemple provient d’un contexte bayésien : quand on considère une observation x suivant une distribution bêta B(α, β), x∼
Γ(α + β) α−1 x (1 − x)β−1 I[0,1] (x), Γ(α)Γ(β)
il existe une famille de lois a priori conjuguées sur (α, β) de la forme
λ Γ(α + β) β π(α, β) ∝ xα 0 y0 , Γ(α)Γ(β) où λ, x0 , y0 sont des hyperparamètres, car la loi a posteriori est alors égale à
λ+1 Γ(α + β) π(α, β|x) ∝ [xx0 ]α [(1 − x)y0 ]β . Γ(α)Γ(β)
Chapitre 3. Intégration de Monte-Carlo
45
Cette famille de distributions est hélas inutilisable car manipuler des fonctions gamma est délicat. Simuler directement depuis π(α, β|x) est donc impossible. Nous avons besoin d’une distribution alternative g(α, β) et nous pouvons avoir une idée préliminaire en regardant une représentation graphique de π(α, β|x). Si nous prenons λ = 1, x0 = y0 = .5 et x = .6, le code R de cette visualisation est > + > > > > >
f=function(a,b){ exp(2*(lgamma(a+b)-lgamma(a)-lgamma(b))+a*log(.3)+b*log(.2))} aa=1:150 #grille en alpha pour image bb=1:100 #grille en beta pour image post=outer(aa,bb,f) image(aa,bb,post,xlab=expression(alpha),ylab=" ") contour(aa,bb,post,add=T)
La commande outer est une abréviation extrêmement utile pour calculer une matrice A=outer(a,b,f) de dimension c(dim(a),dim(b)) où l’élément A[i,j] est égal à f(a[i],b[j]). Cette méthode est beaucoup plus rapide que la double boucle d’allocation, > system.time(outer(aa,bb,f)) user system elapsed 0.028 0.000 0.029 > system.time(for (j in 1:100){for (i in 1:150) + post[i,j]=f(a=aa[i],b=bb[j])}) user system elapsed 0.360 0.004 0.367 mais elle se compare (en terme de vitesse) avec une seule boucle d’allocation > system.time(outer(aa,bb,f)) user system elapsed 0.028 0.000 0.028 > system.time(for (j in 1:100){post[,j]=f(a=aa,b=bb[j])}) user system elapsed 0.028 0.000 0.027 > system.time(for (i in 1:150){post[i,]=f(a=aa[i],b=bb)}) user system elapsed 0.032 0.000 0.031 donc elle n’est pas non plus un moyen super efficace pour allouer des valeurs à la matrice. L’examen de la Figure 3.5 (gauche) montre qu’une distribution normale ou de Student sur (α, β) pourrait être appropriée. Choisir une distribution de Student T (3, μ, Σ) avec μ = (50, 45) et 220 190 Σ= 190 180
46
Méthodes de Monte-Carlo avec R
produit un ajustement raisonnable, comme démontré sur la Figure 3.5 (droite) en utilisant une superposition de simulations depuis cette distribution T (3, μ, Σ) avec la surface de la distribution a posteriori. La matrice de covariance ci-dessus a été obtenue par essai-et-erreur, en modifiant les entrées jusqu’à ce que l’échantillon dans la Figure 3.5 (droite) corresponde assez bien : > > > > >
x=matrix(rt(2*10^4,3),ncol=2) #échantillon Student E=matrix(c(220,190,190,180),ncol=2) #matrice d’échelle image(aa,bb,post,xlab=expression(alpha),ylab=" ") y=t(t(chol(E))%*%t(x)+c(50,45)) points(y,cex=.6,pch=19)
Notons l’utilisation de t(chol(E)) pour assurer que la matrice de covariance soit E (à un facteur 3 près en raison de l’utilisation de la distribution de Student t3 ). ●
● ●
100
100
●● ●● ● ●
●
● ● ● ●
● ● ●
● ●
●
80
80
● ●● ● ●
●
● ●● ● ●
●● ● ●● ●● ● ● ● ● ● ● ● ●● ● ●● ●● ●● ● ●●● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ●●● ●●● ● ● ● ● ●● ●● ● ●●● ● ● ● ●● ● ● ●● ● ● ● ●● ● ● ●● ● ● ●● ● ● ●● ● ●● ● ● ●●● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ●●● ● ●● ● ● ● ● ● ● ●● ● ●● ● ● ● ●● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ●● ● ●● ●● ● ● ●● ● ● ● ● ● ●●● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ●● ● ●● ● ●● ● ● ● ●● ● ● ● ●● ● ● ●● ● ● ●●● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ●● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ●● ● ● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ●●● ● ●● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ●● ●●●● ●● ●● ●● ● ●● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●●
●
● ● ● ●
● ●
● ●●
● ●
● ●
60 40 20
20
40
60
●
20
60
100
● ●
140
●
●
20
60
100
140
●●
α
α
Fig. 3.5 – (gauche) Représentation de la distribution a posteriori π(α, β|x) sur les paramètres d’une distribution B(α, β) pour x = 0.6. (droite) Superposition d’un échantillon de 103 points depuis une distribution de Student t T (3, μ, Σ) utilisée comme une fonction instrumentale.
Si la quantité d’intérêt est la probabilité marginale, comme dans la comparaison bayésienne de modèles (Robert, 2006),
Chapitre 3. Intégration de Monte-Carlo
47
m(x)
= R2+
=
R2+
f (x|α, β) π(α, β) dαdβ
Γ(α+β) Γ(α)Γ(β)
x(1 − x)
λ+1
R2+
[xx0 ]α [(1 − x)y0 ]β dαdβ , λ Γ(α+β) α y β dαdβ x 0 0 Γ(α)Γ(β)
nous devons approcher les deux intégrales à la fois et le même échantillon t peut alors être utilisé pour les deux approximations, car l’adéquation est également raisonnable sur la surface a priori. Cette approximation
λ+1 n Γ(αi + βi ) m(x) ˆ = [xx0 ]αi [(1 − x)y0 ]βi g(αi , βi ) Γ(αi )Γ(βi ) i=1
λ n Γ(αi + βi ) i βi xα (3.5) 0 y0 g(αi , βi ) , Γ(αi )Γ(βi ) i=1 où (αi , βi )1≤i≤n sont n réalisations iid suivant g, est évidente à implanter en R : > ine=apply(y,1,min) > y=y[ine>0,]; x=x[ine>0,] > normx=sqrt(x[,1]^2+x[,2]^2) > f=function(a) exp(2*(lgamma(a[,1]+a[,2])-lgamma(a[,1]) + -lgamma(a[,2]))+a[,1]*log(.3)+a[,2]*log(.2)) > h=function(a) exp(1*(lgamma(a[,1]+a[,2])-lgamma(a[,1]) + -lgamma(a[,2]))+a[,1]*log(.5)+a[,2]*log(.5)) > den=dt(normx,3) > mean(f(y)/den)/mean(h(y)/den) [1] 0.1361185 Notre approximation de la vraisemblance marginale, basée sur ces simulations, est alors de 0.1361. De même, les espérances a posteriori des paramètres α et β sont obtenues par > mean(y[,1]*apply(y,1,f)/den)/mean(apply(y,1,h)/den) [1] 19.33745 > mean(y[,2]*apply(y,1,f)/den)/mean(apply(y,1,h)/den) [1] 16.54468 donc sont à peu près égales à 19.34 et 16.54, respectivement.
3.3.2
Rééchantillonnage préférentiel
La technique d’échantillonnage préférentiel produit en fait plus que des intégrales approchées, car elle donne un moyen alternatif de simuler suivant des distributions
48
Méthodes de Monte-Carlo avec R
complexes. Rappelons que la méthode produit un échantillon X1 , . . . , Xn simulé suivant g avec un poids d’échantillonnage préférentiel f (Xi )/g(Xi ). Cet échantillon peut être recyclé par rééchantillonnage multinomial en un échantillon qui est (presque) distribué suivant f . Bien entendu, si nous pouvions échantillonner avec remplacement depuis la population simulée {X1 , . . . , Xn }, choisir Xi avec probabilité f (Xi )/ng(Xi ), nous obtiendrions un résultat X ∗ distribué suivant Pr(X ∗ ∈ A)
=
n
Pr(X ∗ ∈ A et X ∗ = Xi )
i=1
=
A
f (x) g(x) dx = g(x)
f (x) dx, A
et la méthode produirait alors une simulation exacte suivant f ! Malheureusement, les probabilités f (Xi )/ng(Xi ) ne somment pas à 1 (pire, certaines peuvent même être plus grandes que 1) et ont besoin d’être normalisées en (i = 1, . . . , n) n 1 1 {f (Xj )/g(Xj )} . (3.6) ωi = {f (Xi )/g(Xi )} n n j=1
Alors que le dénominateur converge presque sûrement vers 1, la renormalisation induit un biais dans la distribution des valeurs rééchantillonnées. Pourtant, pour des échantillons de grandes tailles, ce biais est négligeable et nous pouvons alors utiliser l’échantillonnage multinomial (ou une version améliorée ; voir les Exercices 3.4 et 3.10) pour approcher les échantillons générés suivant f . Exercice 3.4 Soit un échantillon pondéré (Xi , f (Xi )/g(Xi )) donné. Montrez que si ωi a comme loi une loi de Poisson ωi ∼ P(f (Xi )/g(Xi )), l’estimateur 1 ωi h(xi ) n i=1 n
n’est pas biaisé. Déduisez-en que l’échantillon dérivé de ce méchanisme d’échantillonnage est marginalement distribué suivant f .
La seule difficulté de la solution proposée dans l’Exercice 3.4 est que les échantillons ainsi produits ont une taille aléatoire en raison des répliques aléatoires de chaque valeur dans l’échantillon pondéré, entre 0 et ∞. Bien que le cas où soit f , soit g, n’ont pas leur constante de normalisation connue puisse aussi être traité en remplaçant f /g par αf /g, l’impact sur la taille de l’échantillon final est encore plus dur à déterminer (voir les Exercices 3.8 et 3.10). L’utilisation des poids renormalisés dans l’estimateur de l’échantillonnage préférentiel produit l’estimateur de l’échantillonnage préférentiel auto-normalisé n n h(Xi ) f (Xi )/g(Xi ) {f (Xj )/g(Xj )} , (3.7) i=1
j=1
Chapitre 3. Intégration de Monte-Carlo
49
qui peut aussi être utilisé dans des situations où, soit f , soit g, n’ont pas de constante de normalisation connue. Le dénominateur de (3.6) estime alors la (ou les) constante(s) manquante(s) en même temps. (C’est par exemple le cas dans l’Exemple 3.6 : la constante de normalisation manquante dans la loi a priori est estimée par mean(apply(y,1,h)/den).)
Le poids d’échantillonnage préférentiel donne seulement une évaluation relative de l’adéquation de l’échantillon simulé à la densité cible en ce qu’il indique combien la réalisation Xi est plus vraisemblable comme simulation de f comparé à la réalisation Xj , mais ce poids ne devrait pas être surinterprété. Par exemple, si Xi a un poids auto-normalisé qui est proche de 1, cela ne veut pas dire que cette valeur est très vraisemblable suivant f mais seulement qu’elle l’est beaucoup plus que les autres valeurs simulées ! Même lorsque le rapport entre f et g est très faible, cela arrivera forcément. Donc, des indicateurs plus fiables doivent être utilisés pour juger de l’adéquation de g à f .
Exemple 3.7 (Suite de l’Exemple 3.6) La validité de l’approximation (3.5) de la probabilité marginale, c’est-à-dire la convergence de la solution de l’échantillonnage préférentiel, peut être évaluée par des moyens graphiques comme suit : > > > > + > > + > > + > > > + > > +
par(mfrow=c(2,2),mar=c(4,4,2,1)) weit=(apply(y,1,f)/den)/mean(apply(y,1,h)/den) image(aa,bb,post,xlab=expression(alpha),ylab=expression(beta)) points(y[sample(1:length(weit),10^3,rep=T,pro=weit),], cex=.6,pch=19) boxplot(weit,ylab="poids d’échantillonnage") plot(cumsum(weit)/(1:length(weit)),type="l", xlab="simulations", ylab="vraisemblance marginale") boot=matrix(0,ncol=length(weit),nrow=100) for (t in 1:100) boot[t,]=cumsum(sample(weit))/(1:length(weit)) uppa=apply(boot,2,quantile,.95) lowa=apply(boot,2,quantile,.05) polygon(c(1:length(weit),length(weit):1),c(uppa,rev(lowa)), col="gold") lines(cumsum(weit)/(1:length(weit)),lwd=2) plot(cumsum(weit)^2/cumsum(weit^2),type="l",xlab="simulations", ylab="Taille effective d’échantillon",lwd=2)
Nous ne détaillerons pas ici tous ces indicateurs de convergence, car certains sont couverts par le prochain chapitre.
40
60
80
10
● ● ● ● ● ●
5
● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●
0
● ●
20
● ● ●
importance weight
80 60 20
40
β
●● ●● ● ●● ● ● ● ● ●● ● ● ● ● ●● ●● ● ● ●● ● ● ● ● ● ●●● ●● ● ●● ● ● ● ● ●●● ● ● ●● ● ●● ● ●● ●● ● ● ●● ● ● ●●●● ● ● ●● ● ●●● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ●●● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ● ●●●●● ● ● ●●● ●●● ●●●●● ● ●●● ● ● ● ● ●●● ● ●●● ● ● ● ● ● ●●●● ● ● ●● ● ●●●● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ●● ● ● ● ● ● ●● ● ●● ● ● ●● ● ● ● ● ●● ● ● ● ●● ●● ● ●● ● ●● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ●● ●● ● ●● ● ●● ● ●● ●●● ● ● ● ●●● ● ● ● ●●● ●● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ●● ● ● ●●● ● ● ● ●● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ●● ● ●●● ●● ●● ●● ●● ●● ●●● ● ● ●● ● ● ● ● ● ● ● ● ● ●●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ●● ● ● ● ●● ● ●●● ● ● ● ●● ●● ●●● ● ● ●● ● ● ● ●●● ● ● ●● ● ● ● ● ●● ● ● ●●● ● ●●●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●●● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●●● ● ● ● ● ● ● ●● ● ●● ● ● ● ●● ●●● ● ● ●● ● ● ● ● ● ● ● ●●● ● ●●● ● ●● ●● ● ● ●● ● ●●● ● ● ● ●●● ● ● ● ● ●● ● ●● ● ● ●● ●● ● ● ●● ● ● ●● ● ● ● ● ● ●● ●
15
Méthodes de Monte-Carlo avec R 100
50
120
0
2000
6000 simulations
10000
500 300 0 100
Effective sample size
0.14 0.10 0.06
marginal likelihood
0.18
α
0
2000
6000
10000
simulations
Fig. 3.6 – (en haut à gauche) Superposition de 103 points rééchantillonnés suivant la distribution a posteriori π(α, β|x) correspondant aux paramètres d’une distributio nB(α, β) pour x = 0.6 ; (en haut à droite) Boxplot des poids d’échantillonnage préférentiel ; (en bas à gauche) Convergence de l’approximation m(x) ˆ et évaluation par bootstrap de sa variabilité ; (en bas à droite) Evolution de la taille effective d’échantillon. Le graphique en haut à droite dans la Figure 3.6 montre que l’échantillon pondéré utilisant le poids d’échantillonnage préférentiel π(αi , βi |x)/g(αi , βi ) produit une bonne reproduction d’un échantillon généré suivant π(α, β|x). Les points rééchantillonnés ne dégénèrent pas en quelques points mais ils couvrent au contraire, avec une forte densité, le domaine adéquat pour la distribution visée (à comparer avec le côté droit de la Figure 3.5). Le graphique en haut à droite donne une représentation de la répartition des poids d’échantillonnage préférentiel. Bien qu’il existe des simulations avec des poids beaucoup plus élevés que les autres, la distribution des poids n’est pas extrême au point de signifier une dégénéresence de la méthode. Par exemple, le point avec le plus grand poids représente seulement 1% de tout l’échantillon. Le graphique en bas à gauche représente la convergence de l’estimateur m(x) ˆ quand n augmente. La bande colorée entourant la suite est une
Chapitre 3. Intégration de Monte-Carlo
51
interprétation bootstrap (voir Section 1.4) de la variabilité de cet estimateur qui correspond à la bande de confiance représentée dans la Figure 3.3. La courbe en bas à droite représente la perte d’efficacité due à l’utilisation de l’échantillonnage préférentiel au travers de la taille effective de l’échantillon (voir Section 4.4),
n
2 π(αi , βi |x)/g(αi , βi )
i=1
n
2
{π(αi , βi |x)/g(αi , βi )} ,
i=1
qui devrait être égale à n, si les (αi , βi ) étaient générés de manière indépendante suivant la loi a posteriori. Le graphe fourni dans la Figure 3.6 montre que l’échantillon produit a une efficacité d’environ 6% en ce sens. Nous étudierons cet indicateur dans la Section 4.2.
3.3.3
Sélection de la loi instrumentale
La versatilité de la technique d’échantillonnage préférentiel est grande, du fait du choix de la loi instrumentale. Malheureusement, un choix “inadapté" de la fonction instrumentale g peut produire de très mauvais résultats. Alors que le choix optimal de g est plus un exercice formel (voir Rubinstein, 1981, ou Robert & Casella, 2004, Théorème 3.12) que foncièrement utile, un problème de premier ordre est de se prémunir contre les carences des estimateurs (3.3) résultants en examinant la précision associée à la loi instrumentale correspondante g. Bien que (3.4) converge presque sûrement vers (3.1), si l’espérance (3.1) existe, la variance de l’estimateur est finie seulement si l’espérance
f 2 (X) f (X) f 2 (x) h2 (x) Eg h2 (X) 2 = Ef h2 (X) = dx < ∞ g (X) g(X) g(x) X est elle-même finie. Sans exactement interdire les fonctions instrumentales aux queues plus fines que celles de f , qui sont associées à des rapports f /g non bornés, cette condition montre que ce type de fonctions est beaucoup plus encline à conduire à des estimateurs de variance infinie. Avant de discuter de ce problème plus avant, considérons un exemple simple pour illustrer l’impact désastreux d’un estimateur de variance infinie. Exemple 3.8 (Echantillonnage préférentiel à variance infinie) Une situation simple où la variance infinie apparaît est celle d’une loi instrumentale normale N (0, 1) associée à une loi cible de Cauchy C(0, 1). Le rapport f (x)/g(x) ∝ exp(x2 /2)/(1 + x2 ) est alors explosif, des valeurs modérement élevées de x donnant de très grands poids. Si vous exécutez le code > x=rnorm(10^6)
52 > > > >
Méthodes de Monte-Carlo avec R wein=dcauchy(x)/dnorm(x) boxplot(wein/sum(wein)) plot(cumsum(wein*(x>2)*(x<6))/cumsum(wein),type="l") abline(a=pcauchy(6)-pcauchy(2),b=0,col="sienna")
de manière répétée, vous devriez voir apparaître des graphiques comme ceux de la Figure 3.7, à savoir des graphes avec de gros sauts dans les moyennes cumulées, même avec un grand nombre n (ici, un million !) de termes dans la moyenne. Les sauts se produisent lors de simulations de variables aléatoires pour lesquelles exp(x2 /2)/(1 + x2 ) est grand, ce qui arrive quand x est grand. L’explication de ce phénomène est que, comme ces valeurs sont rares sous une loi instrumentale normale (ce qui veut dire beaucoup plus rares que sous une loi cible de Cauchy), elles ont besoin de compenser leur rareté en prenant des poids élevés. Par exemple, dans la Figure 3.7, le saut majeur est dû à une valeur de x = 5.49 associée avec un poids normalisé de ωi = 0.094. Ce qui veut dire que ce seul point a un poids relatif d’environ 10% dans un échantillon d’un million de points ! Bien entendu, le résultat de cette simulation n’a pas de fiabilité statistique car la taille n de l’échantillon n’est pas significative, ce qui revient à dire que la plupart des valeurs simulées ont un poids négligeable.
Fig. 3.7 – Evolution de l’estimateur de l’échantillonnage préférentiel de la probabilité P (2 ≤ Z ≤ 6) en fonction des itérations n, quand Z est distribuée suivant une distribution de Cauchy et la loi instrumentale est normale. La ligne horizontale correspond à la valeur exacte de la probabilité, à savoir 0.095. Quand le rapport f /g n’est pas borné, les poids d’échantillonnage préférentiel f (xj )/g(xj ) sont souvent très variables, donnant alors trop d’importance à quelques valeurs simulées xj et donc dégradant l’efficacité de l’estimateur (3.4). Comme le montre l’exemple ci-dessus, il se peut que l’estimation change abruptement d’une itération à une autre, même après plusieurs millions d’itérations, du fait d’une seule simulation. A l’opposé, les distributions instrumentales g ayant des queues
Chapitre 3. Intégration de Monte-Carlo
53
plus épaisses que f garantissent que le comportement du rapport f /g n’est pas la cause de la (possible) divergence de Ef [h2 (X)f (X)/g(X)]. Utiliser des lois instrumentales à queues plus épaisses est presque un “must" quand on considère l’approximation de fonctions h telles que l’espérance (3.1) existe mais que Ef [h2 (X)] n’est pas définie. Dans de tels cas, utiliser la méthode de MonteCarlo de base est impossible, car la moyenne empirique des h(Xi ) n’a pas de variance. Exercice 3.5 Soit f la densité d’une distribution de Student Tν , montrez que la variance de l’estimateur de l’échantillonnage préférentiel associé à une fonction instrumentale g et l’intégrande h(x) = x/(1 − x) est infinie pour tout g tel que g(1) < ∞. Donnez une condition suffisante sur g pour que la variance soit finie. (Indication : consulter l’Exemple 3.9.)
L’estimateur auto-normalisé (3.7) est soumis aux mêmes contraintes que dans le cas non normalisé du point de vue de la finitude de la variance. Mais, comme détaillé dans le Chapitre 4, une forme explicite de la variance de cet estimateur n’est pas disponible et cette variance doit être approchée soit par des développements limités, soit par des méthodes de Monte-Carlo. Une recommandation générique, à ce stade, est de chercher des distributions instrumentales g pour lesquelles |h|f /g est presque constant ou pour le moins a un comportement asymptotique contrôlé, car ces distributions sont plus à même de produire des estimateurs de variance finie. Pour des fonctions h à support restreint, comme celle de l’Exemple 3.5, une contrainte élémentaire est que g adopte autant que possible le même support que h (la complexité de ce support pouvant être trop grande pour qu’il soit totalement connu). Evidemment, ce choix sur g entraîne la création d’une nouvelle loi instrumentale à chaque nouvel intégrande h considéré, mais c’est le prix à payer pour obtenir (beaucoup) plus d’efficacité, comme démontré dans l’Exemple 3.5. Etant donné que l’échantillonnage instrumental s’applique tout d’abord dans des cadres où la densité f est d’une étude délicate, cette contrainte sur la queue de g n’est pas facile à satisfaire, spécialement quand la dimensionnalité du problème est élevée. Une solution générique existe, fondée sur l’incorporation artificielle d’un composant à large queue dans la fonction instrumentale g. Cette solution est appelée échantillonnage défensif par Hesterberg (1995) et peut être obtenue en substituant une densité de mélange à la densité g, ρg(x) + (1 − ρ)(x),
0 < ρ < 1,
(3.8)
où ρ est proche de 1 et où la densité est choisie pour ses queues épaisses (par exemple, une distribution de Cauchy ou de Pareto), pas nécessairement en conjonction avec le problème étudié. En supposant que g est fournie par le contexte, choisir la fonction à forte queue est potentiellement délicat. Dans le cas particulier de l’inférence bayésienne, quand la distribution cible f est la distribution a posteriori, il est naturel de choisir
54
Méthodes de Monte-Carlo avec R
comme la loi a priori si elle n’est pas impropre. Bien entendu, cette fonction a par construction des queues plus lourdes que celles de f et elle est habituellement prise parmi les distributions standard, donc (relativement) facile à manipuler. Utiliser la loi a priori comme fonction instrumentale principale g n’aurait aucun sens à cause de la perte d’efficacité induite par ce choix (en supposant naturellement que les données soient informatives). Mais l’utiliser comme facteur de stabilisation fait sens. Exercice 3.6 (Smith & Gelfand 1992) Montrer que si on évalue une intégrale liée sur une loi a posteriori π(θ|x) ∝ π(θ) (θ|x), où π est une distribution a priori propre et la fonction de vraisemblance, la distribution a priori peut toujours être utilisée comme une distribution instrumentale. a. Montrer que la variance du poids est finie quand la vraisemblance est bornée. b. Comparer le choix précédent à celui de (θ|x) en tant que loi instrumentale dans les cas où la vraisemblance est proportionnelle à une densité en θ presque partout. (Indication : considérer le cas des familles exponentielles.) c. Traiter des défauts de ce (ces) choix dans des cas spécifiques. d. Montrer que l’utilisation du mélange entre les deux distributions instrumentales comme nouvelle loi instrumentale peut atténuer certains de ces désavantages.
D’un point de vue opérationnel, générer des variables aléatoires suivant (3.8) signifie que les observations sont générées avec une probabilité ρ suivant g et avec une probabilité (1 − ρ) suivant , en utilisant un code comme mix=function(n=1,p=0.5){ m=rbinom(1,size,pro=p) c(simg(m),siml(n-m))} si simg et siml dénotent des générateurs de g et , respectivement. Nous soulignons le fait — quelque peu paradoxal — que, bien que certains points soient générés suivant g et d’autres suivant , cela n’a pas d’impact sur le poids d’échantillonnage préférentiel, qui demeure égal à f (x)/{ρg(x) + (1 − ρ)(x)} pour toutes les valeurs générées. Par construction, l’estimateur de l’échantillonnage préférentiel fondé sur le mélange défensif (3.8) élimine par intégration la variable uniforme utilisée pour choisir entre g et . Conditionner sur cette variable uniforme induirait plus de variabilité et annulerait l’intérêt d’utiliser un mélange en divisant à nouveau par g(x) dans le poids d’échantillonnage préférentiel. (Nous discuterons de cette perspective de marginalisation plus en détail dans le prochain chapitre, la Section 4.6 présentant des techniques permettant d’intégrer par rapport aux variables uniformes impliquées dans la simulation.) Notons aussi que la sélection d’un nombre aléatoire de simulations suivant g et est in fine inutile, puisqu’en générant exactement ρn xi suivant g et (1 − ρ)n yi
Chapitre 3. Intégration de Monte-Carlo
55
suivant , nous produisons un estimateur sans biais (sous l’hypothèse que ρn soit un entier), au sens où l’estimateur de l’échantillonnage préférentiel ρn 1 f (xi ) 1 + h(xi ) n ρg(xi ) + (1 − ρ)(xi ) n i=1
(1−ρ)n
h(yi )
i=1
f (yi ) ρg(yi ) + (1 − ρ)(yi )
a une espérance globale (mais pas terme à terme) égale à Ef [h(X)] (voir Owen & Zhou, 2000, pour plus de détails). Par conséquent, simuler un nombre fixe de points suivant chacune des distributions du mélange est à la fois valide et efficace puisque cela élimine complètement la variabilité due à l’échantillonnage binomial ci-dessus. Exemple 3.9 (Sélection de la fonction d’échantillonnage préférentiel) Comme indiqué dans l’Exercice 3.5, le calcul de l’intégrale √ ∞ ∞ x x Γ(3/2)/ 2π t2 (x) dx = dx (3.9) x−1 x − 1 (1 + x2 /2)3/2 1 1 est délicat car la fonction h(x) = 1/(x − 1) n’est pas de carré intégrable : utiliser des simulations suivant la loi T2 produit une variance infinie pour l’estimateur de Monte-Carlo correspondant. Cette caractéristique implique qu’un mélange de la densité de la loi T2 avec une densité suffisamment régulière est nécessaire. Pour obtenir l’intégrabilité de h2 (x)f (x)/(x) il faut en particulier que soit divergente en x = 1 et que diminue plus vite que x−5 quand x tend vers l’infini. Ces conditions de bornes suggèrent par exemple de prendre (x) ∝ √
1 1 Ix>1 3/2 x−1 x
(qui est définie à une constante près) comme densité instrumentale. Pour caractériser cette densité, vous pouvez vérifier que y−1 y dx dw √ √ = 3/2 w(w + 1)3/2 x − 1x 1 0 √y−1 2dω = 2 + 1)3/2 (ω 0 √2(y−1) 2dt = . (1 + t2 /2)3/2 0 Cette propriété implique que (x) correspond à la densité de (1 + T 2 /2) quand T ∼ T3 , à savoir √ √ 2 Γ(3/2)/ 2π I(1,∞) (x) . (x) = √ x − 1x3/2
56
Méthodes de Monte-Carlo avec R
(vous pouvez vérifier que la constante de normalisation est correcte en utilisant la fonction integrate.) L’utilisation de l’échantillonnage défensif à la place de l’échantillonneur préférentiel original consiste donc à ajouter un petit échantillon tiré suivant à l’échantillon original tiré suivant g = f : pour ρ = 0.95, le code R est donné par > > > > + > >
sam1=rt(.95*10^4,df=2) sam2=1+.5*rt(.05*10^4,df=2)^2 sam=sample(c(sam1,sam2),.95*10^4) weit=dt(sam,df=2)/(0.95*dt(sam,df=2)+.05*(sam>0)* dt(sqrt(2*abs(sam-1)),df=2)*sqrt(2)/sqrt(abs(sam-1))) plot(cumsum(h(sam1))/(1:length(sam1)),ty="l") lines(cumsum(weit*h(sam))/1:length(sam1),col="blue")
0.2
0.3
0.4
0.5
0.6
Notons que les simulations qui sont plus petites que 1 ont un poids égal à 1/.95 dans la version défensive car (x) = 0 pour x ≤ 1. Comme dans l’Exemple 3.8 et dans la Figure 3.7, l’échantillon original peut exhiber des sauts importants dans la moyenne cumulée, sauts qui sont autant de signaux d’un problème de variance infinie. La solution de l’échantillonnage défensif produit une évaluation beaucoup plus stable de l’intégrale. (Dans des simulations alternatives, les deux graphiques de convergence peuvent aussi être assez similaires√si aucune simulation n’est assez proche de 1 pour induire une grande valeur sur 1/ x − 1. Dans la Figure 3.8, nous avons en effet sélectionné un cas extrême parmi nos échantillons pour montrer que l’échantillonnage défensif apporte un élément clair de stabilisation.)
0
2000
4000
6000
8000
Iterations
Fig. 3.8 – Convergence de deux estimateurs de l’intégrale (3.9) de l’Exemple 3.9 fondé sur un échantillon de T2 (courbe noire) et sur une version par mélange défensif (courbe grise). L’exemple ci-dessus illustre clairement l’impact de l’échantillonnage défensif quand la composante à queue lourde du mélange est suffisamment connectée au problème
Chapitre 3. Intégration de Monte-Carlo
57
traité. Malheureusement, des choix génériques de amènent souvent à des solutions beaucoup moins efficaces, même quand elles assurent une variance finie pour l’estimateur de Monte-Carlo. Exemple 3.10 (Approximation de l’a posteriori probit par échantillonnage préférentiel) Cet exemple considère un modèle probit d’un point de vue bayésien. Rappelons que le modèle probit est un cas particulier de modèle linéaire généralisé où les y observés sont des variables binaires, prenant les valeurs 0 et 1, et les variables explicatives sont des vecteurs x ∈ Rp , pour une loi conditionnelle Pr(y = 1|x) = 1 − Pr(y = 0|x) = Φ(xT β) ,
β ∈ Rp .
Les données correspondant à ce modèle peuvent être facilement simulées, mais nous utilisons ici un jeu de données de R appelé Pima.tr qui est disponible dans la bibliothèque MASS. Ce jeu de données correspond à une étude de 200 femmes indiennes de l’éthnie Pima en termes de présence ou absence de diabète, Pima.tr$type (qui est donc la variable binaire y à expliquer) et différentes variables explicatives physiologiques. Pour cet exemple, nous considérons seulement la variable de l’indice de masse corporelle, Pima.tr$bmi, avec une coordonnée à l’origine. Une estimation GLM standard du modèle est fournie par > glm(type∼bmi,data=Pima.tr,family=binomial(link="probit")) Coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) -2.54303 0.54211 -4.691 2.72e-06 *** bmi 0.06479 0.01615 4.011 6.05e-05 *** --Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 ce qui indique que la covariante de l’indice de masse corporelle a un impact significatif sur la présence possible de diabète. Dans une perspective bayésienne, nous introduisons une loi a priori sur β = (β1 , β2 ) qui est une distribution normale N (0, 100). La distribution a posteriori sur β est alors le produit de cette loi a priori presque plate avec la vraisemblance, qui peut être définie comme like=function(beda){ mia=mean(Pima.tr$bmi) prod(pnorm(beda[1]+(Pima.tr$bm[Pima.tr$t=="Yes"]-mia)*beda[2]))* prod(pnorm(-beda[1]-(Pima.tr$bm[Pima.tr$t=="No"]mia)*beda[2]))/exp(sum(beda^2)/200) } En expérimentant avec la fonction image et cette fonction de vraisemblance, on trouve que la partie centrale de la probabilité a posteriori est située à côté de
58
Méthodes de Monte-Carlo avec R
l’estimateur du maximum de vraisemblance (EMV) avec un support de [−.6, −.3] pour l’ordonnée β1 et un support de [0.04, 0.09] pour β2 . Utiliser une proposition normale centrée en l’EMV avec une matrice diagonale de covariance correspondant à l’estimateur fourni par glm est un choix naturel pour g, même si ce choix ne garantit pas une variance finie dans tous les cas. Quoi qu’il en soit, implanter cette idée avec le code R > sim=cbind(rnorm(10^3,mean=-.4,sd=.04), + rnorm(10^3,mean=.065,sd=.005)) > weit=apply(sim,1,post)/(dnorm(sim[,1],mean=-.4,sd=.04)* + dnorm(sim[,2],mean=.065,sd=.005)) montre que les poids d’échantillonnage préférentiel sont assez inégaux, même s’ils ne sont pas dégénérés (vous pouvez le vérifier en utilisant boxplot(weit) par exemple). Une représentation de 104 points rééchantillonnés à partir de ces poids confirme cette propriété, comme le montre la Figure 3.9. ● ● ● ● ● ●
● ● ● ● ● ● ●
0.09
● ● ● ● ● ● ● ● ● ● ●
● ● ● ● ●
●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●
● ● ● ● ●
0.08
● ● ● ● ●
● ● ● ● ● ● ● ● ●
● ● ● ● ●
0.07 0.06 0.04
0.05
● ● ● ● ●
● ● ● ● ●
● ● ●
● ●
● ● ● ● ● ● ●
● ● ● ●
● ● ● ● ● ● ●
● ● ● ● ●
● ● ● ●
● ● ● ● ● ● ● ●
●● ● ● ● ● ●
● ●
● ● ● ●
● ● ● ●
● ● ● ●
● ● ●
● ● ●
● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ●● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ●● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●●●● ● ● ● ● ● ● ● ● ●● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ●● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ●● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●●● ●● ● ●● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ●● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ●● ● ●●● ● ● ● ● ●● ● ● ● ● ● ●● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ●● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●●● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ●●● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ● ● ●●● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●●● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ●●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●
● ● ● ● ●
● ● ● ● ● ● ●
● ● ● ● ●
● ● ● ● ●
● ● ● ● ●
● ● ● ● ● ● ● ● ●
● ● ● ● ●
● ● ● ● ●
● ● ● ●
● ● ● ●
● ● ● ● ● ● ● ● ●
β2
● ● ● ● ●
● ● ● ● ●
● ● ● ● ●
● ● ● ● ● ● ● ● ●
● ● ● ● ● ● ● ● ● ● ● ● ●
● ● ●
0.03
● ● ● ● ● ●
● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●
●
● ● ● ● ●
● ● ● ● ●
● ● ● ● ●
● ● ● ● ● ● ●
−0.8
−0.7
−0.6
−0.5
−0.4
−0.3
−0.2
β1
Fig. 3.9 – Distribution a posteriori du paramètre (β1 , β2 ) pour la régression généralisée du diabète sur l’indice de masse corporelle appliquée aux données Pima.tr avec des points rééchantillonnés suivant une loi instrumentale normale en superposition. Dans le but d’évaluer le (faible) impact d’une implémentation par échantillonnage défensif, nous créons aussi un échantillon préférentiel qui inclut des simulations de la loi a priori avec une probabilité de .05, modifiant le code ci-dessus en > sim=rbind(sim[1:(.95*10^3),],cbind(rnorm(.05*10^3,sd=10),
Chapitre 3. Intégration de Monte-Carlo
59
+ rnorm(.05*10^3,sd=10))) > weit=apply(sim,1,post)/(.95*dnorm(sim[,1],m=-.4,sd=.081)* + dnorm(sim[,2],m=0.065,sd=.01)+.05*dnorm(sim[,1],sd=10)* + dnorm(sim[,2],sd=10)) La différence d’efficacité n’est alors pas visible. Quand on utilise le critère de taille d’échantillonnage effectif (défini dans la Section 4.4 du prochain chapitre), la différence sur 103 simulations est en fait d’une taille d’échantillon effectif de 302 pour l’échantillon normal contre une taille d’échantillon effectif de 283 pour l’échantillon défensif. Les valeurs estimées de β produites par les deux méthodes sont (−0.452, .0653) et (−0.452, .0652), respectivement. (Nous notons la proximité avec l’EMV si nous incorporons la moyenne de Pima.tr$bmi.) La raison de cette forte similarité est que le terme additionnel dans le dénominateur résultant de l’inclusion de la densité a priori dans le mélange est pratiquement égal à zéro.
3.4
Exercices supplémentaires
Exercice 3.7 Pour le même estimateur δ(x) que dans l’Exercice 3.1 : a. Construire un algorithme de rejet fondé sur une loi instrumentale de Cauchy pour générer un échantillon suivant la loi a posteriori, puis en déduire l’estimateur. b. Concevoir une expérience informatique pour comparer les erreurs de Monte-Carlo en utilisant (i) les mêmes variables aléatoires θi dans le numérateur et le dénominateur ou (ii) deux séries de variables aléatoires. Exercice 3.8 Considérez la même question que dans l’Exercice 3.4 quand ωi = f (Xi )/g(Xi ) + δi , avec δi ∼ Bin{1, f (Xi )/g(Xi ) − f (Xi )/g(Xi )} et quand x représente la partie entière de x. Montrez qu’il existe aussi un estimateur sans biais fondé sur le remplacement de f (Xi )/g(Xi ) par α f (Xi )/g(Xi ) quel que soit α > 0. Exercice 3.9 En prolongation de l’Exemple 3.5 : a. Montrez que, pour simuler Y ∼ Exp+ (a, 1), distribution exponentielle tronquée à gauche de a, nous pouvons simuler X ∼ Exp(1) et prendre Y = a + X. b. Utilisez cette méthode pour calculer la probabilité qu’une variable aléatoire χ23 soit plus grande que 25 et qu’une variable aléatoire de loi t5 soit plus grande que 50. c. Explorez le gain d’efficacité produit par cette méthode. Prenez a = 4.5 dans la partie a. et construisez une expérience de Monte-Carlo pour déterminer combien de variables aléatoires seraient nécessaires pour calculer P (Z > 4.5) avec la même précision que celle obtenue en utilisant 100 variables aléatoires dans un échantillonneur préférentiel de votre choix.
60
Méthodes de Monte-Carlo avec R
Exercice 3.10 Montrez que si
ωi ∼
l’estimateur
1 n
n i=1
Bin(1, f (Xi )/g(Xi )) Geo(g(Xi )/f (Xi ))
si f (Xi )/g(Xi ) < 1 , sinon ,
ωi h(xi ) est aussi sans biais.
Exercice 3.11 (Ó Ruanaidh & Fitzgerald 1996) √ Pour simuler des variables aléatoires suivant la densité f (x) ∝ exp{−x2 x}[sin(x)]2 , 0 < x < ∞, comparez les choix suivants de densités instrumentales sur R : g1 (x) =
1 −|x| , e 2
g2 (x) =
1 1 , 2π 1 + x2 /4
2 1 g3 (x) = √ e−x /2 . 2π
Pour chacune de ces densités instrumentales, estimez le nombre M de simulations nécessaires pour obtenir trois décimales de précision dans l’estimation de Ef [X]. Déduisez du taux d’acceptance un estimateur de la constante de normalisation de f pour chacune des densités instrumentales. Exercice 3.12 Quand une fonction de répartitionn F (x) a un taux de queue égal à α (c’est-à-dire quand 1 − F (x) ∝ x−α pour x assez grand) : a. Montrez que E[X|X > K] = Kα/(α − 1) quand K est assez grand. Discutez de l’existence de cette espérance en fonction de α. b. Déduire une estimation de E[X|X > K] fondée sur un échantillon de F . c. Evaluez la stabilité de cette estimation en fonction de K quand F est une distribution de Pareto P(2), P(3), P(4) (voir l´Exercice 2.8). Exercice 3.13 (Gelfand & Dey 1994) Considérons une fonction de densité f (x|θ) et une distribution a priori π(θ) telles que la densité marginale m(x) = Θ f (x|θ)π(θ)dθ soit finie presque sûrement (p.s.). La densité marginale est utile dans la comparaison bayésienne de modèles car elle apparaît dans le facteur de Bayes (voir Robert, 2006). a. Donnez une forme générale de l’approximation par échantillonnage préférentiel de m. b. Détaillez cette approximation quand la fonction instrumentale est la distribution a posteriori et quand la constante de normalisation est inconnue. c. Montrez que, pour une densité propre τ , τ (θ) π(θ|x)dθ , m(x)−1 = f (x|θ)π(θ) Θ En déduire que quand les θi∗ sont générés suivant une loi a posteriori, m(x) ˆ =
T 1 ∗ τ (θi ) f (x|θi∗ )π(θi∗ ) T t=1
−1
est un autre estimateur d’échantillonnage préférentiel de m(x).
Chapitre 3. Intégration de Monte-Carlo
61
Exercice 3.14 Etant donnés l’échantillon préférentiel réel X1 , . . . , Xn de fonction instrumentale g et la densité cible f : a. Montrez que la somme des poids ωi = f (Xi )/g(Xi ) est seulement égale à n en espérance et déduisez que les poids ont besoin d’être renormalisés même lorsque les deux densités ont des constantes de normalisation connues. b. En supposant que les poids ωi ont été renormalisés pour que leur somme valent 1, nous ˜ j parmi les Xi en utilisant ces poids. échantillonnons, par remplacement, n points X ˜ j satisfont Montrez que ces X n n
1 ˜ h(Xj ) = E ωi h(Xi ) . E n j=1 i=1 c. Déduisez que si la formule ci-dessus était satisfaite pour ωi = f (Xi )/g(Xi ), la distri˜ j serait sans biais. bution empirique associée à l’échantillon des X Exercice 3.15 La marginalisation de Monte-Carlo est une technique utilisée pour calculer une densité marginale quand on simule à partir d’une densité jointe. Simulons (Xi , Yi ) ∼ fXY (x, y), indépendants, de distribution marginale correspondante fX (x) = fXY (x, y)dy. a. Soit w(x) une densité arbitraire. Montrer que lim n
n fXY (x∗ , y)w(x) 1 fXY (x∗ , yi )w(xi ) = fXY (x, y)dxdy = fX (x∗ ) . n i=1 fXY (xi , yi ) fXY (x, y)
En déduire un estimateur de Monte-Carlo de fX , densité marginale de X, quand la densité jointe est seulement connue à une constante près. b. Soit X|Y = y ∼ G(y, 1) et Y ∼ Exp(1). Utilisez la technique ci-dessus pour approcher la densité marginale de X. Comparez l’approximation avec la densité marginale exacte. c. Montrez que choisir w(x) = fX (x) est une possibilité possible pour obtenir la distribution marginale et que ce choix est optimal au sens de la variance de l’estimateur résultant. Exercice 3.16 Pour la loi de Gumbel, de densité f (x) = exp{x−exp(x)} sur la droite réelle, nous sommes intéressés à comparer la variabilité d’un échantillonnage préférentiel standard fondé sur une fonction instrumentale normale avec la variabilité de la version correspondante auto-normalisée de (3.7). a. Montrez que l’espérance de exp(X) est bien définie pour la loi de Gumbel. b. Créez une matrice x de simulations normales à 100 colonnes en utilisant rnorm(100*10^4) et déduisez les poids d’échantillonnage préférentiel we. c. Déduisez les suites régulières et auto-normalisées des estimateurs de E[exp(X)] par un code similaire à > nore=apply(we*exp(x),2,cumsum)/(1:10^4) > reno=apply(we*exp(x),2,cumsum)/apply(we,2,cumsum) et comparez les variations des deux suites d’estimations en utilisant polygon.
62
Méthodes de Monte-Carlo avec R
Exercice 3.17 (Berger, Philippe & Robert 1998) Etant donnée une matrice définie positive symétrique p × p Σ, considérons la distribution sur Rp π(θ) ∝ exp −(θ − μ)t Σ−1 (θ − μ)/2 ||θ||p−1 . a. Montrez que la distribution est bien définie, c’est-à-dire que
Rp
π(θ)dθ < ∞.
b. Montrez qu’une version d’échantillonnage préférentiel fondée sur la distribution instrumentale normale Np (μ, Σ) n’est pas satisfaisante d’un point de vue théorique comme pratique. c. Examinez l’alternative fondée sur une distribution gamma G(α, β) sur η = ||θ||2 et une distribution uniforme sur les angles.
Chapitre 4
Contrôler et accélérer la convergence Bartholomew smiled. “Just because we cannot find the link here and now does not mean that it is not there. The evidence we have at the moment is just not sufficient to support any firm conclusion.” Susanna Gregory An Unholy Alliance
Guide du lecteur Le Chapitre 3 a introduit la méthode de Monte-Carlo comme une technique de simulation servant à approcher des intégrales complexes. Le principe devrait maintenant être bien compris, mais il reste encore beaucoup à dire quant à l’évaluation de la convergence de cette méthode, afin d’apporter une réponse aux questions de quand et pourquoi arrêter les simulations. Nous présentons donc dans ce chapitre les particularités de l’estimation de la variance et du contrôle de convergence des méthodes de Monte-Carlo, ainsi que des procédés d’accélération de cette convergence. Nous étudions en particulier dans les Sections 4.2 et 4.5 le problème de la construction de zones de confiance, en insistant sur les limites des évaluations fondées sur une approximation normale dans la Section 4.2 et en présentant des estimateurs de la variance pour les méthodes d’échantillonnage préférentiel dans la Section 4.3 ainsi que les outils d’évaluation de la convergence dans la Section 4.4. Ce sont des concepts fondamentaux et ils constituent un préliminaire à des développements similaires dans le domaine des algorithmes MCMC discutés dans les Chapitres 6–8. La deuxième partie du chapitre couvre quelques procédés d’accélération comme ceux de Rao–Blackwell dans la Section 4.6 et de la corrélation négative dans la Section 4.7.
C. P. Robert et al., Méthodes de Monte-Carlo avec R © Springer-Verlag France 2011
64
4.1
Méthodes de Monte-Carlo avec R
Introduction
Le Chapitre 3 mentionne que le Théorème de la Limite Centrale s’applique aux estimations de Monte-Carlo de la forme hn =
n 1 h(Xj ) n j=1
Xj ∼ f (x)
(sous des conditions d’intégrabilité sur h et f ) et donc que ce théorème peut être utilisé pour évaluer la convergence de l’intégrale d’intérêt, I = h(x)f (x) dx, (4.1) √ dans la mesure où la variable aléatoire n(hn − I) est asymptotiquement normale. La zone colorée du bas de la Figure 3.3, associée à l’Exemple 3.3, donne une illustration directe de l’utilisation d’un intervalle de confiance normal dans cette évaluation. Elle produit, pour chaque nombre (fixé) d’itérations, un intervalle de confiance asymptotiquement valide (au sens classique) sur la valeur de (4.1). Cependant, cette approche souffre de limitations dans la mesure où l’enveloppe construite après n itérations, représentée dans la Figure 3.3 via la fonction polygon, n’a pas de validation globale comme pourrait l’avoir une zone de confiance en dimension 2. En effet, si l’expérience de Monte-Carlo en question est répétée une seconde fois, la suite (hn ) produite lors de la seconde exécution ne sera probablement pas contenue dans cette enveloppe. Si l’expérience est répétée plusieurs fois, la fréquence avec laquelle la suite restera dans la zone de confiance n’approchera certainement pas la fréquence nominale de couverture de 0.95. L’explication de cette apparente divergence entre théorie asymptotique et expérience tient au fait que la méthode d’évaluation illustrée dans la bande du bas de la Figure 3.3 est de par sa nature essentiellement univariée. Ainsi, les sauts de confiance apparaissant dans l’estimation hk à l’itération k dépendent seulement des valeurs de hk et de l’estimation de la variance à l’étape k et donc ignorent toute structure de corrélation entre les itérations. Pour être valide, une zone de confiance doit tenir compte de la distribution de la suite tout entière, dans une perspective multivariée ou même fonctionnelle. Nous allons discuter cette perspective dans la Section 4.5, même si la construction théorique d’une zone globale de confiance dépasse le cadre de cet ouvrage. Nous insistons sur le fait que la zone de confiance fournie par le Théorème de la Limite Centrale est asymptotiquement valide. Ce que nous recherchons est une évaluation de la nature de la convergence d’une méthode de Monte-Carlo qui s’applique à la suite des estimateurs lorsque le nombre de simulations varie. Ceci peut être considéré comme une évaluation de convergence de second niveau et cette perspective est nécessairement plus conservatrice, donc exige plus de simulations, que l’originale. Bien que nous n’établissions pas ici un lien explicite, les méthodes de moyenne par paquet de longueur fixe et de bootstrap de Jones et al. (2006)
Chapitre 4.
Contrôler et accélérer la convergence
65
décrites dans la Section 8.4.4 s’appliquent aussi aux configurations iid du présent chapitre.
4.2
Evaluation de la variation
Tout d’abord, il existe toujours une solution simple et directe pour évaluer la véritable variabilité d’une suite d’estimations de Monte-Carlo, qui consiste à exécuter plusieurs fois l’expérience de Monte-Carlo pour produire plusieurs suites d’estimations, indépendantes et en parallèle. Cette solution est à la fois plus simple à mettre en œuvre et plus largement applicable que des techniques basées sur de l’approximation asymptotique. Malheureusement, elle est aussi plus gourmande en temps de calcul. Ce dernier point est hélas une caractéristique que l’on rencontrera régulièrement dans ce livre, car la validation de l’évaluation de la variation est toujours d’une magnitude plus grande que celle de la convergence des estimateurs proprement dits. En effet, l’évaluation de l’erreur demande beaucoup plus de temps de calcul que la validation de la convergence vers un point (sauf dans des cas très spéciaux comme celui de la régénération, traitée dans Robert & Casella, 2004). Une version approximative mais moins coûteuse de cette estimation élémentaire de la variabilité par Monte-Carlo est d’utiliser le bootstrap (voir Section 1.4) de l’échantillon courant, comme cela a déjà été fait dans l’Exemple 3.7 (voir la bande supérieure de la Figure 3.6). Exemple 4.1 (Evaluer avec le CLT) Si on répète les simulations de l’Exemple 3.3, on peut produire une matrice d’estimateurs convergents > x=matrix(h(runif(200*10^4)),ncol=200) > estint=apply(x,2,cumsum)/(1:10^4) et ainsi obtenir une évaluation de la variation de Monte-Carlo par > plot(estint[,1],ty="l",col=0,ylim=c(.8,1.2)) > y=apply(estint,1,quantile,c(.025,.975)) > polygon(c(1:10^4,10^4:1),c(y[1,],rev(y[2,])),col="wheat") A chaque itération, la zone représentée sur la Figure 4.1 contient 95% des suites de l’estimation. Evidemment, si nous prenons n’importe laquelle des suites convergentes ainsi produites, la zone de confiance associée au TCL ne réussira pas à correspondre à cette zone de confiance globale puisque, comme dans la Figure 3.3 (bande inférieure), elle reproduira fidèlement les variations de la suite d’origine. Si nous considérons maintenant la version bootstrap de la zone globale de convergence, nous commençons par produire des répliques bootstrap de la suite d’origine x[,1] utilisant > boot=matrix(sample(x[,1],200*10^4,rep=T),nrow=10^4,ncol=200)
66
Méthodes de Monte-Carlo avec R
puis reproduisons la construction de la zone de confiance par > bootit=apply(boot,2,cumsum)/(1:10^4) > bootup=apply(bootit,1,quantile,.975) > bootdo=apply(bootit,1,quantile,.025)
0.8
0.9
1.0
1.1
1.2
Comme démontré dans la Figure 4.1, la zone ainsi produite a un comportement qui est tout à fait similaire à celui de la zone résultant des réplications iid d’une suite d’estimations de Monte-Carlo, à l’exception d’une dérive par rapport à sa moyenne. L’avantage de la version bootstrap est évidemment qu’elle repose sur la génération d’une seule suite.
0
2000
4000
6000
8000
10000
Iterations
Fig. 4.1 – Zone de convergence de 200 suites parallèles d’estimateurs par MonteCarlo de l’intégrale de h(x) = [cos(50x) + sin(20x)]2 (bande inférieure) et version bootstrap fondée sur une seule suite (bande supérieure), dont la borne inférieure est représentée par une ligne en pointillé. Dans l’Exemple 4.1, l’intérêt d’utiliser une zone de confiance bootstrap est quelque peu limité car le temps de calcul nécessaire pour obtenir une suite bootstrap est à peu près le même que celui nécessaire pour obtenir une nouvelle suite. Dans des configurations plus complexes, comme celles des algorithmes MCMC, produire une suite nouvelle peut cependant s’avérer beaucoup plus coûteux que de rééchantillonner à partir de la suite d’origine. Cet exemple simple nous alerte donc quant aux dangers de l’usage aveugle d’une approximation normale lorsque celle-ci est invoquée à chaque itération pour des estimateurs non indépendants, simplement parce que l’approximation de confiance normale n’a qu’une validation ponctuelle. Utiliser une zone fondée sur des estimateurs en parallèle est évidemment bien plus coûteux, mais cela fournit une évaluation correcte de la variation de ces estimateurs.
Chapitre 4.
4.3
Contrôler et accélérer la convergence
67
Variance asymptotique de l’échantillonnage préférentiel
L’exemple suivant illustre une difficulté de base rencontrée lors de l’évaluation de la convergence pour l’échantillonnage préférentiel. Exemple 4.2 (Loi a priori de Cauchy) Pour une observation normale égale à x = 2.5, avec une distribution a priori de Cauchy sur sa moyenne X ∼ N (θ, 1),
θ ∼ C(0, 1) ,
la probabilité a posteriori de la moyenne θ est donnée par ∞ ∞ 2 θ 1 π −(x−θ)2 /2 δ (x) = e dθ e−(x−θ) /2 dθ . 2 2 −∞ 1 + θ −∞ 1 + θ Par conséquent, une approximation de δ π (x) peut être basée sur la simulation de variables iid θ1 , · · · , θn ∼ N (x, 1), δˆnπ (x) =
n i=1
θi 1 + θi2
n i=1
1 1 + θi2
(4.2)
puisque le numérateur et le dénominateur de δˆnπ (x) sont convergents (en n). Remarquons que l’estimateur peut aussi être interprété comme une approximation d’échantillonnage préférentiel auto-normalisé avec comme fonction instrumentale la densité normale et un rapport d’importance égal à 1/(1 + θ 2 ). Une difficulté associée à cet exemple (et à n’importe quel autre échantillonneur préférentiel auto-normalisé) est que l’estimateur δˆnπ (x) est plus précisément un rapport d’estimateurs. Comme la variance d’un rapport n’est pas le rapport des variances, il est plus délicat d’évaluer la variabilité de cet estimateur. C’est un fait courant en statistique bayésienne, en particulier pour les choix de modèle (voir les Exercices 4.1 et 4.1).
Comme mentionné ci-dessus, les constantes de normalisation sont superflues en inférence bayésienne, sauf dans le cas où plusieurs modèles sont considérés simultanément pour être comparés. Dans ce dernier cas, la quantité fondamentale est le facteur de Bayes π1 (θ1 )f1 (x|θ1 ) dθ1 m1 (x) ρ= , = Θ1 m2 (x) π (θ )f (x|θ2 ) dθ2 Θ2 1 2 2 dont la valeur relativement à 1 guide la comparaison (voir, par exemple, Robert, 2001, Chapitres 5 et 6). Dans ce cas, les distributions a posteriori
68
Méthodes de Monte-Carlo avec R pour les modèles comparés sont typiquement disponibles à une constante de normalisation près, ˜1 (θ)/c1 et π2 (θ|x) = π ˜2 (θ)/c2 , π1 (θ|x) = π ˜2 sont connus et où c1 et c2 correspondent aux vraioù seuls π ˜1 et π semblances marginales, m1 (x) et m2 (x) (la dépendance en x est supprimée pour un motif de simplification des expressions). Le facteur de Bayes est par conséquent identique au rapport de ces constantes manquantes, = c1 /c2 . Des techniques de calcul spécifiques ont été conçues pour l’approximation des facteurs de Bayes comme détaillé dans Chen et al. (2000) (voir aussi l’Exercice 4.1).
Exercice 4.1 Nous supposons ici que les deux lois a posteriori sont absolument continues l’une par rapport à l’autre (donc que les paramètres des deux lois appartiennent au même ensemble). a. Montrer que le facteur de Bayes peut être approché par ˆ =
n ˜1 (θi ) 1 π , n i=1 π ˜2 (θi )
θ1 , . . . , θn ∼ π2 .
(Suggestion : utiliser un argument d’échantillonnage préférentiel.) b. Montrer que l’identité π ˜ (θ)α(θ)π2 (θ|x)dθ c1 1 = = c2 π ˜2 (θ)α(θ)π1 (θ|x)dθ est valable pour toute fonction α rendant les deux intégrales finies.
La transformation ξ = log() est souvent considérée comme étant plus adaptée à la comparaison de modèles (peut-être à cause de l’existence de la loi asymptotique du χ2 du logarithme du rapport de vraisemblance). Cette transformation logarithmique du rapport peut être approximée en tant que telle. Exercice 4.1 Sous la même hypothèse que dans l’Exercice 4.1, nous supposons que les distributions a priori π1 et π2 appartiennent à la même famille paramétrée (c’est-à-dire, lorsque πi (θ) = π(θ|λi ), où le paramètre λ est un nombre réel). Les constantes de normalisation correspondantes sont alors dénotées par c(λi ). a. Lorsque π(λ) est une distribution arbitraire sur λ avec support (λ1 , λ2 ), vérifier l’identité c(λ1 ) U (θ, λ) − log =E , c(λ2 ) π(λ) où d log(˜ π (θ|λ)) U (θ, λ) = dλ et l’espérance est calculée sous π(θ|λ)π(λ).
Chapitre 4.
Contrôler et accélérer la convergence
69
b. En déduire que ξ peut être estimé par l’estimateur d’échantillonnage par chemin n 1 U (θi , λi ) π(λi ) ξˆ = n i=1 lorsque les (θi , λi ) sont simulés à partir de la distribution jointe π(λ)π(θ|λ). c. Montrer que l’estimateur de ξ de variance minimum parmi tous les π(λ) correspond à π (λ) ∝ E[U 2 (θ, λ)|λ] .
Considérons donc un estimateur de rapport général n n δhn = ωi h(xi ) ωi , i=1
i=1
où les xi sont des réalisations de variables aléatoires Xi ∼ g(y) avec g comme distribution instrumentale pour la densité cible f . De plus, les ωi ’ sont des réalisations de variables aléatoires Wi telles que E[Wi |Xi = x] = κf (x)/g(x), κ étant une constante arbitraire (qui correspond à l’absence de constantes de normalisation dans f et g). On note Shn =
n i=1
Wi h(Xi ) ,
S1n =
n
Wi .
i=1
(Notez bien que nous ne supposons pas l’indépendance entre les Xi comme dans l’échantillonnage préférentiel usuel.) Dans ce cas, comme démontré dans Liu (1996) et Robert & Casella (2004, Chapitre 4), la variance asymptotique de δhn est donnée par var(δhn ) =
1 n2 κ2
var(Shn ) − 2Ef [h] cov(Shn , S1n ) + Ef [h]2 var(S1n ) .
En suivant Liu (1996) et en considérant des Xi iid dans l’estimateur préférentiel auto-normalisé, avec un certain degré d’approximation, nous pouvons alors déduire qu’une approximation grossière de la variance de cet estimateur est var(δhn ) ≈
1 varf (h(X)) {1 + varg (W )} . n
L’approximation ci-dessus est seulement valide pour l’estimateur préférentiel utilisant la version normalisée des poids ωi , car, sinon, elle dépendrait de la constante manquante κ. Son évaluation par Monte-Carlo est donc ⎧ n 2 ⎫ n ⎬ n 2 ⎨ ω {h(x ) − δ } i i h i=1 n 1 + n2 var(W , (4.3) ) ωi ⎩ ⎭ n i=1 ωi i=1
70
Méthodes de Monte-Carlo avec R où var correspond à l’estimation classique de la variance (comme proposée par var). Cette expression et sa simplification seront davantage discutées dans la Section 4.4 lorsqu’il s’agira de construire une évaluation de la convergence uniquement basée sur les poids.
Cette expression de la variance est une approximation assez grossière, comme on peut le constater via le fait que cette quantité est toujours plus grande que varf (h(X)), qui fournit la variance associée à un échantillon iid avec la même taille d’échantillon. Puiqu’il existe des choix de g pour lesquels la variance var(δhn ) est exactement égale à 0 (voir Robert & Casella, 2004), cette inégalité ne peut pas tenir dans tous les cas. Exemple 4.3 (Suite de l’Exemple 4.2) Si nous générons un échantillon normal N (x, 1) pour une approximation par échantillonnage préférentiel (4.2), l’approximation de la variance ci-dessus peut être utilisée pour évaluer la variabilité de ces estimations, mais, là encore, la nature asymptotique de l’approximation doit être prise en compte. Si nous prenons comme référence le domaine de variations de 500 suites parallèles d’estimateurs de δ π (x), > > > > > >
norma=matrix(rnorm(500*10^4),ncol=500)+2.5 weit=1/(1+norma^2) esti=apply(norma*weit,2,cumsum)/apply(weit,2,cumsum) plot(esti[,1],type="l",col="white",ylim=c(1.7,1.9)) band=apply(esti,1,quantile,c(.025,.975)) polygon(c(1:10^4,10^4:1),c(band[1,],rev(band[2,])))
la juxtaposition de la zone produite sur une suite donnée d’estimateurs montre une sous-estimation de la variation si l’estimation habituelle de la variance est utilisée : > vare=cumsum(weit[,1]*norma[,1]^2)/cumsum(weit[,1])-esti[,1]^2 > lines(esti[,1]+2*sqrt(vare/(1:10^4))) > lines(esti[,1]-2*sqrt(vare/(1:10^4))) et un domaine équivalent mais décalé pour la correction des poids > varw=cumsum(weit[,1]^2)*(1:10^4)/cumsum(weit[,1])^2 > lines(esti[,1]+2*sqrt(varw*vare/(1:10^4)),col="sienna") > lines(esti[,1]-2*sqrt(varw*vare/(1:10^4)),col="sienna") puisque les largeurs respectives sont 0.0559 pour la première (Monte-Carlo) et 0.0539 pour la dernière (variance corrigée). La Figure 4.2(a) compare les zones de variance approximées pour x = 2.5 avec la variation réelle des estimations, évaluée sur les 500 suites parallèles. La Figure 4.2(b) reproduit cette évaluation pour des θi simulés à partir de la distribution a priori C(0, 1) et pour l’estimation
Chapitre 4.
Contrôler et accélérer la convergence
d’échantillonnage préférentiel 1 δ˜hn =
n
θi exp −(x − θi ) /2 2
n
i=1
71
exp −(x − θi )2 /2 .
i=1
1.65
1.65
1.70
1.70
1.75
1.75
1.80
1.80
1.85
1.85
Dans ce cas, puisque les fonctions correspondantes h sont bornées pour les deux choix, les variabilités des estimations sont tout à fait similaires, avec un léger avantage en faveur de l’échantillonnage normal. Le champ de l’évaluation de MonteCarlo est en effet 0.0594, alors que le champ de la zone asymptotique est 0.0800. Le fait que cette dernière soit fondée sur une seule suite doit être pris en compte. Une autre suite produirait un champ différent, comme vous pouvez (et devez) facilement le vérifier. De même, les courbes de frontière qui apparaissent dans les Figures 4.2(a) et 4.2(b) sont produites par une seule suite et ne doivent donc pas être sur-interprétées.
0
2000
4000
6000
8000
10000
Iterations
(a) Les simulations proviennent d’une fonction d’importance normale N (x, 1), avec x = 2.5.
0
2000
4000
6000
8000
10000
Iterations
(b) Les simulations proviennent d’une fonction d’importance normale N (0, 1).
Fig. 4.2 – Convergence d’une suite d’estimateurs de Monte-Carlo pour la moyenne a posteriori dans le problème Cauchy-normal. La zone ombrée représente le domaine de confiance à 95% sur l’ensemble complet de 500 suites parallèles d’estimateurs de Monte Carlo, obtenue à chaque itération, tandis que la frontière intérieure correspond à la zone normale sous l’estimation standard de la variance et que la frontière extérieure (en gris plus léger) correspond à la zone normale pour l’estimation corrigée de la variance. Dans l’exemple ci-dessus, exécuter une approximation avec un échantillonnage de Cauchy conduit à un problème de mise en œuvre intéressant bien que mineur. 1. L’inversion des rôles des distributions N (x, 1) et C(0, 1) illustre une fois de plus à la fois l’ambiguïté de la représentation de l’intégrale et les opportunités offertes par l’échantillonnage préférentiel.
72
Méthodes de Monte-Carlo avec R
Puisque la distribution de Cauchy a des queues très lourdes, certaines des 500*10^4 simulations prennent de très grandes valeurs, ce qui conduit alors à des poids égaux à 0 dans la sortie R, même si la densité normale est formellement strictement positive : > cocha=matrix(rcauchy(500*10^4),ncol=500) > range(cocha) [1] -18228407 3461090 > wach=dnorm(cocha,mean=2.5) > range(wach) [1] 0.0000000 0.3989423 En pratique, il est impossible d’utiliser des valeurs simulées avec des poids nuls lors des premières simulations lorsqu’on a recours à cumsum pour contrôler la convergence de l’estimation d’échantillonnage d’importance auto-normalisé, puisque cela produit des sorties NA à cause de la division par zéro. Une solution au problème est alors d’imposer une valeur minimum sur les poids du dénominateur de la première simulation, c’est-à-dire > wachd=wach > wachd[apply(wachd,2,cumsum)<10^(-10)]=10^(-10) qui est la solution utilisée pour produire la Figure 4.2(b). Notons que, mis à part cette difficulté, le comportement des poids est tout à fait similaire dans les deux approches, comme cela peut être vérifié via boxplot.
4.4
Taille effective et perplexité d’un échantillon
La représentation (4.3) proposée pour la variance approchée de l’estimateur d’échantillonnage préférentiel auto-normalisé conduit à un outil essentiel pour l’évalution de la performance des échantillonneurs préférentiels. Quand on développe la variance empirique n 2 n 1 2 1 var(W )= ω − 2 ωi , n i=1 i n i=1 le coefficient 1 + var g (W ) est égal à n
2
n
ωi2
n
i=1
2 ωi
.
i=1
Si maintenant nous dénotons les poids normalisés par ω i = ωi
n j=1
ωj ,
Chapitre 4.
Contrôler et accélérer la convergence
73
nous pouvons définir la taille effective d’échantillon par n ω 2i . ESSn = 1 i=1
En plus d’être utile dans l’évaluation de l’augmentation de la variance due aux poids d’échantillonnage préférentiel, ce facteur 2 ESSn donne une évaluation directe de l’efficacité de l’échantillonneur préférentiel, puisqu’il est équivalent à une taille d’échantillon. Pour un échantillon uniformément pondéré, ESSn est exactement égal à n, tandis que, pour un échantillon complètement dégénéré, où tous les poids préférentiels sauf un sont nuls, ESSn est égal à 1. La taille effective d’échantillon évalue ainsi la taille d’un échantillon iid qui serait équivalent (en variance) à l’échantillon pondéré et elle autorise par conséquent une comparaison directe des échantillonneurs. Exercice 4.2 Montrer que ESSn prend toujours des valeurs comprises entre 1 et n.
Une seconde (et presqu’équivalente) évaluation est fournie par la notion de perplexité (Cappé et al., 2008), exp(Hn )/n, où Hn = −
n
ω i log(ω i )
i=1
est l’entropie de Shannon des poids d’échantillonnage préférentiel normalisés. (Cet outil est principalement utilisé en théorie de l’information et de la reconnaissance de la parole, voir par exemple Jelinek, 1999, mais il apporte néanmoins un plus par rapport à la taille effective d’échantillon, qui peut être exploité dans tous les cas.) La perplexité fournit en effet une estimation de la quantité exp[E(f, g)], où
f (x) f (x) dx E(f, g) = log g(x) est la divergence de Kullback–Leibler entre la cible f et la densité instrumentale g. Ainsi, plus la perplexité est proche de 1, plus la densité instrumentale est appropriée. Exercice 4.3 Montrer que exp(Hn ) prend toujours des valeurs entre 1 et n.
Exemple 4.4 (Suite de l’Exemple 4.3) Si nous comparons les tailles effectives d’échantillons pour les simulations normales et de Cauchy, la différence en efficacité (et en perplexité) est beaucoup plus claire que dans la comparaison entre les Figures 4.2(a) et 4.2(b). Le calcul de ces quantités est simple. Pour les tailles effectives d’échantillons, 2. ESS provient de effective sample size, taille effective d’échantillon.
74 > > > >
Méthodes de Monte-Carlo avec R ess=apply(weit,2,cumsum)^2/apply(weit^2,2,cumsum) essbo=apply(ess,1,quantile,c(.025,.975)) ech=apply(wachd,2,cumsum)^2/apply(wachd^2,2,cumsum) echbo=apply(ech,1,quantile,c(.025,.975))
et pour les perplexités, > > > > > >
sumweit=apply(weit,2,cumsum) plex=(apply(weit*log(weit),2,cumsum)/sumweit)-log(sumweit) chumweit=apply(wachd,2,cumsum) plech=(apply(wachd*log(wachd),2,cumsum)/chumweit)-log(chumweit) plob=apply(exp(plex),1,quantile,c(.025,.975)) ploch=apply(exp(plech),1,quantile,c(.025,.975))
0.8 0.7 0.6
Perplexity
3000 0
0.3
0.4
1000
0.5
2000
ESS
4000
0.9
5000
1.0
Comme illustré par les deux panneaux de la Figure 4.3, la simulation normale est sans conteste deux fois plus efficace que le scénario fondé sur la loi de Cauchy. Notons aussi la forte stabilité de ces indicateurs entre suites.
0
4000
8000
Iterations
0
4000
8000
Iterations
Fig. 4.3 – (gauche) Evolution des tailles effectives d’échantillon (ESS) pour la loi instrumentale normale (grise) et les poids d’échantillonnage préférentiel (gris clair) ; (droite) évolution des perplexités sous les mêmes codes de couleur. (Dans les deux figures, l’échantillonneur préférentiel normal est situé au-dessus de l’échantillonneur préférentiel de Cauchy.)
4.5
Contrôles simultanés
Comme mentionné dans l’introduction à ce chapitre, une méthode valide pour associer des variances à une moyenne cumulée et donc pour en déduire un Théorème de la Limite Centrale valide, est de calculer les bornes en utilisant une approche multivariée. Une première construction, fondée sur une approximation normale, est proposée dans Robert & Casella (2004, Section 4.1.2).
Chapitre 4.
Contrôler et accélérer la convergence
75
Etant donné une suite iid X1 , X2 , . . . , Xn de moyenne μ = Ef (X1 ), nousvoulons ¯ m = (1/m) m Xi . ¯ m )1≤m≤n , avec X produire une borne d’erreur sur la suite (X i=1 Si nous considérons le cas particulier où Xi ∼ N (μ, σ 2 ), alors ¯ = (X ¯1 , X ¯2, . . . , X ¯ n ) ∼ Nn (1μ, Σ) , X ⎛
avec
1
⎜1 ⎜ 21 ⎜ Σ = σ2 ⎜ 3 ⎜ .. ⎝. 1 n
Exercice 4.4 Démontrer que
1 3 1 3 1 3
1 2 1 2 1 3
.. .
1 n
1 4 1 4 1 4
.. .
.. .
1 n
1 n
1 5 1 5 1 5
··· ··· ···
1 n
··· ···
.. .
⎞
1 n 1⎟ n⎟ 1⎟ n⎟
.. ⎟ .⎠
.
1 n
¯ k ) = σ 2 max{k, k }. ¯ k, X cov(X
Puisque
¯ − 1μ) ∼ ¯ − 1μ) Σ−1 (X (X
χ2n nFn,ν
si σ2 est connu, si σ2 est inconnu,
(4.4)
¯ tout entier, de nous avons une région de variations simultanées pour le vecteur X la forme ¯ : (¯ x − 1μ) ≤ dn , x x − 1μ) Σ−1 (¯ où dn est le quantile approprié de la loi χ2n ou Fn,ν suivant les cas (et où Σ−1 est ¯ dans le second fondé sur une estimation σ ˆ 2 ∼ χ2ν de σ 2 , indépendamment de X cas). De plus, l’inverse de Σ se trouve être calculable sous forme explicite (Exercice 4.5), puisque cette inverse est donnée par ⎛ ⎞ 2 −2 0 0 0 ··· 0 ⎜−2 8 ⎟ −6 0 0 ··· 0 ⎜ ⎟ ⎜ ⎟ 0 −6 18 −12 0 · · · 0 1 ⎜ ⎟ (4.5) Σ−1 = 2 ⎜ 0 ⎟. 0 −12 32 −20 · · · 0 ⎜ ⎟ σ ⎜ .. ⎟ .. .. .. .. ⎝ . . . . . ··· −n(n − 1)⎠ 0 0 0 0 · · · −n(n − 1) n2 Exercice 4.5 Etablir une relation de récurrence pour calculer les éléments aij de Σ−1 :
aij
⎧ 2 2i ⎪ ⎪ ⎪ ⎨n2 = ⎪−ij ⎪ ⎪ ⎩ 0
si i = j < n, si i = j = n, si |i − j| = 1, sinon.
76
Méthodes de Monte-Carlo avec R
Evidemment, cette région ne peut pas être utilisé en tant que telle puisque μ est inconnu. Un substitut possible est l’ellipsoïde centré en l’estimation terminale x ¯n , ¯ : (¯ y y − 1¯ yn ) Σ−1 (¯ y − 1¯ yn ) ≤ dn , mais ce choix induit un biais qui devrait être pris en compte dans la borne dn . Qui plus est, le calcul et la représentation de la bande de confiance induites par cette condition sont loin d’être immédiats. En fait, les implantations de ce principe les plus évidentes entraînent des simulations du même ordre de magnitude que les reproductions rudimentaires proposées au début de la Section 4.2 ! Exercice 4.6 Montrer que le biais dû au remplacement de μ par x ¯n est de l’ordre d’une variable aléatoire du χ2n , donc qu’il peut être corrigé directement dans dn .
Cependant, ce procédé imparfait est facilement modifiable en une solution théoriquement bien fondée 3 qui peut être trouvée dans Kendall et al.. Plutôt que de s’appuyer sur l’approximation normale ci-dessus, ces auteurs relient la suite des Xi à la fonction en escalier δn , définie par ⎛ ⎞ nt 1 {δn (t)}t∈[0,1] = ⎝ Xi ⎠ nt i=1 t∈[0,1]
où x dénote la partie entière de x, c’est-à-dire le plus grand entier n’excédant pas x. Par convention, δn (t) = 0 pour t < 1/n. Il existe une extension fonctionnelle du TCL, appelée théorème de Donsker, qui affirme que la fonction aléatoire ⎫ ⎧ ⎨ 1 nt Xi − μ ⎬ √ ⎭ ⎩ n σ i=1
et son approximation
t∈[0,1]
⎛
⎞ −1 nt σ ˆ ⎝ √n {Xi − μ}⎠ n i=1
t∈[0,1]
convergent en distribution (quand n tend vers l’infini) vers un mouvement brownien standard sur [0, 1], noté {W (t)}t∈[0,1] (Feller, 1971). En exploitant la bande de confiance u sur le mouvement brownien {W (t)}t∈[0,1] construite dans le même article, Kendall et al. ont montré que la bande fonctionnelle ) ( σn2 nt , μ + u (t) nˆ σn2 nt , t ∈ [0, 1] ω ; ω(t) ∈ μ − u (t) nˆ 3. Le reste de cette section nécessite l’utilisation du mouvement brownien. Même si le résultat final ne nécessite aucun savoir avancé sur le mouvement brownien, cette section peut être omise par les lecteurs ne maîtrisant pas cette notion, puisqu’elle n’a aucun rapport avec le reste du livre.
Chapitre 4.
Contrôler et accélérer la convergence
77
contient (δn (t))t∈[0,1] avec une probabilité asymptotiquement égale à 1 − α. Alors que la forme exacte de u est trop complexe pour être décrite ici, une approximation conservative au niveau de confiance 0.95 est fournie par √ u (t) = a + b t avec a = 0.3 et b = 2.35 ,
−3
−2
−1
0
1
2
3
comme le montre la Figure 4.4.
0.0
0.2
0.4
0.6
0.8
1.0
x
Fig. 4.4 – Bande de confiance à 95% sur un mouvement brownien sur [0, 1] et représentation d’une réalisation d’un mouvement brownien. Exercice 4.7 En utilisant les trois propriétés définissant le mouvement brownien {W (t)}t∈[0,1] , i. W (0) = 0, ii. W (t1 ) − W (t2 ) ∼ N (0, |t1 − t2 |) pour 0 ≤ t1 , t2 ≤ 1, iii. W (t1 ) − W (t2 ) est indépendant de W (t2 ) pour t1 > t2 , construire un algorithme qui simule le mouvement brownien pour un niveau de discrétisation donné δ, {W (kδ)}k=0,...,n et vérifier par une expérience de Monte-Carlo que la limite ci-dessus contient le mouvement brownien avec une probabilité approximativement égale à 95%.
Quand bien même cette contruction est attirante dans des situations contrôlées où μ est connu ou estimé suivant une source indépendante (voir Section 4.7.3), ce dont nous avons surtout besoin dans les expériences de Monte-Carlo est plutôt une région de confiance qui contienne une suite (aléatoire) d’estimateurs de Monte-Carlo avec une probabilité (asymptotique) donnée, au vu de la suite réalisée X1 , . . . , Xn . Plus formellement, étant donné un échantillon iid Y1 , . . . , Yn de même loi cible f , indépendant de l’échantillon X1 , . . . , Xn initialement observé et associé aux estimateurs δN (1) (de μ) et σ ˆn (de σ), nous sommes intéressés par les variations de la fonction aléatoire
nt σ ˆn−1 √ {Yi − δn (1)} , n i=1 t∈[0,1]
78
Méthodes de Monte-Carlo avec R
qui peut être décomposée en nt nt σ ˆ −1 nt σ ˆ −1 σ ˆn−1 √ {Yi − δn (1)} = √n {Yi − μ} − √ n {δn (1) − μ} . n i=1 n i=1 n
Ainsi, d’après l’extension par Donsker du TCL (Kallenberg, 2002, p. 275), les estimations cumulées constantes par morceaux convergent en distribution vers un processus aléatoire continu qui est la somme d’un mouvement brownien standard {W (t)}t∈[0,1] et d’une fonction linéaire aléatoire (tU )t∈[0,1] , U étant une variable aléatoire normale standard et indépendante de {W (t)}t∈[0,1] . Pour ce processus stochastique alternatif, la bande de confiance est déterminée par une fonction qui √ est approximativement u (t) = a + b t, avec a = 0.1 et b = 3.15 (Kendall et al.). Ceci implique que la bande de confiance naturelle associée à la suite X1 , . . . , Xn est donnée par √ σ ˆn n
δn (1) ± u (t) , t ∈ [0, 1] . nt Comme on peut le voir dans la formule précédente, la bande de confiance déduite de l’approximation brownienne dépend uniquement des estimateurs de l’espérance δn (1) et de sa variance σ ˆn2 à la fin de la simulation. Ainsi, bien que la validité formelle de l’approximation brownienne est établie, la bande de confiance résultante ne devrait pas être surinterprétée, de même que pour l’approximation originale fondée sur le TCL de la Section 4.2. En particulier, calculer les bandes de confiance associées à deux simulations différentes produit des champs différents et potentiellement conflictuels. Notons aussi que la bande de confiance doit être recalculée quand d’autres simulations sont ajoutées, comme par exemple quand on réalise que la largeur de la bande est trop étendue pour la précision de l’estimation (ceci étant la première raison de l’emploi de ces bandes). Etant donné que la bande de confiance mise à jour correspond à de plus longues suites, elle devrait être augmentée pour permettre la comparaison avec la version courante. Exemple 4.5 (Suite de l’Exemple 4.4) Si nous cherchons à comparer les bandes de confiance produites par des échantillonnages préférentiels fondés sur des lois instrumentales normale et de Cauchy, il nous suffit de produire une suite de simulations normales et une suite de simulations de Cauchy, respectivement. Etant donné que la précision (ou la variation) est ce qui importe, nous pouvons évaluer numérateur et dénominateur séparément. Si nous considérons par exemple
1 1 1 θ 2 √ dθ , I1 = exp − (θ − x) π 1 + θ2 2π 2 la bande de confiance pour la simulation normale est obtenue par > Nsim=10^4 > norma=rnorm(Nsim)+2.5
Chapitre 4. > > > > > + > + >
Contrôler et accélérer la convergence
79
hnorm=norma*dcauchy(norma) munorm=mean(hnorm) sdnorm=sd(hnorm) f=function(x) (cumsum(hnorm))[round(Nsim*x)]/round(x*Nsim) curve(munorm+(.1+3.15*sqrt(x))*sdnorm*10^2/round(x*Nsim), lwd=2,from=0,to=1) curve(munorm-((.1+3.15*sqrt(x))*sdnorm*10^2/round(x*Nsim)), lwd=2,from=0,to=1,add=T) curve(f,lwd=2,from=0.001,to=1,col="steelblue",add=T)
tandis que la bande correspondante pour la simulation de Cauchy s’obtient en remplaçant les deux premières lignes ci-dessus par > norma=rcauchy(Nsim) > hnorm=norma*dnorm(norma-2.5) Puisque l’estimation de la variance est beaucoup plus grande pour l’échantillon de Cauchy, la largeur de la bande de confiance correspondante est aussi beaucoup plus importante. La Figure 4.5 représente les bandes de confiance pour I1 et
1 1 1 1 2 √ exp − (θ − x) I2 = dθ , π 1 + θ2 2π 2
0.04
0.05
0.06
0.07
0.08
0.09
0.06 0.07 0.08 0.09 0.10 0.11 0.12 0.13
associées à un échantillon normal et de Cauchy, respectivement. Dans les deux cas, la confiance allouée à la suite normale est plus grande.
0.0
0.2
0.4
0.6
Iterations
0.8
1.0
0.0
0.2
0.4
0.6
0.8
1.0
Iterations
Fig. 4.5 – Bornes des bandes de confiance à 95% des estimateurs d’échantillonnage préférentiel de I1 (gauche) et I2 (droite) pour une seule suite normale (en traits pleins) et une seule suite (pointillée) de Cauchy de 104 simulations superposées. Les bandes de confiance de Cauchy sont plus larges dans les deux cas.
80
Méthodes de Monte-Carlo avec R
La construction des bandes de confiance utilisée ci-dessus s’applique évidemment à n’importe quelle transformation h(X) qui est de carré intégrable. Elle opère également dans des cadres d’échantillonnage préférentiel (c’est-à-dire quand les Yi sont générés suivant une densité instrumentale q et quand h(Yi ) est remplacé par H(Yi ) = h(Yi )fπ (Yi )/q(Yi )) comme dans le cadre des méthodes de Monte-Carlo par chaînes de Markov.
4.6
Rao–Blackwellisation et déconditionnement
Un célèbre théorème de statistique mathématique, le théorème de Rao–Blackwell, énonce que remplacer un estimateur avec son espérance conditionnelle à une statistique exhaustive améliore toujours sa variance, var(E[δ(X)|Y ]) ≤ var(δ(X)) , où Y est une statistique exhaustive (Lehmann & Casella, 1998). De manière assez inattendue, ce théorème a aussi un impact sur les techniques de calcul puisqu’il donne une approche générique pour réduire la variance d’un estimateur de MonteCarlo, à savoir utiliser le conditionnement. Cette technique est parfois appelée Rao–Blackwellisation (Gelfand & Smith, 1990; Liu et al., 1994; Casella & Robert, 1996), bien que le conditionnement ne soit pas toujours en termes d’une statistique exhaustive dans le cadre des méthodes de Monte-Carlo. Elle confirme simplement que le fait d’utiliser des espérances conditionnelles — lorsqu’elles peuvent être calculées — dans des représentations de type Monte-Carlo produit une réduction de la variabilité de ces estimateurs de Monte-Carlo sans pour autant perturber leur biais (ou manque de biais). Mettre en œuvre une Rao–Blackwellisation signifie prendre avantage du fait que, si δ(X) est un estimateur de I = Ef [h(X)] et si X peut être simulé suivant une distribution jointe f (x, y) satisfaisant f (x, y) dy = f (x), alors le nouvel estimateur δ (Y ) = Ef [δ(X)|Y ] domine δ en termes de variance, alors que le biais est le même. Evidemment, ce résultat est utile seulement dans les cas où δ (Y ) peut être calculé explicitement. Exemple 4.6 (Espérance d’une loi de Student) Considérons le calcul de l’espérance de h(x) = exp(−x2 ) quand X ∼ T (ν, μ, σ 2 ). La distribution de Student a été dérivée par William Gosset (voir, par exemple, Stigler, 1986) comme la distribution du rapport d’une variable normale sur une variable χ (et non pas χ2 !) normalisée ; plus généralement, si X ∼ T (ν, μ, σ 2 ), alors X peut se décomposer comme X = μ + σ
ξ/ν
,
avec ∼ N (0, 1) , ξ ∼ χ2ν .
Chapitre 4.
Contrôler et accélérer la convergence
81
Par conséquent, même si la loi de Student peut être simulée directement par la fonction rt(), elle admet la représentation marginale ci-dessus en terme de distribution jointe sur (x, ξ) ou, de manière équivalente (pour y = ξ/ν), √ (ν/2)ν/2 ν/2−1 y exp −(x − μ)2 y/2σ 2 exp (−yν/2) , f (x, y) = √ y Γ(ν/2) 2πσ 2
parfois appelée décomposition de Dickey (1968). L’implantation de la décomposition est simple : > y=sqrt(rchisq(Nsim,df=nu)/nu) > x=rnorm(Nsim,mu,sigma/y) produit un échantillon de (Xi , Yi ) (i = 1, . . . , n). (Rappelons que, dans R, les fonctions norm sont paramétrées par l’écart type et non par la variance !) Ainsi, la moyenne empirique n 1 δn = exp(−Xj2 ) n j=1 peut être améliorée quand les Xj sont produits à partir de l’échantillon ((X1 , Y1 ), . . . , (Xn , Yn )), puisque la version Rao–Blackwellisée δn
=
=
n 1 E[exp(−X 2 )|Yj ] n j=1
n 1 1 μ2 exp − n j=1 1 + 2σ 2 /Yj 2σ 2 /Yj + 1
peut bien être calculée. La comparaison entre les deux évaluations est alors donnée par > d1=cumsum(exp(-x^2))/(1:Nsim) > d2=cumsum(exp(-mu^2/(1+2*(sigma/y)^2))/ + sqrt(1+2*(sigma/y)^2))/(1:Nsim) La Figure 4.6 fournit une illustration de la différence des vitesses de convergence de δn et δn vers Eg [exp(−X 2 )] pour (ν, μ, σ) = (5, 3, 0.5). Pour que δn ait la même précision que δn , il faudrait qu’il utilise dix fois plus de simulations puisque les variances estimées sont respectivement de 0.00279 et 0.00022. Exercice 4.8 Montrer que
∞ −∞
exp{−x2 } exp{−(x − μ)2 y/2σ 2 } dx = exp −
μ2 1 + 2σ 2 /y
en complétant le carré dans l’exponentielle pour évaluer l’intégrale.
Méthodes de Monte-Carlo avec R 0.0060 0.0065 0.0070 0.0075 0.0080 0.0085 0.0090
82
0
2000
4000
6000
8000
10000
Iterations
Fig. 4.6 – Convergence des estimateurs de E[exp(−X 2 )], δn (traits noirs), et δn
(traits clairs) pour (ν, μ, σ) = (5, 3, 0.5). Les valeurs finales sont respectivement de 0.00762 et de 0.00769, pour une valeur exacte égale à 0.00771. Malheureusement, ce principe de conditionnement semble être d’une portée limitée puisqu’il implique un type de simulation spécifique (à partir d’une loi jointe) et qu’il nécessite aussi des fonctions h pouvant être intégrées qui soient suffisamment régulières pour que les espérances conditionnelles soient explicites. Il y a, cependant, des situations spécifiques où la Rao–Blackwellisation est toujours possible. Une illustration est fournie dans Robert et Casella (2004, Section 4.2) dans le cadre des méthodes de rejet, car les simulations rejetées par cette méthode peuvent alors être recyclées par une intégration des variables uniformes utilisées dans l’étape de sélection. Exercice 4.9 Considérons une méthode de rejet appliquée à la densité cible f et basée sur la distribution instrumentale g. a. Montrer que l’échantillon produit par la méthode de rejet (X1 , . . . , Xn ) peut être associé avec des échantillons iid, (U1 , . . . , UN ) et (Y1 , . . . , YN ), provenant des distributions U[0,1] et g ; N est le temps d’arrêt associé à l’acceptation de n variables Yj . b. Déduire que l’estimateur correspondant de Ef [h(X)] basé sur (X1 , . . . , Xn ) peut être écrit comme n N 1 1 δ1 = h(Xi ) = h(Yj ) IUj ≤wj , n i=1 n j=1 avec wj = f (Yj )/M g(Yj ).
Un autre cadre générique recourant à la Rao–Blackwellisation a déjà été introduit dans le Chapitre 3 avec la notion d’échantillonnage défensif (voir la Section 3.3.3). Quand on utilise une distribution de mélange comme densité instrumentale dans la méthode d’échantillonnage préférentiel, g(x) = g1 (x) + (1 − )g2 (x), la variable aléatoire correspondant au choix de la composante du mélange est une variable auxiliaire Y qui peut être intégrée et peut donc disparaître. Si nous représentons
Chapitre 4.
Contrôler et accélérer la convergence
83
l’estimateur d’échantillonnage préférentiel par δn =
n f (Xi ) 1 f (Xi ) h(Xi ) IYi =1 + IYi =2 , n i=1 g1 (Xi ) g2 (Xi )
prendre son espérance conditionnelle aux Xi amène à δn
=
*
n f (Xi ) ** 1 Xi h(Xi )E n i=1 gYi (Xi ) *
=
n +1− 1 h(Xi )f (Xi ) n i=1 g1 (Xi ) + (1 − )g2 (Xi )
=
n f (Xi ) 1 h(Xi ) , n i=1 g1 (Xi ) + (1 − )g2 (Xi )
comme l’a montré la Section 3.3.3. La stabilisation additionnelle fournie par l’affectation de n variables simulées suivant g1 et de (1 − )n variables simulées suivant g2 n’est pas exactement une étape de Rao–Blackwellisation, même si l’estimateur résultant est à la fois sans biais et moins variable que l’estimateur utilisant un nombre binomial Bin(n, ) de générations suivant g1 . Quand assez d’informations sont disponibles sur la densité f , une implémentation spécifique de la Rao–Blackwellisation est l’échantillonnage stratifié. Plus précisément, cette situation apparaît quand les probabilités i = Pf (Ai ) des éléments Ai d’une partition donnée {A1 , . . . , Ap } de X sont connues. Puisque l’intégrale h(x)f (x) dx peut être exprimée comme X h(x)f (x) dx = X
p i=1
h(x)f (x) dx =
Ai
p i=1
i
h(x)fi (x) dx = Ai
p
i Ii ,
i=1
où les fi sont définies comme les restrictions de f aux ensembles Ai (i = 1, . . . , p), il est possible d’appliquer un argument de Rao–Blackwellisation à cette intégrale. En effet, cette décomposition signifie que simuler X ∼ f revient à simuler d’abord Y suivant P (Y = i) = i puis à simuler X sachant Y = i suivant fi . La variablité spécifique due à la simulation de Y peut donc être intégrée. La mise en œuvre de cette Rao–Blackwellisation consiste à simuler des échantillons de taille ni suivant les fi pour évaluer chaque intégrale Ii séparément par un estimateur de Monte-Carlo standard, Iˆi . La variance de l’estimateur résultant, 1 Iˆ1 + · · · + p Iˆp , est p i=1
2i
1 ni
Ai
(h(x) − Ii )2 fi (x) dx,
84
Méthodes de Monte-Carlo avec R
qui peut être beaucoup plus petite que la variance de l’estimateur de Monte-Carlo standard fondé sur un échantillon de taille n = n1 + · · · + np . Le choix optimal pour les ni dans cette perspective de réduction de variance est (n∗i )2 ∝ 2i (h(x) − Ii )2 fi (x) dx. Ai
Par conséquent, si les ensembles Ai peuvent être choisis arbitrairement, la variance de l’estimateur stratifiépeut être réduite en sélectionnant des Ai avec des facteurs de variance similaires Ai (h(x) − Ii )2 fi (x) dx. Bien entendu, le nombre de cas pratiques où cet échantillonnage stratifié peut être mis en œuvre est restreint.
4.7
Méthodes d’accélération
Parallèlement au dispositif de déconditionnement ci-dessus, il existe des stratégies globales d’accélération, plus ou moins indépendantes des séries simulées, qui visent à exploiter le résultat de la simulation par des représentations plus efficaces. Elles devraient donc être implantées dès que possible. Si on les envisage comme un outil de traitement a posteriori, ces méthodes peuvent de plus être utilisées dans l’estimation de la convergence puisqu’elles fournissent des estimateurs alternatifs d’une même quantité.
4.7.1
Simulations corrélées
Les méthodes usuelles de simulation produisent des échantillons iid mais il est en fait préférable de générer des échantillons de variables négativement ou positivement corrélées quand on évalue une intégrale I. En effet, la corrélation permet de réduire la variance de l’estimateur correspondant, parfois de manière considérable. Le premier cas où la condition d’indépendance n’est pas forcément désirable correspond au cas de la comparaison de deux quantités proches. Si I1 = g1 (x)f1 (x)dx et I2 = g2 (x)f2 (x)dx (4.6) sont ces deux quantités et si δ1 estime I1 et δ2 estime I2 , indépendamment de δ1 , la variance de (δ1 − δ2 ) est alors var(δ1 ) + var(δ2 ). Elle est donc à l’échelle des intégrales I1 et I2 , alors que la magnitude de la différence I1 − I2 peut être considérablement inférieure. Par contre, si δ1 et δ2 sont positivement correlés, la variance ci-dessus est réduite d’un facteur de −2 cov(δ1 , δ2 ), ce qui améliore l’analyse de la différence. Une illustration convaincante de l’amélioration amenée par la corrélation dans des échantillons simulés est la comparaison d’estimateurs statistiques (traditionnels) dans une expérience de Monte-Carlo. Etant donné une densité f (x|θ) et une fonction de coût L(δ, θ), deux estimateurs δ1 et δ2 sont évalués au travers de leurs fonctions de risque, R(δ1 , θ) = E[L(δ1 , θ)] et R(δ2 , θ) (voir, par exemple, Robert,
Chapitre 4.
Contrôler et accélérer la convergence
85
2006, Chapitre 2). En général, ces fonctions de risque ne sont pas disponibles analytiquement, mais elles peuvent être approchées, par exemple, par une méthode de Monte-Carlo, sous la forme n ˆ 1 , θ) = 1 L(δ1 (Xi ), θ), R(δ n i=1
n ˆ 2 , θ) = 1 R(δ L(δ2 (Yi ), θ) n i=1
où les Xi et Yi sont simulés suivant f (·|θ). Si la simulation crée une corrélation positive entre L(δ1 (Xi ), θ) et L(δ2 (Yi ), θ), elle réduit alors la variabilité de l’approximation de R(δ1 , θ) − R(δ2 , θ). Deux recommandations de portée générale pour conduire des comparaisons de procédures statistiques fondées sur la simulation sont : (i). Le même échantillon (X1 , . . . , Xn ) doit être utilisé dans les approximations de Monte-Carlo de R(δ1 , θ) et de R(δ2 , θ). Cet usage répété d’un seul échantillon ne compromet en rien la convergence de l’approximation et il améliore la précision de la différence estimée R(δ1 , θ) − R(δ2 , θ), comme le montre la ˆ 2 , θ) et de ˆ 1 , θ) − R(δ comparaison des variances de R(δ n 1 {L(δ1 (Xi ), θ) − L(δ2 (Xi ), θ)} . n i=1
(ii). Le même échantillon sous-jacent doit aussi être utilisé pour la comparaison de risques pour toutes les valeurs de θ (donc pour l’approximation de la fonction de risque dans son ensemble) de manière à proposer une représentation plus régulière de cette fonction. Cette recommandation peut sembler absurde, puisque l’échantillon (X1 , . . . , Xn ) est généré suivant une distribution dépendant de θ, mais elle signifie que le même aléa à la base de cette simulation (par exemple, uniforme) doit être utilisé pour la génération des Xi quel que soit la valeur de θ. En particulier, de nombreux problèmes sont invariants par transformation, c’est-à-dire qu’il existe souvent une transformation Mθ sur X telle que, si X 0 ∼ f (X|θ0 ), alors Mθ X 0 ∼ f (X|θ). Dans de telles situations, produire un seul échantillon (X10 , . . . , Xn0 ) suivant f (X|θ0 ) est alors suffisant pour construire un échantillon suivant f (X|θ), grâce à la transformation Mθ . Implanter ce principe dans le cadre de l’échantillonnage préférentiel est bien sûr immédiat. Notons que le second point est plutôt tangent dans le cadre de cette section ; cependant, il induit une amélioration significative dans l’implantation pratique des méthodes de Monte-Carlo. La réduction de variance associée au recyclage de l’échantillon uniforme sous-jacent est évidente au vu des graphes des fonctions de risque résultantes, qui ne présentent pas les tracés irréguliers des graphes obtenus avec des échantillons indépendants. Cette méthode autorise donc bien une comparaison plus efficace des estimateurs.
86
Méthodes de Monte-Carlo avec R
Exemple 4.7 (Estimateurs de James–Stein) Dans le cas où X ∼ Np (θ, Ip ), la transformation Mθ mentionnée ci-dessus est évidemment la translation Mθ X = X + θ − θ0 . Quand on étudie les estimateurs de James–Stein tronqués + a x, 0 ≤ a ≤ 2(p − 2) δa (x) = 1 − x2 (voir Robert, 2001, Chapitre 2, pour une justification), la comparaison des risques quadratiques des δa ne peut être faite que par simulation. Lorsqu’on utilise un échantillon normal standard, le code R se présente comme suit : > > > > > + + + + + + >
nor=matrix(rnorm(Nsim*p),nrow=p) risk=matrix(0,ncol=150,nrow=10) a=seq(1,2*(p-2),le=10) the=sqrt(seq(0,4*p,le=150)/p) for (j in 1:150){ nornor=apply((nor+rep(the[j],p))^2,2,sum) for (i in 1:10){ for (t in 1:Nsim) risk[i,j]=risk[i,j]+sum((rep(the[j],p)max(1-a[i]/nornor[t],0)*(nor[,t]+rep(the[j],p)))^2) }} risk=risk/Nsim
0
1
2
3
4
5
La Figure 4.7 illustre cette comparaison dans le cas où p = 5. Notons que la courbe supérieure, qui correspond au risque estimé de δa pour a = 2 ∗ (p − 2), dépasse la valeur p = 5 pour les θ les plus grands, puisqu’elle se termine en 5.12.
0
1
2
3
4
θ
Fig. 4.7 – Risque quadratique approché d’estimateurs de James–Stein tronqués pour une loi normale N5 (θ, I5 ), en fonction de θ, fondé sur n = 103 simulations.
Chapitre 4.
Contrôler et accélérer la convergence
87
La théorie garantit cependant que le risque véritable de δa reste effectivement en dessous de p. Cette occurrence est bien sûr due à l’utilisation d’une approximation de Monte-Carlo. Lancer un plus grand nombre de simulations amènerait à une valeur finale du risque plus proche de p = 5, comme vous pouvez le vérifier en lançant votre propre expérience. Le calcul de l’erreur empirique de risk[i,j] montre que la précision de l’approximation du risque est ±0.23, ce qui signifie que l’intervalle de confiance sur le risque de δ2(p−2) inclut des valeurs qui sont inférieures à 5. Dans un cadre plus général, créer une corrélation suffisamment puissante entre δ1 et δ2 est rarement aussi évident, chercher à tout prix la corrélation peut aboutir à fortement augmenter les temps de conception, de programmation et d’exécution, donc avoir un effet négatif sur l’efficacité de l’analyse. Bien entendu, utiliser le même échantillon uniforme pour la génération de variables distribuées suivant f1 et f2 dans (4.6) n’est possible que quand il existe une transformation simple passant de f1 à f2 comme la translation. Par exemple, si f1 ou f2 doit être simulé par une méthode de rejet, l’utilisation d’un nombre aléatoire de variables uniformes empêche l’utilisation d’un échantillon commun.
4.7.2
Variables antithétiques
La méthode des variables antithétiques est fondée sur la même idée de base, à savoir qu’une plus haute efficacité peut être obtenue avec des simulations corrélées. Pour deux échantillons (X1 , . . . , Xn ) et (Y1 , . . . , Yn ) simulés suivant f , l’estimateur n 1 [h(Xi ) + h(Yi )] 2n i=1
de l’intégrale
(4.7)
I=
h(x)f (x) dx R
est plus efficace qu’un estimateur fondé sur un échantillon iid de taille 2n si les variables h(Xi ) et h(Yi ) sont négativement corrrélées. Dans ce cas, les Yi sont appelés des variables antithétiques (des Xi ). Bien entendu, induire une corrélation négative pour un intégrande h arbitraire n’est pas toujours possible, même quand Xi et Yi sont négativement corrélés. Une solution générique proposée dans Rubinstein (1981) est d’utiliser des variables uniformes Ui pour générer les Xi sous la forme Xi = F − (Ui ) et les Yi sous la forme Yi = F − (1 − Ui ). Cette idée peut être généralisée en une couverture quasi uniforme de l’intervalle unitaire [0, 1] par un schéma dyadique qui est relié aux schémas quasi aléatoires (voir Robert & Casella, 2004, Section 2.6.2). Etant donné un premier échantillon de Xi = F − (Ui ), 2q échantillons dupliqués peuvent être construits en considérant les symétries dyadiques sur les q premiers bits des représentations binaires des Ui .
88
Méthodes de Monte-Carlo avec R
Exercice 4.10 Montrer que si H = h ◦ F − , U ∼ U(0, 1), X = F − (U ) et Y = F − (1 − U ), alors h(X) et h(Y ) sont négativement corrélés si H est une fonction monotone.
Exemple 4.8 (Suite de l’Exemple 4.1) A partir de l’expérience de simulation initiale > uref=runif(10^4) > x=h(uref) > estx=cumsum(x)/(1:10^4) les symétries dyadiques peuvent être produites par le code suivant > > > > > >
resid=uref%%2^(-q) simx=matrix(resid,ncol=2^q,nrow=10^4) simx[,2^(q-1)+1:2^1]=2^(-q)-simx[,2^(q-1)+1:2^1] for (i in 1:2^q) simx[,i]=simx[,i]+(i-1)*2^(-q) xsym=h(simx) estint=cumsum(apply(xsym,1,mean))/(1:10^4)
0.80
0.85
0.90
0.95
1.00
entraînant une exploration systématique de tous les termes possibles dans l’intervalle unitaire en conservant les bits terminaux. L’impact sur l’approximation de cette symétrisation est clair, comme le montre la Figure 4.8. Utiliser les symétries sur les quatre premiers bits produit une suite bien plus stable, alors qu’utiliser les huit premiers bits donne la bonne réponse 9.9652 (aussi obtenue par integrate) presque dès le début, bien que 28 = 256 soit beaucoup plus petit que 104 .
0
2000
4000
6000
8000
10000
Iterations
Fig. 4.8 – Impact de la moyenne dyadique sur l’approximation de l’intégrale de h étudiée dans l’Exemple 4.1 pour 24 (trait gris, en pointillé) et 28 répliques (ligne droite gris clair) quand elle est comparé avec la convergence de la suite initiale (trait noir, plein).
Chapitre 4.
Contrôler et accélérer la convergence
89
Cet exemple donne la dimension de l’amélioration potentielle apportée par l’approximation dyadique, qui est, fondamentalement, numérique plutôt que stochastique. En effet, quand le nombre q de bits tend vers l’infini (comme l’a démontré l’Exemple 4.8, q = 8 est déjà proche de l’infini avec une moyenne sur 27 = 256 termes), l’aspect stochastique de l’estimateur disparaît. Par conséquent, les situations où cette technique est à même d’avoir un impact sont celles où des techniques d’intégration numérique peuvent s’appliquer. Comme dans le cas précédent, cette technique d’accélération s’applique seulement pour des simulations qui sont des transformations directes de variables uniformes, excluant à nouveau le cadre général des méthodes d’acceptation–rejet, pour lesquelles l’impact de la corrélation négative a de fortes chances d’être dilué. Des transformations correspondant à des actions de groupes plus générales ne peuvent pas être considérées, comme celles envisagées dans Evans & Swartz (2000) et Kong et al. (2003), où les auteurs remplacent la moyenne standard par une moyenne (sur i) de la moyenne des h(gXi ) (sur les transformations g du groupe). 4 Une application immédiate de ce principe d’approximation est de répliquer l’échantillon initial en utilisant des permutations aléatoires sur les lignes de niveaux de la densité ; c’est-à-dire de répliquer Xi en Yij ∼ U ({y; f (y) = f (Xi )}) , pour j = 1, . . . , J. Exemple 4.9 (Loi a posteriori de Cauchy à variables antithétiques, suite de l’Exemple 4.5) Si nous considérons le numérateur de la moyenne a posteriori comme une espérance sous la loi normale N (x, 1), la symétrie est en x, ce qui signifie que l’échantillon des θi peut être dupliqué en l’échantillon des 2x − θi . Par contre, si la distribution de référence est la loi de Cauchy, l’échantillon des θi peut être dupliqué en l’échantillon des −θi .
Dans les quelques cas pratiques où la simulation suivant cette distribution uniforme sur les lignes de niveaux peut être conduite, l’amélioration produite par cette moyenne de Monte-Carlo n’est pas toujours spectaculaire !
4.7.3
Variables de contrôle
Dans certains cas particuliers, il existe des fonctions h0 (différentes de la fonction h) dont la moyenne sous la loi f est connue. Par exemple, si f est symétrique en μ ou si μ est la médiane de la loi f , la moyenne de h0 (X) = IX≥μ par rapport à la loi f est 1/2. La technique des variables de contrôle tire avantage de cette information 4. A proprement parler, ceci n’est pas de l’échantillonnage antithétique puisque la moyenne est prise sur la mesure dominante plutôt que sur la distribution elle-même.
90
Méthodes de Monte-Carlo avec R
additionnelle dans le (même) but de réduire la variance des estimateurs de MonteCarlo de I = h(x)f (x)dx. En effet, si δ1 est un estimateur de I et si δ3 un estimateur non biaisé de Ef [h0 (X)], l’estimateur pondéré δ2 = δ1 + β(δ3 − Ef [h0 (X)]) est un autre estimateur de I qui partage la même espérance que δ1 . De plus, var(δ2 ) = var(δ1 ) + β 2 var(δ3 ) + 2β cov(δ1 , δ3 ) . Il existe donc un choix optimal du coefficient β, β∗ = − et dans ce cas
cov(δ1 , δ3 ) , var(δ3 )
var(δ2 ) = (1 − ρ213 ) var(δ1 ),
ρ213 étant le coefficient de corrélation entre δ1 et δ3 . Sous le choix optimal de β, utiliser la variable de contrôle résulte en une variance plus petite pour δ2 . En particulier, si δ1 =
n 1 h(Xi ) n i=1
et
δ3 =
n 1 h0 (Xi ), n i=1
l’estimateur avec variable de contrôle est δ2 =
n 1 (h(Xi ) + β ∗ {h0 (Xi ) − Ef [h0 (X)]}) , n i=1
où β ∗ = −cov(h(X), h0 (X))/var(h0 (X)). Quand p variables de contrôle sont disponibles simultanément, h01 (Xi ), . . . , h0p (Xi ), l’extension de la technique est immédiate : l’estimateur à variable de contrôle est alors ⎛ ⎞ p n 1 ⎝h(Xi ) + δ2 = βj∗ {h0j (Xi ) − Ef [h0j (X)]}⎠ n i=1 j=1 et le vecteur des coefficients, β ∗ = (β1∗ , . . . , βp∗ ), se déduit comme la projection orthogonale β ∗ = −varf (h0 (X))−1 covf (h(X), h0 (X)) pour h0 (x) = (h01 (x), . . . , h0p (x)). Exercice 4.11 Montrer que, si f (x|θ) est la densité d’intérêt, paramétrée en θ ∈ R, la fonction h(x, θ) = ∂ log f (x|θ) ∂θ est toujours une variable de contrôle avec une moyenne égale à zéro. Discuter de la pertinence de ce résultat quand f est connu à une constante près (comme densité en x).
Chapitre 4.
Contrôler et accélérer la convergence
91
En pratique, le coefficient optimal β ∗ n’est évidemment pas disponible mais il peut être approché par une simple régression des h(xi ) sur les h0 (xi ) (ou par une régression multiple des h(xi ) sur les h0j (xi )). Exemple 4.10 (Suite de l’Exemple 4.9) Puisque la distribution normale utilisée dans la représentation du numérateur de la moyenne a posteriori est centrée en x, tous les moments impairs de (x − θ) ont une moyenne nulle. Il est donc possible d’effectuer une régression des θi /(1 + θi2 ) simulés sur les variables de contrôle (x − θi )2k+1 afin d’améliorer l’approximation de θ exp −(x − θ)2 /2 √ dθ . I= 1 + θ2 2π Une application rudimentaire de la technique des variables de contrôle est donnée dans le code R ci-dessous : > > > > + + + + > >
thet=rnorm(10^3,mean=x) delt=thet/(1+thet^2) moms=delta=c() for (i in 1:5){ moms=rbind(moms,(thet-x)^(2*i-1)) reg=lm(delt∼t(moms)-1)$coef delta=rbind(delta,as.vector(delt-reg%*%moms)) } plot(cumsum(delt)/(1:10^3),ty="l",lwd=2,lty=2) for (i in 1:5) lines(cumsum(delta[i,])/(1:10^3),lwd=2)
Il faudrait arrêter d’ajouter des variables de contrôle quand la régression ne fournit pas une meilleure adéquation et quand les régresseurs deviennent insignifiants. k β1 R2 σ ˆ
1 −.06 .0279 .353
2 −.113 .0528 .349
3 −.110 .0536 .349
4 −.105 .0527 .349
5 −.108 .0517 .349
Tableau 4.1 – Comparaison du premier coefficient de régression et des paramètres de l’adéquation de la régression en fonction du nombre k de moments impairs utilisés comme variables de contrôle.
Dans le Tableau 4.1, l’erreur résiduelle arrête de diminuer pour k = 3, le résumé de la régression étant Coefficients: Estimate Std. Error t value Pr(>|t|) moms1 -0.110128 0.027401 -4.019 6.28e-05 ***
92 moms2 moms3
Méthodes de Monte-Carlo avec R 0.004218 0.002693
0.016815 0.001986
0.251 1.356
0.802 0.176
Residual standard error: 0.3486 on 997 degrees of freedom Multiple R-Squared: 0.05643, Adjusted R-squared: 0.05359 F-statistic: 19.87 on 3 and 997 DF, p-value: 1.621e-12 Ceci indique que le troisième moment impair (donc le cinquième moment) ne contribue pas significativement à la régression, tandis que, pour k = 2, le résumé de la régression est Coefficients: Estimate Std. Error t value Pr(>|t|) moms1 -0.137687 0.018380 -7.491 1.50e-13 *** moms2 0.025994 0.004976 5.224 2.14e-07 ***
0.32
0.33
0.34
0.35
0.36
0.37
0.38
La comparaison graphique dans la Figure 4.9 des estimateurs ainsi induits ne montre en fait aucune différence à partir de k = 3 et des variabilités très semblables pour k = 2 et k = 3. L’amélioration par rapport au graphe des estimations originales est quand à lui très clair.
0
200
400
600
800
1000
Iterations
Fig. 4.9 – Impact des variables de contrôle (x − θ)2k−1 sur l’approximation de l’intégrale I pour k = 1, . . . , 5. La suite originale des estimateurs est celle en traits pointillés (noir), tandis que les corrections dues à la variable de contrôle augmentent avec k à l’itération 500 (gris). Les graphes pour k = 3, 4, 5 sont indistinguables. La technique des variables de contrôle apparaît donc accessible seulement dans des situations très spécifiques où une fonction de contrôle h0 est disponible. Néanmoins, il existe une classe de modèles bayésiens où certaines espérances sont toujours disponibles, à savoir le cadre de lois a priori conjuguées et de familles exponentielles (voir, par exemple, Robert, 2001, Chapter 3).
Chapitre 4.
Contrôler et accélérer la convergence
93
Exemple 4.11 (Régression logistique) Considérons la modélisation des données Pima.tr — introduites dans la Section 1.4 et déjà utilisées dans l’Exemple 3.10 — en choisissant un modèle de régression logistique, (1 ≤ i ≤ m) P (Yi = 1|xi ) = exp(xti θ)/{1 + exp(xti θ)} . Sous un a priori uniforme sur θ, la loi a posteriori du coefficient de régression a une densité proportionnelle à m Y i xi {1 + exp(xti θ)}−1 . (4.8) exp θ t i
i=1
Comme pour toute distribution provenant d’une famille exponentielle, nous avons +m , + , * m * Y i xi , Yi xi = m∇ψ(θ) et Eπ ∇ψ(θ)** Y i xi = i Eθ m i=1 i=1 où ψ(θ) est la notation classique pour la fonction log-cumulante des moments, avec m∇ψ(θ) =
m i=1
exp(xti θ) xi 1 + exp(xti θ)
dans le modèle de la régression logistique. Ainsi, l’espérance a posteriori de ∇ψ(θ) est bien connue dans ce cas. L’espérance Eπ [θ| i Yi xi + ζ, λ + 1] peut être déduite de variables θj (1 ≤ j ≤ n) générées suivant (4.8). Comme cette loi n’est pas régulière, nous suivons la même démarche que dans l’Exemple 3.10, à savoir de partir des estimations du maximum de vraisemblance > glm(Pima.tr$t∼bmi,family=binomial) Call:
glm(formula = Pima.tr$t ∼ bmi, family = binomial)
Coefficients: (Intercept) -0.7249
bmi 0.1048
pour construire une proposition normale correctement calibrée, comme dans > sim=cbind(rnorm(10^4,m=-.72,sd=.55),rnorm(10^4,m=.1,sd=.2)) > weit=apply(sim,1,like)/(dnorm(sim[,1],m=-.72,sd=.55)* + dnorm(sim[,2],m=.1,sd=.2)) L’efficacité de cette correction est une fois de plus assez faible, avec une taille effective d’échantillon normalisé de 7% et une perplexité de 9.5%.
94
Méthodes de Monte-Carlo avec R
Une version avec variable de contrôle de n n ωj θj ωj δ1 = j=1
j=1
est aussi disponible via la régression pondérée des θj sur les variables m i=1
exp xti θj xi , 1 + exp xti θj
régression qui peut être obtenue par > + > + > > +
vari1=(1/(1+exp(-sim[,1]-sim[,2]*bmi)))sum((Pima.tr$t=="Yes"))/length(Pima.tr$bmi) vari2=(bmi/(1+exp(-sim[,1]-sim[,2]*bmi)))sum(bmi[Pima.tr$t=="Yes"])/length(Pima.tr$bmi) resim=sample(1:Nsim,Nsim,rep=T,pro=weit) reg=as.vector(lm(sim[resim,1]∼t(rbind(vari1[resim], vari2[resim]))-1)$coef)
−0.80
−0.70
−0.60
puisque le rééchantillonnage évite d’utiliser la régression pondérée. L’impact de l’estimation des coefficients de θ est, cependant, assez réduit (voir Figure 4.10.)
0
200
400
600
800
1000
600
800
1000
0.08
0.10
0.12
Iterations
0
200
400 Iterations
Fig. 4.10 – Impact des variables de contrôle (fondées sur les fonctions logcumulantes) sur les estimations a posteriori des coefficients de la régression logistique pour le jeu de données Pima.tr. La suite originale des estimateurs sur les 103 premières itérations est représentée en traits pleins (noir), tandis que la correction par variable de contrôle est la courbe en pointillés (gris). Le graphe supérieur correspond à l’intercept, d’estimateur du maximum de vraisemblance égal à −0.725 et le graphe inférieur correspond au coefficient de l’index de masse corporelle, avec un estimateur du maximum de vraisemblance égal à 0.105.
Chapitre 4.
4.8
Contrôler et accélérer la convergence
95
Exercices supplémentaires
Exercice 4.2 En utilisant les résultats obtenus dans l’Exercice 4.1 : a. Déduire que n2 1 π ˜1 (θ2i )α(θ2i ) n2 i=1
n1 1 π ˜2 (θ1i )α(θ1i ) , n1 i=1
(4.9)
avec θ1i ∼ π1 et θ2i ∼ π2 , est un estimateur convergent de . b. Montrer que l’identité proposée dans la partie b de l’Exercice 4.1 couvre le cas particulier de la moyenne harmonique de Newton & Raftery (1994) = Eπ2 [˜ π2 (θ)−1 ] Eπ1 [˜ π1 (θ)−1 ] sous l’hypothèse que les deux espérances existent. Donner une condition suffisante pour que ces espérances soient finies. Exercice 4.3 En s’appuyant sur l’approximation suivante de la variance de (4.9) : Var(ˆ ) 1 ≈ 2 n1 n2
π1 (θ)π2 (θ)[n1 π1 (θ) + n2 π2 (θ)]α(θ)2 dθ −1 2 π1 (θ)π2 (θ)α(θ) dθ
montrer que le choix optimal de α dans (4.9) est α(θ) ∝ 1 n1 π1 (θ) + n2 π2 (θ) . La solution optimale exhibée dans l’Exercice 4.3 ci-dessus peut aussi être interprétée comme un mélange défensif, comme dans (3.8). Notons aussi que la solution de la moyenne harmonique est généralement inutile, à cause de problèmes de variance infinie. Exercice 4.4 Pour chacun des cas suivants, générer les variables aléatoires Xi et Yi et comparer les estimateurs de la moyenne empirique et Rao–Blackwellisé de Ef (X) et de varf (X) : a. X|y ∼ P(y), Y ∼ Ga(a, b) (X suit une loi binomiale négative) ; b. X|y ∼ N (0, y), Y ∼ Ga(a, b) (X suit une loi de Student généralisée) ; c. X|y ∼ Bin(y), Y ∼ Be(a, b) (X suit une loi bêta-binomiale). Exercice 4.5 Etant donné un algorithme de rejet fondé sur (f, g, ρ), produisant n variables acceptées à partir de t + n propositions, on note b(yj ) =
(1 − ρ)f (yj ) g(yj ) − ρf (yj )
le poids d’échantillonnage préférentiel des variables rejetées (Y1 , . . . , Yt ) et par (X1 , . . . , Xn ) les variables acceptées.
96
Méthodes de Monte-Carlo avec R a. Montrer que l’estimateur n t δ AR + δ0 , n+t n+t n où δ0 = 1t tj=1 b(Yj )h(Yj ) et δ AR = n1 i=1 h(Xi ), ne domine pas uniformément δ AR . (Suggestion : considérer les fonctions constantes.) δ1 =
b. Montrer que δ2w =
t
n t b(Yj ) h(Yj ) δ AR + n+t n + t j=1 St
est asymptotiquement équivalent à δ1 en termes de biais et de variance. c. En déduire une condition pour que δ2w domine asymptotiquement δ AR (voir Robert & Casella, 2004, Section 4.6.2). Exercice 4.6 la matrice inverse corresponEn lien avec l’Exercice 4.5, montrer que, si nous notons Σ−1 k ¯1, X ¯2, . . . , X ¯ k ), pour obtenir Σ−1 nous avons juste à changer un élément, puis à dant à (X k+1 additionner une rangée et une colonne à Σ−1 k . Exercice 4.7 Une manière naïve d’implémenter la technique des variables antithétiques est d’utiliser à la fois U et (1 − U ) dans une simulation par inversion de la fonction de répartition. Examiner empiriquement si cette méthode conduit à une réduction de variance pour les distributions (i) f1 (x) = 1/π(1 + x2 ), (ii) f2 (x) = 12 e−|x| , (iii) f3 (x) = e−x Ix>0 , (iv) −2 2 f4 (x) = π√ et (v) f5 (x) = 2x−3 Ix>1 . Examiner les réductions de variance 1 + x2 /3 3 pour l’estimation de la moyenne, du second moment, de la médiane et du 75e percentile. Pour calculer les poids de l’estimateur Rao-Blackwellisé de la Section 4.6, il est nécessaire de caractériser la distribution des variables aléatoires produites par l’algorithme de rejet. Le problème suivant est un exercice assez direct de probabilité mais il est compliqué par l’intervention de la règle d’arrêt de cet algorithme de rejet. Exercice 4.8 Ce problème analyse la performance terme à terme de l’estimateur Rao–Blackwellisé. Casella & Robert (1998) ont établi que cet estimateur ne perd pas beaucoup en performances par rapport à l’estimateur complètement Rao–Blackwellisé de l’Exercice 4.9. Etant donné un échantillon (Y1 , . . . , YN ) produit par un algorithme de rejet pour accepter n valeurs, fondé sur (f, g, M ) : a. Montrer que N 1 1 E[IUi ≤ωi |Yi ]h(Yi ) = N i=1 N −n
avec
b(Yi ) =
1+
h(YN ) +
N −1
b(Yi )h(Yi )
i=1
n(g(Yi ) − ρf (Yi )) (N − n − 1)(1 − ρ)f (Yi )
−1 .
Chapitre 4. b. Si SN =
N −1 1
Contrôler et accélérer la convergence
97
b(Yi ), montrer que 1 δ= N −n
h(YN ) +
N −1 N −n−1 b(Yi )h(Yi ) Sn i=1
domine asymptotiquement l’approximation habituelle de Monte-Carlo, conditionnellement au nombre n de variables rejetées sous un critère de perte quadratique. (Suggestion : montrer que la somme des poids SN peut être remplacée par (N − n − 1) dans δ et supposer que Ef [h(X)] = 0.) Exercice 4.9 En connexion avec l’Exercice 4.9, a. Conclure qu’une réduction de la variance de δ1 peut être obtenue en intégrant les Ui , comme dans l’estimateur δ2 =
N N 1 1 E[IUj ≤wj |N, Y1 , . . . , YN ] h(Yj ) = ρi h(Yi ). n j=1 n i=1
b. Montrer que, pour i = 1, . . . , k − 1, ρi satisfait ρi
= =
P(Ui ≤ wi |N = k, Y1 , . . . , Yn )
n−2
k−2 (i1 ,...,in−2 ) j=1 wij j=n−1 (1 − wij ) , wi
n−1
k−1 (i1 ,...,in−1 ) j=1 wij j=n (1 − wij )
lorsque ρk = 1. La somme du numérateur porte sur les sous-ensembles de {1, . . . , i−1, i + 1, . . . , k − 1} de taille n − 2 et le dénominateur porte sur tous les sous-ensembles de taille n − 1. Exercice 4.10 La technique des variables de contrôle peut être adaptée à l’algorithme de rejet. Lorsque Y1 , . . . , YN est l’échantillon produit par l’algorithme de rejet fondé sur g visant à t acceptations suivant f , avec f (·) ≤ M g(·), appelons m la densité m(y) =
n − t g(y) − ρf (y) t−1 f (y) + n−1 n−1 1−ρ
1 . M a. Montrer que m est la densité marginale des Yi conditionnellement à N = n et en déduire que ! ! m h(Yi )f (Yi ) ! I = h(x)f (x)dx = EN E N . m(Yi ) !
quand N = n et ρ =
b. Montrer que, pour toute fonction c(·) avec une espérance explicite E[c(Y )] et pour toute constante β, h(Y )f (Y ) − βc(Y ) . I = βE[c(Y )] + E m(Y )
98
Méthodes de Monte-Carlo avec R En déduire que N −1 1 h(Yi )f (Yi ) h(YN ) ˆ + − β (c(Yi ) − E[c(Y )]) I= N N i=1 m(Yi ) est un estimateur à variable de contrôle de I. c. En posant d(y) = h(y)f (y)/m(y), montrer que le choix optimal de β est β ∗ = cov[d(Y ), c(Y )]/var[c(Y )].
d. Examiner les choix de c pour lesquels le β optimal peut être construit et donc où la méthode de la variable de contrôle s’applique. ˆ le coefficient de régression (Note : Strawderman, 1996, suggère d’estimer β en utilisant β, de d(Yi ) sur c(Yi ), i = 1, 2, . . . , n − 1.)
Chapitre 5
Optimisation par les méthodes de Monte-Carlo “He invented a game that allowed players to predict the outcome ?” Susanna Gregory To Kill or Cure
Guide du lecteur Ce Chapitre est aux problèmes d’optimisation ce que le Chapitre 3 est aux problèmes d’intégration. Nous faisons ici la distinction entre deux applications distinctes à l’optimisation de la simulation par ordinateur. La première application, décrite dans la Section 5.3, est la production de techniques de recherche stochastiques afin d’atteindre le maximum (ou le minimum) d’une fonction, à l’aide de techniques d’exploration aléatoire sur la surface de cette fonction qui évitent de rester coincé dans des maxima (ou des minima) locaux et sont suffisamment attirées par le maximum (ou le minimum) global. La seconde application, décrite dans la Section 5.4, est plus proche du Chapitre 3 en ce que la simulation est utilisée pour approcher la fonction qu’on cherche à optimiser.
C. P. Robert et al., Méthodes de Monte-Carlo avec R © Springer-Verlag France 2011
100
5.1
Méthodes de Monte-Carlo avec R
Introduction
Les problèmes d’optimisation appartiennent pour la plupart à l’une de deux catégories. Soit on cherche les extrema d’une fonction h(θ) sur un domaine Θ, soit on cherche la ou les solution(s) à une équation implicite de la forme g(θ) = 0 sur un domaine Θ. Les deux problèmes sont interchangeables d’un certain point de vue, puisque le second est un problème de minimisation de la fonction h(θ) = g 2 (θ) (en dimension un), tandis que le premier problème est équivalent à la résolution de l’équation ∂h(θ)/∂θ = 0 (dès lors que la fonction h est différentiable). Nous nous restreignons donc au problème de maximisation max h(θ) θ∈Θ
(5.1)
puisqu’un problème de minimisation peut être vu comme un problème de maximisation en étudiant −h ou 1/h plutôt que h. 1 De même que le problème d’intégration étudié au Chapitre 3, le problème d’optimisation (5.1) peut être résolu de façon numérique ou stochastique. Du point de vue numérique, la performance dépend fortement des propriétés analytiques de la fonction cible (par exemple si elle est convexe, bornée ou régulière), alors que les propriétés de h jouent un rôle moindre dans les approches à base de simulations. Ainsi, si h est trop complexe pour permettre une étude analytique ou si le domaine Θ est trop irrégulier, on choisira plutôt l’approche stochastique. Dans tout ce chapitre, on s’intéresse à la recherche d’extrema à l’aide de techniques stochastiques, mais il faut noter qu’en général, les problèmes d’optimisation sont plus difficiles à résoudre que les problèmes d’intégration. Plus précisément, les problèmes d’optimisation sont de nature beaucoup plus locale que ceux d’intégration, du moins du point de vue computationnel (d’un point de vue mathématique, l’information sur les extrema d’une fonction est aussi globale que celle sur ses intégrales). Autrement dit, il est plus difficile de localiser un point extrême unique sur un domaine que de calculer la valeur moyenne d’une fonction régulière sur le même domaine. Notons que, en accord avec le reste du livre, ce chapitre traite de problèmes d’optimisation liés aux statistiques : les domaines considérés sont donc presque toujours continus. On ne traitera pas ici des problèmes combinatoires difficiles menant à de l’optimisation sur un ensemble fini (mais grand), comme le problème du voyageur de commerce (à ce sujet, voir par exemple Spall, 2003; Robert & Casella, 2004).
1. Le choix de la transformation est sans importance d’un point de vue mathématique, puisque l’argument de l’extremum ne change pas, mais ce choix peut avoir un impact fort sur la méthode d’approximation utilisée pour trouver cet argument. La transformation doit donc être choisie avec soin.
Chapitre 5. Optimisation par les méthodes de Monte-Carlo
5.2
101
Méthodes d’optimisation numérique
Plusieurs fonctions de résolution de problèmes d’optimisation sont incluses dans R. La plus simple est optimize (ou optimise), pour l’optimisation sur un espace à une dimension. Exemple 5.1 (Maximisation d’une vraisemblance de Cauchy) On cherche à maximiser la vraisemblance d’un échantillon suivant une loi de Cauchy C(θ, 1) : n 1 . (θ|x1 , . . . , xn ) = 2 1 + (x i − θ) i=1 La suite (en n) des maxima de la vraisemblance (i.e. des estimateurs du maximum de vraisemblance, EMV) converge vers θ∗ = 0 quand n tend vers +∞, ce qui se voit dans la Figure 5.1 (gauche) correspondant au code > > > + +
xm=rcauchy(500) f=function(y){-sum(log(1+(x-y)^2))} for (i in 1:500){ x=xm[1:i] mi=optimise(f, interval=c(-10, 10), max=T)$max}
qui maximise la log-vraisemblance séquentiellement quand la taille de l’échantillon augmente. Néanmoins, si on étudie la vraisemblance directement (au lieu de la log-vraisemblance), optimise finit par produire une suite divergente parce que la vraisemblance devient trop petite aux alentours de n = 300 observations, alors que les suites d’EMV sont identiques jusqu’à ce point pour les deux méthodes. Si on remplace la vraisemblance régulière par une version perturbée, par exemple > f=function(y){-sin(y*100)^2-sum(log(1+(x-y)^2))} la fonction optimise devient beaucoup moins stable, comme on peut le voir dans la Figure 5.1 (droite) : les deux suites d’EMV (correspondant respectivement à la log-vraisemblance et à la vraisemblance) ne sont plus identiques.
La sortie de optimise est une liste dont les entrées sont intitulées “minimum” (ou “maximum”) et “objective”. Malheureusement, et contrairement aux conventions mathématiques, “minimum” désigne l’emplacement du minimum de la fonction (autrement dit, l’argument du minimum) alors que “objective” donne la valeur du minimum de la fonction (le minimum lui-même) ! De même, nlm est une fonction générique de R qui cherche le minimum d’une fonction à l’aide de l’algorithme de Newton–Raphson, fondée sur la relation de
arg
0.5
−1.0
0.0 −1.0
arg
0.0 0.5 1.0
Méthodes de Monte-Carlo avec R
1.0
102
0
100
200
300
400
0
100
200
300
400
Fig. 5.1 – (gauche) Suite d’EMV correspondant à 500 simulations d’une distribution de Cauchy C(0, 10), obtenue en appliquant optimize à la log-vraisemblance (trait foncé) et à la vraisemblance (trait plus clair) ; (droite) les même suites avec une vraisemblance perturbée. récurrence
θi+1
∂2h = θi − (θi ) ∂θ∂θT
−1
∂h (θi ) ∂θ
— où la matrice des dérivées secondes est appelée Hessienne et le vecteur des dérivées premières est le gradient (parfois noté ∇h). Cette méthode est parfaite lorsque h est de degré 2 mais elle peut aussi se dégrader lorsque h est fortement non linéaire et elle ne marche clairement pas lorsque le domaine Θ est irrégulier. De plus, si h possède plusieurs minima, cette méthode dépend évidemment de la valeur initiale θ0 . Exemple 5.2 (Vraisemblance pour une loi mélange) La vraisemblance associée à la loi mélange 1 3 N (μ1 , 1) + N (μ2 , 1) 4 4
(5.2)
est bimodale, comme on peut le voir dans la Figure 5.2, qui utilise un échantillon de 400 observations de ce modèle simulées avec μ1 = 0 et μ2 = 2.5 et obtenu à l’aide du code > da=rbind(rnorm(10^2), 2.5+rnorm(3*10^2)) > like=function(mu){ + sum(log((.25*dnorm(da-mu[1])+.75*dnorm(da-mu[2]))))} En appliquant la fonction contour à une grille de points où la log-vraisemblance like est calculée, on obtient la représentation de la Figure 5.2. Quand on utilise nlm, on arrive à l’un des deux modes après quelques itérations, selon la valeur
103
−2
−1
0
1
μ2
2
3
4
5
Chapitre 5. Optimisation par les méthodes de Monte-Carlo
−2
−1
0
1
2
3
4
5
μ1
Fig. 5.2 – Six suites de Newton–Raphson pour la vraisemblance associée à une loi a posteriori de mélange convergeant vers l’un des deux modes en fonction de la valeur initiale et fondées sur un échantillon de 400 observations du mélange gaussien (5.2) avec μ1 = 0 et μ2 = 2.5. du point de départ et les valeurs intermédiaires de la suite de Newton–Raphson peuvent être visualisées ainsi : > > > + >
sta=c(1,1) mmu=sta for (i in 1:(nlm(like, sta)$it)) mmu=rbind(mmu, nlm(like, sta, iter=i)$est) lines(mmu, pch=19, lwd=2)
où on a remplacé la fonction like par son inverse puisque nlm produit un minimum local. Notons que certains points de départ produisent des avertissements : NA/Inf replaced by maximum positive value in: nlm(like, sta) qui indiquent que la Hessienne (ou plutôt l’approximation numérique de la Hessienne) n’est pas inversible en la valeur courante. Les suites présentées dans la Figure 5.2 aboutissent toutes à l’un des deux modes, mais en suivant des tracés fortement non linéaires. Par exemple, le point de départ (−1, 1) correspond à un gradient très marqué et dépasse donc le mode principal (−0.68, 1.98) pour aboutir au mode secondaire (de vraisemblance plus faible). Même si toutes les suites présentées dans cette figure convergent, un point de départ plus éloigné des modes peut produire une suite divergente. Exercice 5.1 Écrire un code R qui produise réellement un échantillon de 400 observations de (5.2), plutôt que de tirer deux échantillons gaussiens, de tailles respectives 100 et 300, comme ci-dessus. Comparer la forme de la log-vraisemblance dans les deux cas.
104
Méthodes de Monte-Carlo avec R
La fonction nlm est une méthode numérique permettant de déterminer le minimum de son premier argument f. Elle n’est pas exacte et dépend de sa valeur initiale p, mais nous insistons sur le fait que nlm est déterministe. Ainsi, répéter une utilisation de nlm avec la même valeur initiale p produira toujours la même suite de Newton–Raphson. Par contre, si la cible h est remplacée par une transformée monotone — qui laisse donc le vrai mode inchangé — la suite de Newton–Raphson est différente et peut diverger dans certains cas. Exercice 5.2 Dans le contexte de l’Exemple 5.2, utiliser 1/like comme cible de nlm. Comparer la suite de Newton–Raphson obtenue avec celle produite en utisant -like et le même point de départ.
Il existe deux utilisations des techniques de simulation pour la résolution d’un problème d’optimisation. La première approche correspond à une méthode d’exploration stochastique, quand une fonction h est maximisée approximativement en étudiant une suite aléatoire de points. Les propriétés de la fonction jouent un rôle moindre dans ce cas : l’aspect de Monte-Carlo est plus lié à l’exploration de l’espace Θ, même si, par exemple, certaines propriétés de h peuvent être utiles pour accélérer l’exploration. La deuxième approche part d’une approximation stochastique de la fonction à maximiser h ; cette étape peut aussi être vue comme un préliminaire au processus d’optimisation à proprement parler. Ici, l’aspect de Monte-Carlo utilise les propriétés probabilistes de la fonction h pour produire une ˆ et ne se préoccupe pas de l’exploration de Θ. Bien enapproximation acceptable h tendu, les deux approches peuvent être combinées, par exemple dans les méthodes d’EM simulé (Section 5.4.4). Cette introduction aux méthodes d’optimisation numérique n’utilise que les fonctions les plus basiques de R ; elle est très brève et forcément incomplète. Il existe une littérature abondante sur ce sujet et nous conseillons par exemple Spall (2003) comme point de départ.
5.3 5.3.1
Recherche stochastique Une solution basique
Une façon naturelle, bien que rudimentaire, d’utiliser la simulation pour approcher la solution à (5.1) est de simuler des points dans Θ selon une distribution arbitraire f positive partout dans Θ jusqu’à ce qu’une valeur suffisamment élevée de h(θ) soit observée. Cette solution peut être très inefficace si f est choisie sans lien avec h, mais avec un nombre infini de simulations et certaines conditions de régularité, notamment la compacité du domaine Θ, la méthode converge presque sûrement (voir, par exemple, Spall, 2003, Théorème 2.1). Par exemple, si Θ est borné, on peut simuler à partir d’une distribution uniforme sur Θ, u1 , . . . , um ∼ UΘ et prendre h∗m = max(h(u1 ), . . . , h(um )) comme approximation de la solution à (5.1).
105
3.2 2.6
2.8
3.0
h(θ)
3.4
3.6
3.8
Chapitre 5. Optimisation par les méthodes de Monte-Carlo
0
200
400
600
800
1000
Iterations
Fig. 5.3 – Étendue des valeurs de 103 suites de maxima successifs obtenus en échantillonnant de façon uniforme pour 103 itérations. La ligne grise en haut du graphique correspond au vrai maximum. Exemple 5.3 (Une première maximisation de Monte-Carlo) Reprenons la fonction simple et régulière mais très variable h(x) = [cos(50x) + sin(20x)]2 définie sur [0, 1] et introduite dans l’Exemple 3.3. Un appel à la fonction optimise permet de placer le maximum de cette fonction en x = 0.379 où elle prend la valeur h(x ) = 3.8325. Si on cherche à estimer la variabilité d’un échantillonneur uniforme, on peut utiliser plusieurs suites uniformes, comme dans > > > > + >
rangom=h(matrix(runif(10^6), ncol=10^3)) monitor=t(apply(rangom, 1, cummax)) plot(monitor[1, ], type="l", col="white") polygon(c(1:10^3, 10^3:1), c(apply(monitor, 2, max), rev(apply(monitor, 2, min))), col="grey") abline(h=optimise(h, int=c(0, 1), max=T)$ob)
dont le résultat est représenté dans la Figure 5.3. La valeur initiale h(u1 ) de la suite varie beaucoup, mais l’étendue des valeurs se réduit très rapidement et, après 103 itérations, la pire des 103 suites parallèles est à 0.24 du vrai maximum. Une distribution uniforme sur le domaine Θ n’est pertinente que si Θ a une forme régulière. Autrement, il est plus efficace de simuler à partir d’une distribution uniforme sur un domaine contenant Θ et de rejeter les simulations se situant hors de Θ. Exercice 5.3 On définit Θ sur R2 par la contrainte x2 (1 + sin(3y) cos(8x)) + y 2 (2 + cos(5x) cos(8y)) ≤ 1 . Proposer une simulation simple sur un domaine plus large que Θ et estimer la performance de cette méthode en calculant la proportion moyenne de points rejetés.
106
Méthodes de Monte-Carlo avec R
Bien entendu, cette solution aveugle — aveugle au sens où elle ne prend pas en compte h — devient vite peu pratique lorsque la dimension ou la complexité du problème augmente. Par exemple, dans un contexte bayésien, quand la taille n d’un échantillon iid x1 , . . . , xn de loi f (x|θ) augmente, la distribution a posteriori associée π(θ|x1 , . . . , xn ) devient de plus en plus concentrée autour du mode, qui est donc de plus en plus difficile à approcher par cette méthode. Cependant, ceci n’est pas toujours le cas, comme le démontre l’exemple suivant. Exemple 5.4 (Suite de l’Exemple 5.1) Reprenons le modèle de Cauchy de l’Exemple 5.1. On peut suivre la différence entre les solutions produites par optimise et par un échantillonnage uniforme sur [−5, 5] quand la taille de l’échantillon augmente de n = 1 à n = 5001. Dans la Figure 5.4 (haut), on a représenté en abscisse la valeur de l’échantillon uniforme avec la vraisemblance la plus élevée et en ordonnée le vrai argument θ (produit par optimise) ; on n’observe pas d’augmentation significative de l’erreur près de 0 parce qu’il y a plus de points dans ce voisinage. De même, la Figure 5.4 (bas) montre que l’erreur relative entre le vrai maximum et l’approximation sur l’échantillon uniforme n’augmente pas avec la taille de l’échantillon. 0.15
●
●
●
0.05
θ^
● ●
● ● ● ● ●●● ● ●●● ●● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ●●●●● ● ●● ● ● ● ● ● ●● ● ●●● ● ● ● ●● ●● ● ● ● ● ●● ● ● ● ● ● ●● ●● ●● ●● ● ● ●●● ●
●
−0.05
●
●
●
● ● ● ●
●●
−0.05
0.00
0.05
0.10
0.15
0.0020 0.0010 0.0000
Relative error
θ0
0
1000
2000
3000
4000
5000
Sample size
Fig. 5.4 – Comparaison des maximisations numérique et stochastique d’une vraisemblance de Cauchy selon la taille de l’échantillon : (haut) évaluations numérique et stochastique, respectivement, le long de la diagonale ; (bas) erreur relative de l’évaluation stochastique par rapport à l’évaluation numérique comme fonction de la taille de l’échantillon.
Chapitre 5. Optimisation par les méthodes de Monte-Carlo
107
Il est donc plus efficace de concevoir l’expérience de simulation en (forte) relation avec h et avec le domaine Θ. De façon intuitive, il paraît logique d’augmenter la probabilité de simuler dans des régions où h prend de grandes valeurs et de décroître cette probabilité dans les régions où h prend de petites valeurs. Cela implique de créer une loi de probabilité qui dépende de h d’une façon non linéaire mais avec des modes identiques ou proches. Clairement, si h est positive et si h(θ) dθ < +∞, Θ
résoudre (5.1) est alors équivalent à trouver les modes de la densité proportionnelle à h. De façon générale, toute densité H ayant les mêmes maxima que h est un choix potentiellement intéressant, par exemple H(θ) ∝ exp(h(θ)/T ) pour tout T > 0 tel que exp(h(θ)/T ) est intégrable.idxspente des températures Le paramètre T , qu’on appelle la température, peut être calibré librement et peut être choisi pour accélérer la convergence ou pour éviter les maxima locaux, comme nous le verrons par la suite. Le problème (5.1) étant alors exprimé en des termes statistiques, il est naturel d’échantillonner (θ1 , . . . , θm ) suivant H et d’appliquer une méthode standard d’estimation du mode sur cet échantillon (ou simplement de comparer les h(θi )). Dans certains cas, il peut être plus pratique de décomposer H(θ) en H(θ) = H1 (θ)H2 (θ) et de simuler suivant H1 seulement. Dans les applications statistiques, h est le plus souvent une vraisemblance. Simuler suivant h revient donc à simuler suivant la distribution a posteriori associée à la distribution a priori uniforme. Exemple 5.5 (Suite de l’Exemple 5.4) On peut clairement interpréter la vraisemblance comme une distribution a posteriori sur θ. Néanmoins, ce n’est pas une distribution standard et il nous faut un substitut plus facile à manier ! Vu que le produit des densités de Cauchy revient à l’inverse d’un polynome (en θ) de degré 2n, on peut prendre une loi de Student à (n − 1)/2 degrés de liberté, de moyenne la médiane empirique — puisque l’instabilité de la moyenne d’une loi de Cauchy est bien connue — et de paramètre d’échelle l’étendue interquartile. On peut comparer la vraie distribution a posteriori et l’approximation via > > > > + + > >
cau=rcauchy(10^2) mcau=median(cau) rcau=diff(quantile(cau, c(.25, .75))) f=function(x){ z=dcauchy(outer(x, cau, FUN="-")) apply(z, 1, mean)} fcst=integrate(f, from=-20, to=20) ft=function(x){f(x)/fcst}
Méthodes de Monte-Carlo avec R
0.05
0.10
0.15
108
−10
−5
0
5
10
Fig. 5.5 – Comparaison de la loi a posteriori (en noir) d’un paramètre de location de Cauchy basée sur 101 observations et d’une approximation par une loi de Student (en pointillés). > g=function(x){dt((x-mcau)/rcau, df=49)/rcau} > curve(ft, from=-10, to=10) > curve(g, add=T) et on voit dans la Figure 5.5 que l’approximation est acceptable. (Dans la fonction f, notons l’emploi de la fonction R outer, que nous avions déjà mentionnée dans l’Exemple 3.6. Cette fonction nous permet d’appliquer la fonction f à un vecteur, voire une matrice et donc d’utiliser curve.) Comme prévu, l’approximation de Student produit des évaluations du maximum de vraisemblance qui convergent plus rapidement (en nombre de simulations), comme on le voit dans l’expérience de Monte-Carlo suivante, que vous pouvez facilement reproduire : > > > > > > + > +
unisan=matrix(f(runif(5*10^4, -5, 5)), ncol=500) causan=matrix(f(rt(5*10^4, df=dft)*rcau+mcau), ncol=500) unimax=apply(unisan, 2, cummax)[10:10^2, ] caumax=apply(causan, 2, cummax)[10:10^2, ] plot(caumax[, 1], col="white", ylim=c(.8, 1)*max(causan)) polygon(c(10:10^2, 10^2:10), c(apply(unimax, 1, max), rev(apply(unimax, 1, min))), col="grey") polygon(c(10:10^2, 10^2:10), c(apply(caumax, 1, max), rev(apply(caumax, 1, min))), col="wheat")
De même qu’on pourrait diminuer la température pour emprisonner les simulations dans des valeurs de plus en plus élevées de la fonction cible h, il serait possible de répéter l’expérience sur un domaine plus réduit, si ce n’est que l’approximation de Student ne préserve pas le mode de h ; cette stratégie est donc déconseillée dans cette situation.
Chapitre 5. Optimisation par les méthodes de Monte-Carlo
109
Exercice 5.4 En reprenant la fonction h(x) définie dans l’Exemple 5.3, déduire de la borne h(x) ≤ 2 ∗ (| cos(50x)| + | sin(20x)|) une manière pratique de simuler suivant une loi proportionnelle à h. Comparer la variabilité de l’évaluation de max h(x) basée sur 103 simulations suivant h avec la variabilité de cette même évaluation basée sur 103 simulations suivant une loi uniforme.
Cette solution est complètement naturelle et, formellement, elle produit une méthode convergente, mais son implémentation est loin d’être évidente. Trouver une densité H qui partage les modes de h et suivant laquelle il est facile de simuler, peut être délicat lorsque h est une fonction complexe. Les solution que nous produirons dans les Sections 5.3.2 et 5.3.3 infèrent en fait sur h localement (sur un voisinage des simulations actuelles suivant H), dans le même esprit que les algorithmes MCMC des Chapitres 6 et 7. Exemple 5.6 (Minimisation d’une fonction complexe) Considérons le problème de la minimisation de la fonction (construite artificiellement) dans R2 h(x, y)
=
(x sin(20y) + y sin(20x))2 cosh(sin(10x)x) + (x cos(10y) − y sin(10x))2 cosh(cos(20y)y),
dont le minimum global est 0, atteint en (x, y) = (0, 0). Cette fonction possède de nombreux minima locaux, comme le montre la Figure 5.6, obtenue via le code > + > > > > +
h=function(x, y){(x*sin(20*y)+y*sin(20*x))^2*cosh(sin(10*x) *x)+(x*cos(10*y)-y*sin(10*x))^2*cosh(cos(20*y)*y)} x=y=seq(-3, 3, le=435) #definit une grill pour persp z=outer(x, y, h) par(bg="wheat", mar=c(1, 1, 1, 1)) #bg vient de background persp(x, y, z, theta=155, phi=30, col="green4", ltheta=-120, shade=.75, border=NA, box=FALSE)
et les conditions sous lesquelles les méthodes de minimisation standard garantissent l’obtention du minimum global ne sont donc pas satisfaites. D’un autre côté, on peut simuler suivant la distribution sur R2 de densité proportionnelle à exp(−h(x, y)) bien que ce ne soit pas une distribution standard, soit avec un algorithme de rejet basé sur une loi uniforme (puisque h est positive) — ce qui irait à l’encontre du principe de simuler suivant h plutôt que suivant la loi uniforme sur Θ ! — soit par des techniques MCMC plus avancées introduites dans le Chapitre 6.
110
Méthodes de Monte-Carlo avec R
Fig. 5.6 – Représentation via persp de la fonction h(x, y) (Exemple 5.6) sur [−3, 3]2 .
5.3.2
Méthodes de gradient stochastique
Simuler directement suivant la fonction cible H définie dans la section précédente est souvent très difficile. Une autre approche stochastique de la maximisation de h est l’exploration locale de la surface de h (c’est-à-dire qu’on définit une suite {θj }j où θj+1 dépend de θj ) plutôt que de façon indépendante comme dans l’algorithme de recherche stochastique basique. Souvent, on choisit que θj+1 dépende de θj linéairement, au sens où (5.3) θj+1 = θj + j , où j est une perturbation locale sur la valeur actuelle. En termes mathématiques, cela fait de la suite {θj }j une chaîne de Markov. Il existe un lien entre ces méthodes et les algorithmes MCMC (Chapitres 6 et 7), mais la propriété de Markov est moins importante dans cette situation simplement parce que les propriétés mathématiques qui justifient la convergence vers un maximum global sont trop avancées pour être étudiées ici (voir, par ex., Hàjek, 1988 ou Haario & Sacksman, 1991). Pour l’implantation de la mise à jour locale dans (5.3), la perturbation j peut être simulée suivant une loi arbitraire, par exemple une loi Np (0, σ 2 Ip ) si Θ ⊂ Rp . Toutefois, puisque nous cherchons le maximum de h, l’utilisation d’information sur h dans la construction de la distribution de la perturbation augmentera forcément l’efficacité de la méthode. En particulier, il paraît logique de favoriser des
Chapitre 5. Optimisation par les méthodes de Monte-Carlo
111
mouvements qui augmentent h plutôt que des mouvements qui diminuent h, mais ces derniers ne doivent pas être impossibles si on veut éviter les maxima locaux. Une approche naturelle est d’utiliser le gradient de h, ∇h, s’il est disponible. En optimisation numérique, la méthode du gradient est une approche numérique et déterministe du problème d’optimisation (5.1), lié à la méthode de Newton– Raphson présentée dans la Section 5.2. Elle produit la suite {θj } définie par θj+1 = θj + αj ∇h(θj ) ,
αj > 0 ,
(5.4)
qui converge vers la solution exacte θ ∗ de (5.1) lorsque le domaine Θ ⊂ Rd et la fonction (−h) sont tous deux convexes — ce qui implique qu’il existe un maximum unique — et pour divers choix de suites décroissantes {αj } (voir Thisted, 1988). Pour des problèmes moins réguliers, la suite des gradients restera sans doute coincée dans un extremum local de la fonction h. Les méthodes de gradient stochastique tirent parti de cette méthode pour construire la perturbation dans (5.3). Par exemple, la proposition de différence finie est de construire un substitut numérique du vrai gradient ∇h(θj ) ≈
h(θj + βj ζj ) − h(θj + βj ζj ) Δh(θj , βj ζj ) ζj = ζj , 2βj 2βj
où (βj ) est une deuxième suite décroissante et ζj suit une loi uniforme sur la sphère unité ||ζ|| = 1. Contrairement à la méthode déterministe, la mise à jour θj+1 = θj +
αj Δh(θj , βj ζj ) ζj 2βj
(5.5)
ne suit pas la pente de h la plus raide en θj puisqu’elle choisit une direction au hasard, mais cette propriété constitue généralement un point positif puisqu’elle peut permettre d’éviter d’être coincé en un maximum local ou en un point col de h. La convergence ou non de la suite {θj } définie en (5.5) vers l’argument θ∗ de (5.1) dépend fortement du choix des suites {αj } et {βj }. Par exemple, αjdoit décroître vers 0 suffisamment lentement pour que la série correspondante j αj diverge, tandis que βj doit décroître encore plus lentement afin que la série j (αj /βj )2 converge (Spall, 2003, Chapter 6). Exemple 5.7 (Suite de l’Exemple 5.6) On applique la construction itérative (5.5) à la fonction multimodale h(x, y) avec différentes suites de αj et de βj afin de tester leur impact. On peut définir un temps d’arrêt naturel pour cet algorithme en vérifiant la stabilisation de la suite des θj , ce qui mène à l’implémentation en R > start=c(.65, .8) > theta=matrix(start, ncol=2)
112
Méthodes de Monte-Carlo avec R
> diff=iter=1 > while (diff>10^-5){ + zeta=rnorm(2) + zeta=zeta/sqrt(t(zeta)%*%zeta) + grad=alpha[iter]*zeta*(h(theta[iter, ]+beta[iter]*zeta)+ h(theta[iter, ]-beta[iter]*zeta))/beta[iter] + theta=rbind(theta, theta[iter, ]+grad) + dif=sqrt(t(grad)%*%grad) + iter=iter+1} où les suites de αj et de βj doivent être ajoutées. Lorsque nous avons fait tourner ce code R, il a en fait fallu inclure une boucle de sécurité
> scale=sqrt(t(grad)%*%grad) > while (scale>1){ + zeta=rnorm(2);zeta=zeta/sqrt(t(zeta)%*%zeta) + grad=alpha[iter]*zeta*(h(theta[iter, ]+beta[iter]*zeta)+ h(theta[iter, ]-beta[iter]*zeta))/beta[iter] + scale=sqrt(t(grad)%*%grad)} afin de se prémunir contre des évaluations divergentes du gradient grad, divergences qui arrivent parfois et provoquent l’interruption du programme. Nous avons testé les suites suivantes : Scenario
1
2
3
4
αj βj
1/ log(j + 1) 1/ log(j + 1).1
1/100 log(j + 1) 1/ log(j + 1).1
1/(j + 1) 1/(j + 1).5
1/(j + 1) 1/(j + 1).1
Notons qu’à chaque fois, la seconde suite décroît beaucoup plus lentement que la première. Vous pouvez vérifier qu’avec des suites (βj ) plus rapides, la méthode ne converge pas nécessairement vers le minimum global. La Figure 5.7 illustre à l’aide de réalisations uniques (que nous vous encourageons à répliquer) que, selon la vitesse de convergence de la suite (αj ), le minimum global est correctement approché ou non. Dans le scénario 1, où αj et βj décroissent toutes deux très lentement, la perturbation semble ne pas avoir assez d’énergie pour atteindre le minimum global, alors que multiplier (αj ) par 100 donne une suite θj qui ne se stabilise pas assez vite pour rester au minimum global (comme on peut le vérifier avec theta[iter,]). Pour la décroissance géométrique des scénarios 3 et 4, la différence d’exposant dans βj n’a pas d’impact significatif sur la capacité à découvrir le vrai minimum de h.
Chapitre 5. Optimisation par les méthodes de Monte-Carlo
1.0 0.5 0.0 −1.0
−0.5
0.0
0.5
1.0
−1.0
−0.5
0.0
0.5
x
scenario 3
scenario 4
1.0
0.0 −0.5 −1.0
−1.0
−0.5
y
0.0
0.5
1.0
x
0.5
1.0
−1.0
y
scenario 2
−0.5
y
0.0 −1.0
−0.5
y
0.5
1.0
scenario 1
113
−1.0
−0.5
0.0 x
0.5
1.0
−1.0
−0.5
0.0
0.5
1.0
x
Fig. 5.7 – Réalisations du chemin de gradient stochastique pour quatre choix différents des suites (αj ) et (βj ) avec la même valeur initiale (0.65, 0.8) : le scénario 1 correspond à (αj , βj ) = (1/100 log(j +1), 1/ log(j +1).1 ), le scénario 2 correspond à (αj , βj ) = (1/ log(j + 1), 1/ log(j + 1).1 ), le scénario 3 correspond à (αj , βj ) = (1/(j+1), 1/(j+1).5 ) et le scénario 4 correspond à (αj , βj ) = (1/(j+1), 1/(j+1).1 ). La fonction à minimiser h a été définie dans l’Exemple 5.6 et le minimum de h est atteint au centre (0, 0). Exercice 5.1 Reproduisez l’analyse de l’Exemple 5.7 ci-dessus sur l’impact de la dynamique des suites (αj ) et (βj ) sur la convergence de la méthode des différences finies dans le cas de la vraisemblance de la loi de mélange de l’Exemple 5.2.
5.3.3
Recuit simulé
Cette méthode alternative construit la suite de (5.3) en simulant les j d’une façon complètement différente. Plutôt que de chercher à suivre la pente de la fonction h (ou d’une transformée monotone H), le recuit simulé définit une suite {πt } de densités dont le maximum est atteint au même point que le maximum de h et qui sont de plus en plus concentrées autour de ce point. Chaque θt de la suite est ensuite simulé suivant la densité πt selon un mécanisme de mise à jour spécifique.
114
Méthodes de Monte-Carlo avec R
Le nom de cet algorithme est emprunté à la métallurgie (voir Robert & Casella, 2004 et Spall, 2003 pour plus de détails). La méthode a été introduite par Kirkpatrick et al. (1983) et les aspects théoriques ont été discutés par Geman & Geman (1984) et Van Laarhoven & Aarts (1987) pour le cas discret et par Haario & Sacksman (1991) et Del Moral & Miclo pour le cas continu. Nous ne traiterons pas des questions de convergence dans ce livre vu la complexité du problème (voir, par exemple, l’Annexe au Chapitre 8 de Spall, 2003). La construction de la suite de densités {πt } est évidemment au centre de l’élaboration d’un algorithme de recuit simulé. Le choix le plus standard est basé sur les transformations de Boltzman–Gibbs de h, πt (θ) ∝ exp(h(θ)/Tt ) ,
(5.6)
où la suite des températures, {Tt }, est décroissante (sous l’hypothèse que le côté droit de (5.6) est intégrable). En effet, il est clair que, quand Tt décroît vers 0, les valeurs simulées suivant πt sont concentrées dans un voisinage de plus en plus étroit du maximum (ou des maxima) de h. L’avantage du recuit simulé par rapport à une approche de simulation traditionnelle comme dans la Section 5.3.1 est que cette technique ne simule pas un échantillon complet de πt à chaque itération t mais qu’elle accélère la convergence en simulant une seule réalisation de πt . Ainsi, elle met à jour à la fois la suite et la loi cible à chaque itération t. Le choix de (5.6) est une solution générale pour concentrer (en t) la distribution πt autour des maxima d’une fonction arbitraire h, mais d’autres possibilités existent dans des cadres différents. Par exemple, lorsqu’on maximise une vraisemblance (θ|x), les pseudo-distributions a posteriori πt (θ|x) ∝ (θ|x)mt π0 (θ), associées à une suite croissante {mt } et à une distribution a priori arbitraire π0 , ont la même propriété. Cette autre option est bien entendu plus intuitive d’un point de vue statistique puisqu’elle revient à utiliser une vraisemblance régulière avec un échantillon répliqué (mt −1) fois ; elle a été présentée par Robert (1993) sous le nom d’a priori réactualisé (voir aussi Robert & Casella, 2004, Section 5.2.4) et a été étudiée pour des modèles à variables latentes par Doucet et al. (2002) sous l’acronyme SAME (State Augmentation for Marginal Estimation, augmentation de l’espace pour l’estimation marginale). (Cet algorithme a été redécouvert sous divers noms par Gaetan & Yao, 2003, Lele et al., 2007 ou encore Jacquier et al., 2007.) Les algorithmes de simulation utilisés en analyse bayésienne, comme ceux présentés dans les Chapitres 6 et 7, peuvent bien entendu être recyclés dans cet objectif. Exercice 5.2 Pour la vraisemblance de Cauchy de l’Exemple 5.1, basée sur un échantillon simulé de taille n = 100, montrez que la pseudo-distribution a posteriori πm (θ|x) ∝ (θ|x)m est définie pour tout entier m > 0. Utilisez integrate pour normaliser πm et démontrez graphiquement que πm va en se concentrant quand m augmente.
Deux problèmes pratiques qui vont à l’encontre de l’implémentation de cet algorithme (qui serait, sinon, particulièrement séduisant) sont (a) le besoin de simuler suivant πt et (b) la sélection de la courbe des températures {Tt }. Ce second point
Chapitre 5. Optimisation par les méthodes de Monte-Carlo
115
dépend fortement du problème, mais le premier admet une solution générale, liée à l’algorithme de Metropolis–Hastings proposé par Metropolis et al. (1953) et que nous étudions plus en détail dans le Chapitre 6. La mise à jour de θt à θt+1 est en effet fondée sur une étape de Metropolis–Hastings : ζ est généré suivant une distribution à densité symétrique g et la nouvelle valeur θt+1 est générée selon θt + ζ avec probabilité ρ = exp(Δh/Tt ) ∧ 1 , θt+1 = avec probabilité 1 − ρ, θt où Δh = h(ζ + θt ) − h(θt ). Nous ne cherchons pas ici à donner des résultats de convergence pour cet algorithme et réservons pour le prochain chapitre la preuve que cette transition préserve la distribution πt (sous réserve qu’elle existe) comme distribution stationnaire. Nous nous concentrons au contraire ici sur le lien avec le problème de maximisation. Plutôt que de chercher un gradient déterministe ou stochastique, l’algorithme propose une perturbation symétrique de la valeur actuelle, θt + ζ. Si cette perturbation augmente h (soit donc si h(θt + ζ) ≥ h(θt )), la nouvelle valeur est automatiquement acceptée. A l’inverse, si h(θt + ζ) < h(θt ), ce déplacement peut tout de même être accepté avec une probabilité d’acceptation de ρ > 0. Sinon, une nouvelle perturbation θt + ζ est créée et testée (du point de vue de la maximisation, le fait que θt+1 = θt n’a pas vraiment d’importance, sauf pour la détermination du temps d’arrêt). En autorisant des mouvements aléatoires au cours desquels h peut décroître, la méthode du recuit simulé peut explorer des fonctions multimodales et échapper à l’attraction de modes locaux, contrairement à la méthode du gradient déterministe (et, jusqu’à un certain point, du gradient stochastique). Une description algorithmique du recuit simulé est donc
Algorithme 2 (Recuit simulé) À l’étape t, 1. Simuler ζ ∼ g(ζ); 2. Accepter θt+1 = θt + ζ avec probabilité ρt = exp{Δht /Tt } ∧ 1; prendre θt+1 = θt sinon.
La densité g est symétrique (en 0) mais autrement presque arbitraire. Une version R de cet algorithme est associée à un générateur de nombres aléatoires suivant g, randg, comme dans l’Algorithme 1, > theta=rep(theta0, Nsim) > hcur=h(theta0)
116
Méthodes de Monte-Carlo avec R
> xis=randg(Nsim) > for (t in 2:Nsim){ + prop=theta[t-1]+xis[t] + hprop=h(prop) + if (Temp[t]*log(runif(1)) > > > + + + + + + + + +
x=runif(1) hval=hcur=h(x) diff=iter=1 while (diff>10^(-4)){ prop=x[iter]+runif(1, -1, 1)*scale if ((prop>1)||(prop<0)|| (log(runif(1))*temp[iter]>h(prop)-hcur)) prop=x[iter] x=c(x, prop) hcur=h(prop) hval=c(hval, hcur) if ((iter>10)&&(length(unique(x[(iter/2):iter]))>1)) diff=max(hval)-max(hval[1:(iter/2)]) iter=iter+1}
Chapitre 5. Optimisation par les méthodes de Monte-Carlo
117
La contrainte utilisant la commande unique annule le temps d’arrêt lorsqu’aucune perturbation n’a été acceptée dans la seconde moitié de la suite, ce qui indique que l’échelle est peut-être mal choisie. (Notons que la mise à jour de temp et scale n’a pas besoin d’être incluse √ dans la boucle.) Pour une échelle en Tt et une température qui décroît en 1/ log(1 + t), la suite aboutit presque √ toujours en une valeur proche du vrai maximum. De même, une échelle en 5 Tt et une température qui décroît en 1/(1 + t)2 aboutit presque toujours au maximum global, comme on peut le remarquer dans la Figure 5.8 (où le dernier exemple a été obtenu après plusieurs tentatives infructueuses). Si on divise l’échelle par un facteur 10, on observe clairement une performance moindre de l’algorithme. Vous pouvez notamment vérifier à l’aide du code ci-dessus que plus Tt décroît vite vers 0, moins il y a de chances que la suite du recuit simulé quitte son mode initial. ●
●
3
3
●
●
2
h (x)
2
h (x)
●
● ● ●
1
1
● ●
● ●
0
0
● ●
0.0
0.2
0.4
0.6
0.8
1.0
0.0
0.2
0.4
x
0.6
0.8
1.0
x ● ● ● ●
●
3
3
●
●
2
h (x)
2
h (x)
●
1
1
●
● ●
0
0
●
●
0.0
0.2
0.4
0.6 x
0.8
1.0
0.0
0.2
0.4
0.6
0.8
1.0
x
Fig. 5.8 – Réalisations de quatre suites (xt , h(xt )) de recuit simulé pour Tt = √ 1/(t+1)2 et ρ = 5 Tt sur le graphe de la fonction h (en gris). Notons que les points montrés sur le graphe de h correspondent aux valeurs acceptées successivement dans l’Algorithme 2 et non à l’ensemble des itérations.
118
Méthodes de Monte-Carlo avec R
Il existe des résultats théoriques sur des rythmes de croissance des températures qui garantissent la convergence de l’algorithme de recuit simulé, mais ces résultats sont de peu d’utilité en pratique parce qu’ils dépendent de constantes de calibration inconnues et spécifiques à chaque problème. En général, on recommande que la température décroisse de façon logarithmique, par exemple comme Ti = Γ/ log i, plutôt que de façon géométrique (Ti = αi T0 ), même si ce choix induit des motifs de convergence très lents. Des stratégies adaptatives qui modifient la température et l’échelle après des épisodes d’apprentissage de plusieurs itérations et qui évaluent les taux d’acceptation et l’augmentation maximale sont donc à recommander, même si leur validation est surtout empirique. On pourrait croire que les problèmes d’optimisation dans des espaces finis sont des questions artificielles et superflues, mais les espaces utilisés par certains modèles peuvent être énormes. Par exemple, dans le problème du voyageur de commerce, la comparaison de tous les trajets entre n villes successives est de l’ordre de O(n!), ce qui revient à 10158 possibilités pour n = 100 villes. Dans le modèle de mélange de l’Exemple 5.2, le nombre de partitions d’un échantillon de 400 observations en deux groupes est 2400 (soit plus de 10120 ). En génétique, l’analyse de séquences ADN prend parfois en compte 600 000 nucléotides (A, C, G ou T), ce qui correspond à un espace de taille 4600000 si l’on considère toutes les combinaisons possibles. Exemple 5.9 (Recuit simulé pour un mélange gaussien) Avec la même vraisemblance de mélange gaussien que dans l’Exemple 5.2, on peut implanter l’algorithme de recuit simulé en utilisant par exemple la fonction R suivante : SA=function(x){ temp=scale=iter=dif=factor=1 the=matrix(x, ncol=2) curlike=hval=like(x) while (dif>10^(-4)){ prop=the[iter, ]+rnorm(2)*scale[iter] if ((max(-prop)>2)||(max(prop)>5)|| (temp[iter]*log(runif(1))>-like(prop)+curlike)) prop=the[iter, ] curlike=like(prop);hval=c(hval, curlike);the=rbind(the, prop) iter=iter+1;temp=c(temp, 1/10*log(iter+1)) ace=length(unique(the[(iter/2):iter, 1])) if (ace==1) factor=factor/10 if (2*ace>iter) factor=factor*10 scale=c(scale, max(2, factor*sqrt(temp[iter]))) dif=(iter<100)+(ace<2)+(max(hval)-max(hval[1:(iter/2)])) } list(theta=the, like=hval, ite=iter) }
Chapitre 5. Optimisation par les méthodes de Monte-Carlo
119
3
4
5
Comme on le voit dans la Figure 5.9, le résultat est in fine assez satisfaisant. La plupart des suites aboutissent en un voisinage du maximum. Il est aussi intéressant de remarquer que les suites ne sont pas sensibles à la proximité d’un mode donné, en ce qu’elles visitent souvent l’autre mode avant de converger. (Nous laissons au lecteur le soin de vérifier que d’autres réalisations des suites peuvent visiter le mode secondaire de la vraisemblance.)
2
● ● ●
●
1
μ2
●
−2
−1
0
●
−2
−1
0
1
2
3
4
5
μ1
Fig. 5.9 – Représentation de six suites de recuit simulé pour un rythme de croissance de la température égal à Tt = 1/ log(1 + t) fondées sur un échantillon de 400 observations du mélange gaussien (5.2) avec μ1 = 0 et μ2 = 2.5. Exercice 5.3 Dans le contexte de l’Exemple 5.9, construire une expérience de Monte-Carlo qui évalue la fréquence des visites dans les deux modes de la vraisemblance pour différents rythmes de croissance de la température.
Exemple 5.10 (Suite de l’Exemple 5.6) On peut aussi appliquer l’Algorithme 2 pour trouver le minimum de la fonction h de l’Exemple 5.6. La perturbation peut être gaussienne > prop=the[iter, ]+scale[iter]*rnorm(2) comme dans les exemples précédents, avec une échelle qui dépend de la température actuelle : > scale=min(.1, 5*factor*sqrt(temp[iter])) où factor dépend du taux d’acceptation de l’algorithme, comme dans l’Exemple 5.9. On voit dans la Figure 5.10 que les résultats changent en fonction du taux de décroissance de la température Ti , tant pour les minima obtenus (le lecteur
120
Méthodes de Monte-Carlo avec R
vérifiera que cela dépend de la simulation) que pour la puissance d’exploration des vallées de h des deux côtés de la zone centrale. (Notons que l’en-tête des quatre derniers graphiques a été obtenu avec > title(main=paste("min", format(-max(hval), dig=3), sep=" ")) où format permet de contrôler le nombre de chiffres affichés.)
0.5 y
0.0
y
0.0
0.5
1.0
min 5.1e−07
1.0
min 7.16e−25
●
−0.5 −1.0
−1.0
−0.5
●
−1.0
−0.5
0.0
0.5
1.0
−1.0
−0.5
x
0.0
0.5
1.0
0.5
1.0
x
0.5
0.5
1.0
min 2.24e−06
1.0
min 5.71e−08
y
0.0 −0.5
−0.5
y
0.0
●
−1.0
−1.0
●
−1.0
−0.5
0.0
0.5
1.0
−1.0
−0.5
x
0.0 x
Fig. 5.10 – Suites de recuit simulé pour quatre rythmes de croissance : Tt = (.95)t , Tt = 1/10(t + 1), Tt = 1/ log(1 + t) et Tt = 1/10 log(1 + t) et le point de départ (0.65, 0.8), cherchant à minimiser la fonction h de l’exemple 5.6. Le point clair au bout de la suite correspond à la valeur finale de la suite {θt } mais pas forcément au minimum de h.
5.4
Approximation stochastique
On s’intéresse maintenant aux méthodes qui utilisent de façon plus directe la simulation pour remplacer la fonction cible h, plutôt que de chercher à explorer rapidement le domaine à optimiser Θ. En particulier, en comparaison avec la section
Chapitre 5. Optimisation par les méthodes de Monte-Carlo
121
précédente, l’usage de ces méthodes provoque un niveau d’erreur supplémentaire due à l’approximation de h. Ce problème peut sembler trop spécialisé pour le moment, mais nous verrons dans la Section 5.4.2 que beaucoup de problèmes statistiques peuvent être exprimés en termes d’une fonction objectif h écrite sous la forme d’une espérance E[H(x, Z)]. C’est le cas des modèles à données manquantes que l’on rencontre dans beaucoup de situations pratiques. De plus, notons que des extensions artificielles (ou de démarginalisation) qui utilisent cette représentation ne sont que des astuces calculatoires et n’invalident pas pour autant l’inférence qui en résulte. Avant de nous attaquer à la description de ces méthodes, nous nous intéressons au problème spécifique de la maximisation de l’approximation de h.
5.4.1
Optimisation d’approximations de Monte-Carlo
Si h(x) peut être écrite sous la forme E[H(x, Z)] mais ne peut pas être calculée directement, une approximation de Monte-Carlo naturelle de h est 1 ˆ H(x, zi ), h(x) = m i=1 m
(5.7)
où les Zi sont tirés suivant la distribution conditionnelle f (z|x). Cette approximation produit un estimateur convergent de h(x) quel que soit x (autrement dit, on obtient un estimateur convergent ponctuellement), mais son utilisation dans des problèmes d’optimisation n’est pas recommandé puisque, l’échantillon des Zi étant différent pour chaque valeur de x, un algorithme d’optimisation itératif sur les x aboutira à une suite instable d’évaluations de h(x) et donc à beaucoup de bruit autour de arg max h(x). Exemple 5.11 (Analyse bayésienne d’un modèle probit simple) Dans l’analyse bayésienne d’un modèle probit simple, où une variable binaire Y ∈ {0, 1} est distribuée conditionnellement à la variable concomitante X selon Pθ (Y = 1|X = x) = 1 − Pθ (Y = 0|X = x) = Φ(θ0 + θ1 x) , il est intéressant de connaître le mode de la marginale a posteriori de (par exemple) θ0 . À des fins d’illustration, nous utiliserons ici le jeu de données Pima.tr présenté dans le chapitre 1, où l’on note X l’indice de masse corporelle bmi et Y l’indicatrice du diabète type. Le mode de la marginale a posteriori est obtenu comme suit : Φ(θ0 + θ1 xn )yi Φ(−θ0 − θ1 xn )1−yi dθ1 = arg max h(θ0 ) arg max θ0
i=1
θ0
pour une distribution a priori uniforme en θ et un échantillon (x1 , . . . , xn ). En l’absence d’une expression analytique de cette intégrale, la fonction h n’est définie que comme une espérance en θ1 . Comme la distribution de θ1 conditionnellement
122
Méthodes de Monte-Carlo avec R
à θ0 n’est pas non plus standard, nous choisissons une approximation par échantillonnage préférentiel. Nous prenons comme fonction d’échantillonnage une loi de Student à 5 degrés de liberté, de moyenne μ = 0.1 égale à l’estimateur du maximum de vraisemblance de θ1 et de paramètre d’échelle σ = 0.03 égal à l’écart type donné par glm. Nous construisons un échantillon θ1m (m = 1, . . . , M ) et remplaçons h(θ0 ) par M 1 Φ(θ0 + θ1m xn )yi Φ(−θ0 − θ1m xn )1−yi t5 (θ1m ; μ, σ)−1 , h0 (θ0 ) = M m=1 i=1
où t5 (θ1 ; μ, σ) représente la loi de Student correspondante. On trace cette approximation de h par des échantillons de Student simulés pour chaque valeur de θ0 à l’aide de la fonction R margap=function(a){ b=rt(10^3, df=5) dtb=dt(b, 5, log=T) b=b*.1+.1 themar=0 for (i in 1:10^3) themar=themar+exp(like(a, b[i])-dtb[i]) themar/10^3 } (où like est la vraisemblance probit de la remarque ci-dessous). Cette fonction montre à quel point l’approximation est variable. La Figure 5.11 (haut) représente la variation à la fois pour une réalisation de h et via une plage de variation fondée sur 100 copies. Il est évident qu’on ne peut pas utiliser le maximum de la fonction h comme approximation du maximum de h. En comparaison, si nous utilisons le même échantillon t pour toutes les valeurs de θ0 , la fonction obtenue est beaucoup plus lisse, comme on peut le voir dans le panneau central de la Figure 5.11. L’étendue des valeurs est bien sûr la même que précédemment, mais comme la fonction obtenue h est lisse, l’approximation est plus utilisable. Le panneau du bas compare les moyennes des approximations h sur les 100 copies pour les deux approches : aucune différence n’est visible, ce qui indique que les 105 simulations correspondantes sont suffisantes pour produire une approximation stable de h. Afin d’utiliser la fonction like avec des vecteurs, il nous a fallu la définir par like=function(a, b){ apply(pnorm(-a-outer(X=b, Y=da[, 2], FUN="*"), lo=T)*(1-da[, 1]) +pnorm(a+outer(X=b, Y=da[, 2], FUN="*"), lo=T)*da[, 1], 1, sum)} parce que pnorm utilise des vecteurs. Autrement, il serait impossible d’appliquer des fonctions comme integrate à exp(like(a, x)). Vous pouvez aussi vérifier
Chapitre 5. Optimisation par les méthodes de Monte-Carlo
123
0e+00
6e−51
que la fonction integrate est complètement instable et n’est donc pas fiable dans cet exemple.
−4
−3
−2
−1
0
−1
0
−1
0
0e+00
6e−51
θ0
−4
−3
−2
0e+00
3e−51
6e−51
θ0
−4
−3
−2 θ0
Fig. 5.11 – Approximations de Monte-Carlo d’une loi marginale a posteriori probit associée aux données Pima.tr fondé sur 103 simulations d’une loi t5 (θ1m ; μ, σ). (Haut) Plage des valeurs de 100 copies de l’approximation h obtenues en simulant un nouvel échantillon t pour chaque valeur de θ0 , superposée sur une copie ; (centre) plage des valeurs de 100 copies de l’approximation h obtenues en utilisant le même échantillon de Student pour chaque valeur de θ0 , superposée sur une copie ; (bas) comparaison des moyennes des deux expériences (la courbe en pointillés correspondant à l’expérience du haut ne peut pas être distinguée de l’autre courbe). L’exemple ci-dessus montre que si l’on veut que l’approximation h(x) de h(x) soit fiable pour tout x, il faut que l’approximation converge uniformément. Il est donc logique d’utiliser un échantillonnage préférentiel fondé sur un seul échantillon de Zi simulé selon une fonction d’importance g(z) pour toutes les valeurs de x et d’estimer h(x) par m f (zi |x) ˆ m (x) = 1 (5.8) H(x, zi ). h m i=1 g(zi )
124
Méthodes de Monte-Carlo avec R
Résoudre
ˆ m (x) max h x
donne une solution convergente du problème (5.1) dans la plupart des cas et permet ˆ m ne aussi d’utiliser des techniques classiques d’optimisation puisque la fonction h change pas à chaque itération. Néanmoins, le succès de cette approche n’est pas ˆ m (x) soit indépendante garanti puisqu’il n’y a aucune raison que la précision de h de x. Le nombre de simulations m doit donc être déterminé en considérant le cas le plus variable. De plus, comme dans toute expérience d’échantillonnage préférentiel, le choix de la fonction d’importance g a une influence sur l’obtention d’une bonne (ou désastreuse) approximation de la fonction h(x). La vérification que le quotient f (zi |x)H(x, zi ) g(zi ) est de variance finie pour tout x est donc indispensable quand on choisit g, même si cette vérification n’est pas forcément possible en pratique.
5.4.2
Modèles à données manquantes et démarginalisation
Les modèles à données manquantes sont des cas spéciaux de représentations h(x) = E[H(x, Z)]. Le mieux est de les voir comme des modèles où la loi des observations peut être exprimée comme f (x, z|θ) dz . (5.9) g(x|θ) = Z
Cette représentation se retrouve dans de nombreux contextes statistiques, notamment les modèles de censure et les modèles à variables latentes (tobit, probit, arch, volatilité stochastique, etc.). L’échantillonnage par tranches que nous introduirons dans la Section 7.4 est un autre exemple de données (artificiellement) manquantes. Exemple 5.12 (Modèle de mélange comme données manquantes) La loi de mélange de l’Exemple 5.2 peut être considérée comme un modèle à données manquantes, même si la vraisemblance (observée) est calculable en un temps raisonnable. En effet, considérons le vecteur (z1 , . . . , zn ) ∈ {1, 2}n associé à l’échantillon (x1 , . . . , xn ) et tel que Pθ (Zi = 1) = 1 − Pθ (Zi = 2) = 1/4 ,
Xi |Zi = z ∼ N (μz , 1) .
Nous retrouvons alors la loi de mélange (5.2) comme loi marginale de Xi . La vraisemblance (observée) s’écrit E[H(x, Z)] où H(x, z) ∝
1 3 exp −(xi − μ1 )2 /2 exp −(xi − μ2 )2 /2 , 4 4
i; zi =1
i; zi =2
et où l’on note 2 x le vecteur (x1 , . . . , xn ) et z le vecteur (z1 , . . . , zn ) ∈ {1, 2}n . 2. Dans cette section, afin de suivre la notation usuelle adoptée pour les problèmes à données manquantes et l’algorithme EM, nous faisons exception à notre convention de représenter les scalaires et les vecteurs avec la même notation, et utilisons à la place des symboles en gras pour noter les vecteurs observés ou latents.
Chapitre 5. Optimisation par les méthodes de Monte-Carlo
125
Exemple 5.13 (Vraisemblance de données censurées) Des données censurées peuvent provenir d’expériences où des observations potentielles sont remplacées par une borne inférieure parce qu’elles prennent trop longtemps à être observées. Supposons qu’on observe Y1 , . . ., Ym , iid, tirées suivant f (y − θ) et que les (n − m) observations restantes (Ym+1 , . . . , Yn ) soient censurées à un seuil a. La fonction de vraisemblance correspondante est alors n−m
L(θ|y) = [1 − F (a − θ)]
m
f (yi − θ),
(5.10)
i=1
où F est la fonction de répartition associée à la densité f et où y = (y1 , . . . , ym ). Si nous avions observé les n − m dernières valeurs (appelons-les z = (zm+1 , . . . , zn ), avec zi ≥ a, i = m+1, . . . , n), nous aurions construit la vraisemblance (des données complètes) m n Lc (θ|y, z) = f (yi − θ) f (zi − θ) . i=1
Notons que
i=m+1
L(θ|y) = E[Lc (θ|y, Z)] =
Z
Lc (θ|y, z)f (z|y, θ) dz,
où f (z|y, θ) est la loi des données manquantes conditionnellement aux données observées, c’est-à-dire le produit des f (zi − θ)/[1 − F (a − θ)], ou encore f (z − θ) restreint au domaine (a, +∞). Dans ce chapitre, lorsque (5.9) est vérifiée, le vecteur z ne sert qu’à simplifier les calculs. Il n’a pas forcément de sens particulier pour le problème statistique correspondant. On peut tout de même le voir comme un modèle à données manquantes au sens où Z peut être interprété comme manquant dans les observations. Nous appelons donc la fonction Lc (θ|x, z)) = f (x, z|θ) vraisemblance du “modèle complet” ou des “données complètes”. Elle correspond à la vraisemblance que nous obtiendrions si nous observions (x, z), qu’on appelle aussi données complètes (abusivement, puisque ce ne sont pas vraiment des données). Cette représentation est un cas particulier de démarginalisation, un contexte dans lequel une fonction d’intérêt est exprimée comme l’intégrale d’une quantité plus facile à manipuler sans contrainte supplémentaire. Des contextes similaires se retrouvent au Chapitre 7. Dans les sections suivantes, on considère une stratégie hybride où l’approximation de la fonction objective h et sa maximisation sont regroupées en une seule procédure. Dans les cas les plus simples, il n’y a pas d’aspect aléatoire, ce qui correspond à l’algorithme EM présenté dans la Section 5.4.3. Des versions plus générales avec des étapes de Monte-Carlo sont décrites dans la Section 5.4.4.
5.4.3
L’algorithme EM
L’algorithme EM (pour Espérance–Maximisation) est une technique d’optimisation déterministe (Dempster et al., 1977) qui utilise la représentation (5.9) pour
126
Méthodes de Monte-Carlo avec R
construire une suite de problèmes de maximisation plus faciles, dont la limite est la réponse au problème initial. Supposons donc qu’on observe X1 , . . . , Xn , de distribution jointe g(x|θ) vérifiant g(x|θ) = f (x, z|θ) dz, Z
et qu’on cherche à calculer θˆ = arg max L(θ|x) = arg max g(x|θ). Puisque les données augmentées sont z, où (X, Z) ∼ f (x, z|θ), la loi conditionnelle des données manquantes Z sachant les données observées x est k(z|θ, x) = f (x, z|θ) g(x|θ) . On prend le logarithme de cette expression pour obtenir la relation suivante entre la vraisemblance des données complètes Lc (θ|x, z) et la vraisemblance des données observées L(θ|x). Pour tout θ0 , log L(θ|x) = Eθ0 [log Lc (θ|x, Z)] − Eθ0 [log k(Z|θ, x)],
(5.11)
où l’espérance est calculée par rapport à k(z|θ0 , x). Dans l’algorithme EM, on cherche à maximiser log L(θ|x), mais on ne considère que le premier terme de la partie droite de (5.11). Plus exactement, soit Q(θ|θ0 , x) = Eθ0 [log Lc (θ|x, Z)], l’algorithme EM procède de manière itérative en maximisant (en θ) Q(θ|θ0 , x) à chaque itération. Si θˆ(1) est la valeur de θ qui maximise Q(θ|θ0 , x), on remplace θ0 par la nouvelle valeur θˆ(1) . On obtient ainsi une suite d’estimateurs {θˆ(j) }j , où θˆ(j) est la valeur de θ qui maximise Q(θ|θˆ(j−1) , x). Autrement dit, Q(θˆ(j) |θˆ(j−1) , x) = max Q(θ|θˆ(j−1) , x). θ
(5.12)
Ce processus itératif contient donc une étape de calcul d’espérance et une étape de maximisation, d’où son nom.
Algorithme 3 (L’algorithme EM) Prendre une valeur initiale θˆ(0) (et donc m = 0) Répéter 1. Calculer (étape E) Q(θ|θˆ(m) , x) = Eθˆ(m) [log Lc (θ|x, Z)] , où l’espérance est calculée selon k(z|θˆ(m) , x).
Chapitre 5. Optimisation par les méthodes de Monte-Carlo
127
2. Maximiser Q(θ|θˆ(m) , x) en θ et prendre (étape M) θˆ(m+1) = arg max Q(θ|θˆ(m) , x) θ
puis passer à m = m + 1, jusqu’à obtenir un point fixe, c’est-à-dire jusqu’à ce que θˆ(m+1) = θˆ(m) .
L’inégalité de Jensen permet de démontrer aisément (voir, par exemple, Robert & Casella, 2004, Théorème 5.15) qu’à chaque itération de l’algorithme EM, la vraisemblance constituant la partie gauche de (5.11) augmente : L(θˆ(j+1) |x) ≥ L(θˆ(j) |x), avec égalité si et seulement si Q(θˆ(j+1) |θˆ(j) , x) = Q(θˆ(j) |θˆ(j) , x). Cela signifie que, sous certaines conditions, tout point limite de la suite EM {θˆ(j) } est un point stationnaire de L(θ|x), même si ce n’est pas pour autant forcément un estimateur du maximum de vraisemblance ni même un maximum local (voir Wu, 1983, Théorème 3, ou Boyles, 1983, pour des résultats précis de convergence). En pratique, il est donc recommandé de relancer l’algorithme EM plusieurs fois avec des points de départ différents choisis aléatoirement, si on veut éviter une mauvaise approximation du maximum global. (Ce point est le seul aspect aléatoire de l’algorithme EM : si on commence avec la même valeur initiale θˆ(0) , l’algorithme converge vers le même point fixe.) Pour implémenter l’algorithme EM, il faut donc être capable (a) de calculer la fonction Q(θ |θ, x) et (b) de maximiser cette fonction. Beaucoup de modèles de données manquantes peuvent ainsi être analysés, comme le montrent les exemples suivants. Exemple 5.14 (Suite de l’Exemple 5.13) Si la loi f (x−θ) correspond à la loi N (θ, 1) la vraisemblance des données complètes est m n exp{−(yi − θ)2 /2} exp{−(zi − θ)2 /2} , Lc (θ|y, z) ∝ i=1
i=m+1
d’où l’espérance de la log-vraisemblance des données complètes Q(θ|θ0 , y) = −
m n 1 1 (yi − θ)2 − Eθ [(Zi − θ)2 ] , 2 i=1 2 i=m+1 0
où les observations manquantes Zi suivent une loi normale N (θ, 1) tronquée en a. L’étape M (au cours de laquelle on annule la dérivée de la fonction Q(θ|θ0 , y) par
128
Méthodes de Monte-Carlo avec R
rapport à θ) donne l’élément suivant de la suite EM m¯ y + (n − m)Eθ [Z1 ] . θˆ = n ϕ(a−θ) Comme Eθ [Z1 ] = θ + 1−Φ(a−θ) , où ϕ et Φ sont respectivement les fonctions de masse et de répartition de la loi normale, la suite EM est , + m ϕ(a − θˆ(j) ) n − m ˆ(j) (j+1) ˆ = y¯ + θ . (5.13) θ + n n 1 − Φ(a − θˆ(j) )
L’implantation en R de l’itération EM est une récurrence facile : > theta=rnorm(1, mean=ybar, sd=sd(y)) > iteronstop=1 > while (nonstop){ + theta=c(theta, m*ybar/n+(n-m)*(theta[iter]+ + dnorm(a-theta[iter])/pnorm(a-theta[iter]))/n) + iter=iter+1 + nonstop=(diff(theta[iter:(iter+1)])>10^(-4)) }
−25 −40
−35
−30
l(θ0)
−20
−15
−10
On peut tester ce programme avec des valeurs arbitraires des paramètres n, m, a et y¯ et vérifier que la suite converge assez rapidement vers le maximum.
−0.5
0.0
0.5
1.0
1.5
θ0
Fig. 5.12 – Représentation en pointillés de 11 suites EM utilisant des valeurs initiales aléatoires pour la vraisemblance censurée (5.10) avec des données normales, y¯ = 0, a = 1, n = 30, m = 20 et de la vraie log-vraisemblance (en gris). La Figure 5.12 illustre ceci avec quelques suites {θ(j) }j qui grimpent le long de la fonction de log-vraisemblance. Cet exemple est purement formel : la vraisemblance des données observées est disponible analytiquement, comme le prouve la Figure 5.12, puis optimisée numériquement. L’algorithme EM n’est donc pas nécessaire dans ce contexte !
Chapitre 5. Optimisation par les méthodes de Monte-Carlo
129
Exercice 5.5 Écrire un code R qui calcule la vraisemblance (5.10) pour un échantillon normal. En déduire un estimateur numérique du maximum de vraisemblance à l’aide de la fonction optimise. Concevoir une expérience de Monte-Carlo qui étudie la variation des solutions EM autour de cet optimum numérique.
Exemple 5.15 (EM pour un mélange gaussien, suite de l’Exemple 5.12) Utilisant la vraisemblance du mélange gaussien des Exemples 5.2 et 5.9, nous avons vu dans les Figures 5.2 et 5.9 que la vraisemblance est bimodale quand on l’associe à un échantillon d’un mélange gaussien (voir l’Exercice 5.9 pour un contexte où le nombre de modes est différent). La structure de données manquantes décrite dans l’Exemple 5.12 aboutit à une fonction objectif égale à Q(θ |θ, x) = −
n * / 1 . Eθ Zi (xi − μ1 )2 + (1 − Zi )(xi − μ2 )2 * x . 2 i=1
La résolution de l’étape M produit les formes explicites + μ1
= Eθ
n
, Zi xi |x
Eθ
i=1
et μ1
= Eθ
+ n
(1 − Zi )xi |x
, Zi |x
i=1
,
i=1
+ n
Eθ
+ n
, (1 − Zi )|x .
i=1
Comme Eθ [Zi |x] =
ϕ(xi − μ1 ) , ϕ(xi − μ1 ) + 3ϕ(xi − μ2 )
l’algorithme EM peut facilement être implanté dans ce contexte. La Figure 5.13 représente les chemins de convergence obtenus en répétant EM cinq fois avec divers points de départ choisis comme dans les Figures 5.2 et 5.9. Deux des cinq suites sont attirées par le mode principal, deux autres sont attirées par le mode secondaire (alors que la vraisemblance y est nettement inférieure) et, ce qui est assez exceptionnel (et a donc peu de chances de se reproduire si vous répétez l’expérience de votre côté), la cinquième suite converge vers le point col de la vraisemblance. Notons qu’après un très petit nombre d’itérations, la suite est proche de la valeur modale ; les améliorations apportées par les itérations suivantes sont incrémentales. Pour les données présentes, les suites EM ne peuvent donc aboutir qu’en trois endroits possibles, représentés par les points sur la surface de la vraisemblance. Notons que la convergence est systématiquement plus rapide que pour les suites de Newton–Raphson de la Figure 5.2.
Méthodes de Monte-Carlo avec R
3
4
5
130
μ2
2
●
1
●
−2
−1
0
●
−2
−1
0
1
2
3
4
5
μ1
Fig. 5.13 – Trajectoires de cinq suites EM pour l’Exemple 5.15 et positions finales sur la surface de la log-vraisemblance. Exercice 5.6 Montrer que, dans l’Exemple 5.15, les poids 1/4 et 3/4 n’ont aucune importance dans la maximisation de Q(θ |θ, x). Exercice 5.7 Reproduire l’analyse de l’Exemple 5.15 avec pour nouvelle cible le mélange gaussien (5.2) en construisant la vraisemblance des données complètes basée sur l’allocation du vecteur z = (z1 , . . . , zn ) et en dérivant l’étape de mise à jour de l’algorithme EM correspondant. Implémenter l’algorithme sur le jeu de données log(deaths) (qu’on trouvera dans library(MASS)).
Cet exemple souligne le besoin de répéter l’algorithme EM plusieurs fois avec des valeurs initiales différentes qu’on pourra choisir aléatoirement tant que la distribution de départ recouvre tous les modes possibles.
5.4.4
EM par Monte-Carlo
Une difficulté dans l’implantation de l’algorithme EM est que chaque étape E nécessite le calcul de l’espérance de la log-vraisemblance Q(θ|θ0 , x). À l’exception de cas standards où la fonction Q est connue exactement, on peut approcher Q à l’aide de méthodes de Monte-Carlo en suivant les règles générales de la Section 5.4.1, puisque Q s’exprime naturellement comme une espérance. Ainsi, on peut
Chapitre 5. Optimisation par les méthodes de Monte-Carlo
131
par exemple simuler Z1 , . . . , ZT à partir de la loi conditionnelle k(z|x, θˆ(m) ) puis maximiser la log-vraisemblance approchée des données complètes T 1 ˆ , x) = log Lc (θ|x, zi ) , Q(θ|θ 0 T i=1
(5.14)
comme le suggèrent Wei & Tanner (1990) sous le nom d’EM par Monte-Carlo (MCEM). Toutefois, comme dans la Section 5.4.1, une version plus stable utilise l’échantillonnage préférentiel pour éviter d’avoir à simuler un nouvel échantillon pour chaque nouvelle valeur θˆ(m) . Une solution spécifique consiste à utiliser seulement la loi conditionnelle k(z|x, θˆ(0) ) grâce à l’identité de Geyer & Thompson (1992) *
g(x|θ) f (x, z|θ) ** = arg max log Eθ(0) x . arg max L(θ|x) = arg max log θ θ θ g(x|θ(0) ) f (x, z|θ(0) ) * Cette représentation implique que simuler Z1 , . . . , ZT suivant la loi conditionnelle k(z|x, θˆ(0) ) produit une approximation de la log-vraisemblance (à une constante additive près) T 1 Lc (θ|x, zi ) log L(θ|x) ≈ , T Lc (θ(0) |x, zi ) i=1
dont la stabilité dépend du choix de θ(0) pour assurer que l’approximation est de variance finie. Exemple 5.16 (Modèle multinomial à données manquantes) Un exemple classique d’application de l’algorithme EM est un problème de génétique (Dempster et al., 1977) où les observations (x1 , x2 , x3 , x4 ) proviennent de la loi multinomiale 1 θ 1 1 θ M n; + , (1 − θ), (1 − θ), . 2 4 4 4 4 L’inférence sur θ est plus facile si la cellule x1 est divisée en deux cellules. On crée donc le modèle augmenté 1 θ 1 θ 1 (z1 , z2 , x2 , x3 , x4 ) ∼ M n; , , (1 − θ), (1 − θ), 2 4 4 4 4 où x1 = z1 + z2 . La fonction de vraisemblance des données complètes est alors simplement θ z2 +x4 (1−θ)x2 +x3 , alors que la fonction de vraisemblance des données observées est (2+θ)x1 θ x4 (1−θ)x2 +x3 . L’espérance de la fonction de log-vraisemblance complète est Eθ0 [(Z2 + x4 ) log θ + (x2 + x3 ) log(1 − θ)] θ0 x1 + x4 log θ + (x2 + x3 ) log(1 − θ), = 2 + θ0
132
Méthodes de Monte-Carlo avec R
que l’on peut facilement maximiser par rapport à θ, ce qui donne l’étape EM θˆ1 =
θ0 x 1 2 + θ0 + x4
θ 0 x1 + x2 + x3 + x4 2 + θ0
.
Une solution EM par Monte-Carlo remplacerait l’espérance θ0 x1 /(2 + θ0 ) avec la moyenne empirique m 1 zm = zi , m i=1 où les zi sont simulés suivant une loi binomiale B(x1 , θ0 /(2 + θ0 )) ou, de manière équivalente, par mz m ∼ B(mx1 , θ0 /(2 + θ0 )) . L’étape MCEM serait alors θ-1 =
z m + x4 , z m + x2 + x3 + x4
qui converge clairement vers θˆ1 quand m tend vers l’infini. Exercice 5.4 Dans le contexte de l’Exemple 5.16, en démarrant par θ0 = .5, concevoir une expérience de Monte-Carlo pour évaluer la variation de la suite MCEM autour de la suite EM pour m = 100 et représenter la plage de variation à l’aide de la fonction polygon.
Cet exemple n’est qu’une illustration formelle de l’algorithme EM par MonteCarlo et de ses propriétés de convergence, puisque l’algorithme EM originel peut y être utilisé. (Dans l’Exemple 7.8, nous reviendrons sur cet exemple avec un échantillonneur de Gibbs.) L’exemple suivant, par contre, présente une situation où l’étape E est trop compliquée pour être implémentée et où l’algorithme EM par Monte-Carlo offre une alternative réaliste (bien que non évidente). Exemple 5.17 (Modèle logit à effet aléatoire) Un simple modèle logit à effet aléatoire analysé par Booth & Hobert (1999) représente les observations yij (i = 1, . . . , n, j = 1, . . . , m) comme suivant la loi conditionnelle d’un modèle logit sachant une variable explicative xij P (yij = 1|xij , ui , β) =
exp {βxij + ui } , 1 + exp {βxij + ui }
où ui ∼ N (0, σ 2 ) est un effet aléatoire non observé. Le vecteur des effets aléatoires (U1 , . . . , Un ) correspond donc aux données manquantes Z. Si on considère
Chapitre 5. Optimisation par les méthodes de Monte-Carlo
133
la fonction Q(θ |θ, x, y), Q(θ |θ, x, y) =
yij E[β xij + Ui |β, σ, x, y]
i,j
−
E[log 1 + exp{β xij + Ui }|β, σ, x, y]
i,j
−
E[Ui2 |β, σ, x, y]/2σ 2 − n log σ ,
i
avec θ = (β, σ), il est impossible de calculer les espérances en Ui . Si ces espérances étaient disponibles, l’étape M serait presque immédiate puisque la maximisation de Q(θ |θ, x, y) par rapport à σ mène à σ 2 =
1 E[Ui2 |β, σ, x, y] , n i
alors que la maximisation de Q(θ |θ, x, y) par rapport à β produit l’équation de point fixe *
exp {β xij + Ui } * * β, σ, x, y xij , yij xij = E 1 + exp {β xij + Ui } * i,j i,j qui n’est pas très facile à résoudre en β. L’alternative à EM consiste donc à simuler les Ui conditionnellement à β, σ, x, y afin de remplacer les espérances ci-dessus par des approximations de Monte-Carlo. Une simulation directe suivant 2 2 y u − u /2σ exp ij i i j (5.15) π(ui |β, σ, x, y) ∝ 0 [1 + exp {βx ij + ui }] j est faisable (Booth & Hobert, 1999), mais elle requiert des ajustements préalables qu’il vaut mieux éviter pour l’instant et il est donc plus facile d’implémenter une version MCMC de la simulation des ui afin d’approcher les deux espérances. On discutera de la construction d’un algorithme MCMC (standard) pour produire des échantillons de ui dans le chapitre suivant et dans la suite, on suppose qu’à chaque étape de l’algorithme MCEM, on obtient une matrice (n, T ) > mcmc(beta, sigma, x, y, T) dont la iième rangée est un échantillon des uit distribués selon (5.15) (x et y sont tous deux définis comme des matrices (n, m).) Etant donnée cette matrice d’échantillons, on peut mettre à jour σ 2 par sum(u^2)/(n*T) et, pour la mise à jour de β, on peut par exemple utiliser la fonction uniroot sur la fonction cible
134
Méthodes de Monte-Carlo avec R
targ=function(beta, x, y, uni){ xs=exp(beta*x) xxs=x*xs ome=exp(uni) prodct=0 for (j in 1:m) for (t in 1:T) prodct=prodct+sum(xxs[, j]*ome[, t]/(1+xs[, j]*ome[, t])) prodct-sum(T*x*y) } comme dans > beta=uniroot(targ, x=x, y=y, u=u, int=mlan+10*sigma*c(-1, 1)) si mlan est l’estimateur du maximum de vraisemblance de β quand il n’y a pas d’effet aléatoire : > mlan=as.numeric(glm(as.vector(y)\(\sim\)as.vector(x)-1, + fa=binomial)$coe) Toute l’étape MCEM est donc produite par > > > > + + + + + + + +
T=1000 #Nombre de simulations MCEM beta=mlan sigma=diff=iter=factor=1 while (diff>10^-3){ samplu=mcmc(beta[iter], sigma[iter], x, y, T) sigma=c(sigma, sd(as.vector(samplu))) beta=c(beta, uniroot(targ, x=x, y=y, u=samplu, inter=mlan+c(-10*sigma, 10*sigma))) diff=max(abs(diff(beta[iter:(iter+1)])), abs(diff(sigma[iter:(iter+1)]))) iter=iter+1 T=T*2}
où la dernière ligne T=T*2 de la boucle while sert à stabiliser la suite MCEM en augmentant le nombre d’étapes de Monte-Carlo à chaque itération, comme suggéré par Wei & Tanner (1990), McCulloch (1997) et Booth & Hobert (1999). Le temps d’arrêt est basé sur la stabilisation des valeurs MCEM, même si on pourrait aussi utiliser un critère basé sur l’approximation de Monte-Carlo de la vraisemblance (observée) like=function(beta, sigma){ lo=0 for (t in 1:(10*T)){ uu=rnorm(n)*sigma lo=lo+exp(sum(as.vector(y)*(beta*as.vector(x)+rep(uu, m)))-
Chapitre 5. Optimisation par les méthodes de Monte-Carlo
135
sum(log(1+exp(beta*as.vector(x)+rep(uu, m))))) } lo/T }
● ● ● ●● ●
1.00
1.04
La Figure 5.14 montre la suite des θ(j) produite par cet algorithme ainsi que l’évolution de la suite des vraisemblances complètes évaluées pour les véritables effets aléatoires et les valeurs des θ (j) .
●
σ
●
0.92
0.96
●
●
−3.0
−2.9
−2.8
−2.7
−2.6
−2.5
−290 −292
Lc
−288
β
2
4
6
8
10
iteration
Fig. 5.14 – Estimation MCEM des paramètres d’un modèle logit avec effets aléatoires fondé sur un jeu de données simulées avec n = 20, m = 35, β = −3, σ = 1, quand les xij sont distribués aléatoirement dans {−1, 0, 1}. Le graphique du haut représente la suite des (β, σ) produite par l’algorithme MCEM quand on comˆ EMV pour le modèle logit et σ0 = 1. La valeur finale de mence avec β0 = β, l’approximation de l’estimateur du maximum de vraisemblance est (β10 , σ10 ) = (−3.002, 1.048). Le graphique du bas montre la suite des Lc (β, σ, u|x, y) pour le vecteur simulé u des effets aléatoires. Dans l’exemple ci-dessus, quand on utilise la procédure R uniroot en conjonction avec la fonction cible targ, le dernier argument de targ ne peut pas être u, comme dans > targ=function(beta, x, y, u) parce que cela prêterait à confusion avec l’argument upper de uniroot
136
Méthodes de Monte-Carlo avec R
> uniroot(targ, int=c(-5*sigma0, 5*sigma0), x=x, y=y, u=samplu) Error in f(lower, ...) : argument "u" is missing, with no default mais l’argument uni évite la confusion : > uniroot(targ, int=c(-5*sigma0, 5*sigma0), x=x, y=y, uni=samplu) $root [1] -2.995976 $f.root [1] 0.003151796 $iter [1] 10 $estim.prec [1] 6.103516e-05 Exercice 5.8 Montrer que (5.15) peut être simulée par un algorithme de rejet fondé sur une fonction de proposition gaussienne. Examiner la performance de cet algorithme en terme de taux d’acceptation quand on utilise un échantillon simulé avec les mêmes paramètres que dans la Figure 5.14. (Suggestion : voir Booth & Hobert (1999) pour une version qui ne requiert pas une maximisation différente pour chaque nouvelle valeur de β, ainsi que pour une alternative fondée sur un échantillonnage préférentiel.)
Notons que l’algorithme MCEM ne vérifie pas la propriété de monotonie de l’algorithme EM. Il est donc important de vérifier que la suite des (β, σ) produite par l’algorithme MCEM converge vers une approximation du maximum de la vraisemblance du modèle, soit en évaluant numériquement la vraisemblance, soit en répétant l’algorithme avec différentes valeurs initiales. Contrairement aux méthodes de Monte-Carlo plus génériques, l’algorithme MCEM a néanmoins l’avantage d’approcher la suite EM convergente, plutôt que de maximiser une approximation de la vraisemblance. Contrairement à EM, MCEM est une méthode de Monte-Carlo et il est donc nécessaire d’évaluer l’erreur qui en résulte. Plutôt que la méthode grossière et coûteuse de la réplication des chemins, Booth & Hobert (1999) donnent une approximation au premier ordre basée sur un développement limité de Q : var(θ1 |θ0 , x) ≈
∂ 2 Q(θ1 |θ0 , x) ∂θ∂θT
−1 var
∂Q(θ1 |θ0 , x) ∂θ
∂ 2 Q(θ1 |θ0 , x) ∂θ∂θT
−1 .
Le terme de variance interne peut alors aisément être évalué à l’aide des variables manquantes simulées.
Chapitre 5. Optimisation par les méthodes de Monte-Carlo
5.5
137
Exercices supplémentaires
Exercice 5.9 Dans le contexte de l’Exemple 5.2, dessiner la surface de vraisemblance associée au modèle (5.2) quand l’échantillon de taille 400 est produit par > x=rnorm(80, mean=-4) > for (i in 1:4) x=c(x, rnorm(80, mean=-4+2*i)) et déterminer le nombre de maxima locaux associés à un échantillon donné. Exercice 5.10 Soit un échantillon de taille n d’une loi de mélange à poids inconnus, Xi ∼ θg(x) + (1 − θ)h(x),
i = 1, . . . , n,
où g(·) et h(·) sont connus. a. Soient Z1 , . . . , Zn , où Zi est la loi suivant laquelle on a tiré Xi , de façon à ce que Xi |Zi = 1 ∼ g(x),
Xi |Zi = 0 ∼ h(x) .
Montrer que la vraisemblance des données complètes peut être écrite comme Lc (θ|x, z) =
n
[zi g(xi ) + (1 − zi )h(xi )] θzi (1 − θ)1−zi .
i=1
b. Montrer que E[Zi |θ, xi ] = θg(xi )/[θg(xi ) + (1 − θ)h(xi )] et en déduire que la suite EM est donnée par n θˆ(j) g(xi ) 1 θˆ(j+1) = . n i=1 θˆ(j) g(xi ) + (1 − θˆ(j) )h(xi )
c. Examiner les propriétés de convergence de cet algorithme EM sur un jeu de données simulées avec n = 25, θ = 0.3, h(x) = ϕ(x) et g(x) = ϕ((x − 2)/2)/2, où ϕ est la densité N (0, 1). Exercice 5.11 Considérons l’échantillon x = (0.12, 0.17, 0.32, 0.56, 0.98, 1.03, 1.10, 1.18, 1.23, 1.67, 1.68, 2.33), généré à l’aide d’un mélange exponentiel p Exp(λ) + (1 − p) Exp(μ). Tous les paramètres p, μ, λ sont inconnus. a. Montrer que la vraisemblance h(p, λ, μ) peut être exprimée comme E[H(x, Z)], où z = (z1 , . . . , z12 ) correspond au vecteur des allocations des observations xi à la première et à la deuxième composante du mélange ; autrement dit, pour i = 1, . . . , 12, P (zi = 1) = 1 − P (zi = 2) =
pλ exp(−λxi ) . pλ exp(−λxi ) + (1 − p)μ exp(−μxi )
b. Construire un algorithme EM pour ce modèle et calculer les estimateurs du maximum de vraisemblance des paramètres pour l’échantillon donné ci-dessus.
138
Méthodes de Monte-Carlo avec R
Exercice 5.12 Considérons la fonction h(θ) =
||θ||2 (p + ||θ||2 )(2p − 2 + ||θ||2 ) (1 + ||θ||2 )(p + 1 + ||θ||2 )(p + 3 + ||θ||2 )
où θ ∈ Rp et p = 10. a. Montrer que la fonction h(θ) possède un maximum unique en ||θ||2 . b. Montrer que h(θ) peut être exprimé comme E[H(θ, Z)], où z = (z1 , z2 , z3 ) et Zi ∼ Exp(1/2) (i = 1, 2, 3). En déduire que f (z|x) ne dépend pas de x dans (5.8). c. Quand g(z) = exp(−α{z1 +z2 +z3 }), montrer que la variance de (5.8) est infinie pour certaines valeurs de t = ||θ||2 quand α > 1/2. Identifier A2 , l’ensemble des valeurs de t pour lesquelles la variance de (5.8) est infinie quand α = 2. d. Étudier le comportement de l’estimateur (5.8) quand t va de A2 vers son complément Ac2 afin de voir si la variance infinie peut être détectée dans l’évaluation de h(t). Exercice 5.13 En reprenant l’Exemple 5.14, a. Donner la densité des données manquantes (Zn−m+1 , . . . , Zn ). b. Montrer que Eθ [Zi ] = θ +
φ(a−θ ) 1−Φ(a−θ )
et que la suite EM est donnée par (5.13).
Exercice 5.14 Dans le contexte du modèle probit de l’Exemple 5.11, prendre β = (θ0 , θ1 ) et remplacer la variable explicative x par le vecteur x = (x, 1), a. Donner la vraisemblance associée à l’échantillon ((x1 , y1 ), . . . , (xn , yn )). b. Montrer que si l’on associe à chaque observation (xi , yi ) une variable manquante Zi telle que Zi |Xi = x ∼ N (xT β, 1) Yi = IZi >0 , alors l’itération m de l’algorithme EM associé est l’espérance de l’estimateur des moindres carrés β(m) = (X T X)−1 X T Eβ(m−1) [Z|x, y] , où x = (x1 , . . . , xn ), y = (y1 , . . . , yn ) et Z = (Z1 , . . . , Zn )T , et X est la matrice dont les colonnes sont composées des xi . c. Donner la valeur de Eβ [Zi |xi , yi ]. d. Implémenter cet algorithme EM pour le jeu de données Pima.tr où x correspond aux variables glu, skin et bmi, respectivement. Le comparer avec les solutions données par glm. Exercice 5.15 Tester les limitations de la fonction uniroot quand on considère h(x) = (x − 3)(x + 6)(1 + sin(60x)) sur les intervalles (−2, 10) et (−8, −1). Exercice 5.16 Une autre implémentation de l’algorithme EM par Monte-Carlo pour Z1 , . . . , Zm ∼ k(z|x, θ) pourrait être de maximiser itérativement m 1 ˆ {log Lc (θ|x, zi ) − log k(zi |θ, x)} . log L(θ|x) = m i=1
Chapitre 5. Optimisation par les méthodes de Monte-Carlo
139
Plus précisément, cette méthode pourrait être appelée maximum de vraisemblance par MonteCarlo. ˆ a. Montrer que L(θ|x) tend vers L(θ|x) quand m → ∞. ˆ b. Montrer comment on peut utiliser L(θ|x) pour obtenir l’estimateur du maximum de vraisemblance dans l’Exemple 5.15 et illustrer la convergence de cette procédure pour le jeu de données faithful[,1]. Exercice 5.17 Dans le contexte de l’Exemple 5.16, on observe les donnée (x1 , x2 , x3 , x4 ) = (125, 18, 20, 34). a. Construire un algorithme EM pour trouver l’EMV de θ. b. Construire un algorithme EM par Monte-Carlo pour trouver l’EMV de θ. Comparer les résultats à ceux de a. à l’aide d’une expérience Monte-Carlo évaluant la variabilité de la suite MCEM. Exercice 5.18 Le jeu de données suivant donne des observations indépendantes de Z = (X, Y ) ∼ N2 (0, Σ) où les données manquantes sont representées par ∗. x y
1.17 0.34
-0.98 -1.24
0.18 -0.13
0.57 *
0.21 *
* -0.12
* -0.83
* 1.64
a. Montrer que la vraisemblance observée est 3 "
t
−1
|Σ|−1/2 e−zi Σ
zi /2
#
2
2
2
2
2
2
2
σ1−2 e−(x4 +x5 )/2σ1 σ2−3 e−(y6 +y7 +y8 )/2σ2 .
i=1
b. Examiner la conséquence du choix de π(Σ) ∝ |Σ|−1 sur la loi a posteriori de Σ. c. Montrer que les données manquantes peuvent être simulées avec σ1 2 2 (i = 6, 7, 8), Xi ∼ N ρ yi , σ1 (1 − ρ ) σ2 σ2 Yi ∼ N ρ xi , σ22 (1 − ρ2 ) (i = 4, 5), σ1 pour construire un algorithme EM par Monte-Carlo. d. Construire une méthode de simulation efficace pour obtenir l’EMV de la matrice de covariances Σ.
Chapitre 6
Algorithmes de Metropolis–Hastings “How absurdly simple !", I cried. “Quite so !", said he, a little nettled. “Every problem becomes very childish when once it is explained to you." Arthur Conan Doyle The Adventure of the Dancing Men
Guide du lecteur Ce chapitre et le suivant vont aborder les méthodes de simulation de chaînes de Markov. Bien que l’algorithme de Metropolis–Hastings puisse être considéré comme l’un des algorithmes de Monte-Carlo par chaînes de Markov (MCMC) les plus généraux, il est aussi l’un des plus simples à comprendre et à expliquer, ce qui en fait un algorithme idéal pour débuter. Ce chapitre commence par un rappel rapide sur les chaînes de Markov, expliquant les bases nécessaires pour comprendre les algorithmes. Ensuite, nous définissons l’algorithme de Metropolis–Hastings en se concentrant sur les versions les plus utilisées de l’algorithme. Le chapitre se termine par une discussion sur la calibration de l’algorithme par l’intermédiaire de son taux d’acceptation dans la Section 6.5.
C. P. Robert et al., Méthodes de Monte-Carlo avec R © Springer-Verlag France 2011
142
Méthodes de Monte-Carlo avec R
6.1
Introduction
Pour des raisons que vous comprendrez mieux par la suite, nous opérons maintenant un changement fondamental dans le choix de notre stratégie de simulation. Jusqu’ici nous avons généré des variables iid, directement à partir de la densité d’intérêt f ou indirectement dans le cas de l’échantillonnage préférentiel. L’algorithme de Metropolis–Hastings présenté ci-dessous génère par contre des variables corrélées d’une chaîne de Markov. La raison pour laquelle nous optons pour un changement si radical est que les chaînes de Markov ont des propriétés de convergence différentes qui peuvent être exploitées pour fournir des propositions plus simples dans des cas où l’échantillonnage préférentiel générique ne s’applique pas facilement. D’une part, les conditions sur la cible f sont tout à fait minimales, ce qui autorise des situations dans lesquelles on connaît très peu f . D’autre part, comme illustré dans le chapitre suivant, cette perspective permet de décomposer efficacement des problèmes en grande dimension en une suite de problèmes plus élémentaires qui sont beaucoup plus faciles à résoudre. Ainsi, nous avertissons le lecteur qu’il s’agit d’un chapitre essentiel, dans lequel nous présentons une perspective de génération de variables aléatoires complètement nouvelle, perspective qui a joué un rôle décisif dans la recherche et a étendu l’application des méthodes statistiques à la résolution de problèmes statistqiues plus difficiles et plus pertinents ces vingt dernières années (même si on doit noter que les origines de ces techniques sont liées à la méthode de Monte-Carlo utilisée dans le centre de recherche de Los Alamos pendant la Seconde Guerre mondiale). Néanmoins, malgré le recours à la théorie des chaînes de Markov qui est brièvement détaillée dans la section suivante, la mise en œuvre de ces nouvelles méthodes n’est pas plus difficile que celle des chapitres précédents et il n’y a nullement besoin d’approfondir davantage la théorie de chaîne de Markov, comme on s’en rendra compte bientôt. (Le travail le plus important et le plus chronophage consiste à concevoir et à contrôler ses algorithmes MCMC, comme dans les chapitres précédents, mais pas à établir des théorèmes de convergence, donc le lecteur ne doit pas s’inquiéter !)
6.2
Aperçu sur la théorie des chaînes de Markov
Cette section se veut être un bref rappel sur les chaînes de Markov afin de définir le vocabulaire utilisé. Si le lecteur a des doutes ou souhaite en savoir plus sur ces notions, il peut consulter des ouvrages plus spécialisés, tels que Robert & Casella (2004, Chapitre 6) ou Meyn & Tweedie (1993), car on ne traitera pas de théorie de convergence dans ce livre. Une chaîne de Markov {X (t) } est une suite de variables aléatoires dépendantes X (0) , X (1) , X (2) , . . . , X (t) , . . .
Chapitre 6. Algorithmes de Metropolis–Hastings
143
telles que X (t) sachant les variables passées ne dépend que de X (t−1) . On appelle cette probabilité conditionnelle un noyau de transition ou un noyau markovien K ; c’est-à-dire, X (t+1) | X (0) , X (1) , X (2) , . . . , X (t) ∼ K(X (t) , X (t+1) ) . Un exemple simple de chaîne de Markov est la marche aléatoire, qui satisfait X (t+1) = X (t) + t , où t ∼ N (0, 1), indépendamment de X (t) ; par conséquent, le noyau markovien K(X (t) , X (t+1) ) correspond à une densité N (X (t) , 1). Dans la plupart des cas, les chaînes de Markov qui interviennent dans le cadre des algorithmes de Monte-Carlo par chaînes de Markov (MCMC) satisfont une propriété de stabilité très forte. En effet, il existe une loi de probabilité par construction pour ces chaînes, c’est-à-dire une loi de probabilité f telle que, si X (t) ∼ f , alors X (t+1) ∼ f . Ainsi, formellement, le noyau et la loi stationnaire satisfont l’équation K(x, y)f (x)dx = f (y). (6.1) X
L’existence d’une loi stationnaire (ou de la stationnarité) impose une contrainte préliminaire sur K dite d’irréductibilité en théorie des chaînes de Markov. Elle énonce que K autorise des mouvements dans tout l’espace d’état, à savoir, quelle que soit la valeur initiale X (0) , la probabilité que la suite {X (t) } atteigne n’importe quelle région de l’espace d’état est non nulle. (Une condition suffisante est que K(x, ·) > 0.) L’existence d’une loi stationnaire a des conséquences importantes sur le comportement de la chaîne {X (t) }. Notamment la plupart des chaînes qui interviennent dans des algorithmes MCMC sont récurrentes, c’est-à-dire qu’elles visitent dans leur histoire tout ensemble non négligeable un nombre infini de fois. Exercice 6.1 Considérer la chaîne de Markov définie par X (t+1) = X (t) + t , où t ∼ N (0, 1). En simulant X (0) ∼ N (0, 1), tracer l’histogramme d’un échantillon de X (t) pour t ≤ 104 et = .9. Vérifiez l’adéquation éventuelle de la loi stationnaire N (0, 1/(1 − 2 )).
Dans le cas de chaînes récurrentes, la loi stationnaire est aussi une loi limite dans le sens où la loi limite de X (t) est f pour presque toute valeur initiale X (0) . Cette propriété, aussi appelée ergodicité, a des conséquences majeures du point de vue des simulations. En effet, si un noyau donné K induit une chaîne de Markov ergodique de loi stationnaire f , alors générer une chaîne à partir de ce noyau K induira finalement des simulations selon f . De plus, pour des fonctions intégrables h, la moyenne standard vérifie T 1 h(X (t) ) −→ Ef [h(X)] , T t=1
(6.2)
144
Méthodes de Monte-Carlo avec R
ce qui signifie que la Loi des Grands Nombres, sur laquelle se fondent les méthodes de Monte-Carlo (Section 3.2) s’applique aussi dans le cadre des algorithmes MCMC. (On l’appelle parfois le Théorème Ergodique.) Nous ne discuterons pas davantage de la théorie de la convergence des algorithmes MCMC, car la plupart des versions standard de ces algorithmes, comme l’algorithme de Metropolis–Hastings ou l’échantillonneur de Gibbs, sont presque toujours théoriquement convergents. En fait, le véritable problème posé par les algorithmes MCMC, malgré ces garanties théoriques de convergence, est que leur mise en œuvre pratique peut impliquer un temps de convergence très long ou, pire, laisser penser que la convergence est atteinte, alors que des aspects importants de f sont manqués, comme souligné dans le Chapitre 8.
Il existe toutefois un cas important où il n’y a jamais convergence des algorithmes MCMC. Cette situation correspond à une procédure bayésienne employée à tort : lorsque la distribution a posteriori est impropre (Robert, 2001), la chaîne de Markov associée à cet a posteriori ne peut pas être récurrente. L’utilisation d’un a priori impropre f (x) dans des modèles complexes est courante et il est donc possible que le produit vraisemblance × a priori, (x) × f (x), ne soit pas intégrable. Ce problème peut de plus ne pas être détecté du fait de la complexité du modèle (comme par exemple un grand nombre de paramètres). Dans ce cas, on peut toujours simuler une chaîne de Markov associée à la fonction cible (x) × f (x), mais elle ne convergera pas. Au mieux, la chaîne de Markov aura rapidement un comportement divergent, ce qui montrera qu’il y a un problème avec la loi cible. Malheureusement, dans le pire des cas, cette chaîne de Markov ne montre en pratique aucun signe visible d’instabilité ou de manque de convergence et, par conséquent, le problème passe inaperçu. Ce problème est discuté plus en détail dans la Section 7.6.4 du chapitre suivant. Exercice 6.1 Montrer que la marche aléatoire sur R, X (t) = X (t−1) + t , où t ∼ N (0, 1) n’a pas de loi stationnaire. Donner la distribution de X (t) pour t = 104 et t = 106 lorsque X (0) = 0 et en déduire que X (t) n’a pas de loi limite.
6.3
Algorithmes de Metropolis–Hastings élémentaires
La manière dont fonctionnent les méthodes de Monte-Carlo par chaînes de Markov est simple à décrire. Étant donnée une densité cible f , on construit un noyau de Markov K de loi stationnaire f , puis on génère une chaîne de Markov (X (t) ) en utilisant ce noyau, de telle sorte que la loi limite de (X (t) ) soit f . Les intégrales dépendant de f peuvent alors être approchées par le Théorème Ergodique (6.2). A priori, la difficulté devrait provenir de la construction du noyau K associé à une densité arbitraire f . Mais, presque miraculeusement, il existe des méthodes permettant de
Chapitre 6. Algorithmes de Metropolis–Hastings
145
construite ces noyaux qui sont universelles, au sens où elles sont théoriquement valides quelle que soit f ! L’algorithme de Metropolis–Hastings est un exemple de ces méthodes universelles. (L’échantillonnage de Gibbs, décrit au Chapitre 7, en est un autre exemple avec un potentiel tout aussi général.) La loi cible f étant donnée, on choisit une densité conditionnelle instrumentale q(y|x) qui, en pratique, est facile à simuler. En fait, q peut être quasiment arbitraire dans la mesure où les seules conditions théoriques nécessaires à la bonne marche de l’algorithme sont (a) de connaître le rapport f (y)/q(y|x) à une constante indépendante de x près et (b) que q(·|x) ait une dispersion assez forte pour permettre à la chaîne de Markov d’explorer tout le support de f . Encore une fois, insistons sur la propriété formidable de l’algorithme de Metropolis–Hastings qui est que, quelle que soit q, on peut construire un noyau de Metropolis–Hastings tel que f est sa loi stationnaire.
6.3.1
Un algorithme MCMC générique
L’algorithme de Metropolis–Hastings associé à la densité cible f et la densité conditionnelle q fournit une chaîne de Markov (X (t) ) selon le noyau de transition suivant :
Algorithme 4 (Metropolis–Hastings) Étant donné x(t) , 1. Générer Yt ∼ q(y|x(t) ). 2. Choisir
X (t+1) =
Yt x(t)
avec probabilité avec probabilité
où ρ(x, y) = min
ρ(x(t) , Yt ), 1 − ρ(x(t) , Yt ),
f (y) q(x|y) ,1 f (x) q(y|x)
.
L’implémentation générique en R est directe dès qu’on dispose d’un générateur pour q(y|x), noté ici geneq(x). Si x[t] dénote la valeur de X (t) , les commandes > y=geneq(x[t]) > if (runif(1)
146
Méthodes de Monte-Carlo avec R
produisent la valeur suivante x[t1]+ de la chaîne de Markov, car la valeur y est toujours acceptée lorsque le rapport est supérieur à 1. On appelle q la loi de proposition (ou loi instrumentale ou loi candidate) et la probabilité ρ(x, y) la probabilité d’acceptation de Metropolis–Hastings. Il faut distinguer cette dernière du taux d’acceptation, qui est la moyenne de la probabilité d’acceptation sur les itérations T 1 ρ(X (t) , Yt ) = ρ(x, y)f (x)q(y|x) dydx. T →∞ T t=0
ρ = lim
Comme nous le verrons dans la Section 6.5, cette quantité permet d’évaluer la performance de l’algorithme. Alors qu’à première vue, l’Algorithme 4 ne semble pas se distinguer de l’Algorithme 2 si ce n’est sur la notation, ils diffèrent sur deux points fondamentaux. Leur utilisation est la première différence, puisque l’Algorithme 2 vise à maximiser une fonction h(x), tandis que l’objectif de l’Algorithme 4 est d’explorer le support de la densité f selon sa probabilité. La deuxième différence réside dans leurs propriétés de convergence. Avec le choix approprié d’un programme de température Tt dans l’Algorithme 2, l’algorithme de recuit simulé converge vers le maximum de la fonction h, alors que l’algorithme de Metropolis–Hastings converge vers la loi f elle-même. Enfin, le fait de modifier la proposition q pendant les itérations de l’Algorithme 4 peut avoir des conséquences catastrophiques sur la qualités de la convergence de cet algorithme vers la loi f , comme indiqué dans la Section 8.5. L’Algorithme 4 satisfait la condition d’équilibre ponctuel (detailed balance condition en anglais), f (x)K(y|x) = f (y)K(x|y) , (6.3) de laquelle nous pouvons imédiatement déduire que f est la loi stationnaire de la chaîne {X (t) } en intégrant en x chaque côté de l’égalité (voir l’Exercice 6.5). Cet Algorithme 4 est donc naturellement associé à f puisque sa loi stationnaire découle assez facilement de la condition d’équilibre ponctuel pour un choix arbitraire du couple (f, q). En pratique, la performance de l’algorithme va bien sûr dépendre fortement du choix de q ; considérons tout d’abord un exemple simple dans lequel l’Algorithme 4 équivaut à simuler un échantillon iid. Exemple 6.1 (Algorithme de Metropolis–Hastings pour des variables bêta) Reprenons l’Exemple 2.7 dans lequel nous avons utilisé un algorithme d’acceptation– rejet pour simuler une loi bêta. Nous pouvons de la même manière utiliser l’algorithme de Metropolis–Hastings, où la loi cible f est la densité Be(2.7, 6.3) et la loi de proposition q est uniforme sur [0, 1], ce qui signifie qu’elle ne dépend pas de la valeur précédente de la chaîne. Un échantillon de Metropolis–Hastings est ensuite généré avec le code R suivant : > a=2.7; b=6.3; c=2.669 # valeurs initiales
Chapitre 6. Algorithmes de Metropolis–Hastings
147
> Nsim=5000 > X=rep(runif(1),Nsim) # initialisation de la chaine > for (i in 2:Nsim){ + Y=runif(1) + rho=dbeta(Y,a,b)/dbeta(X[i-1],a,b) + X[i]=X[i-1] + (Y-X[i-1])*(runif(1)
0.4 0.0
0.2
X
0.6
Une représentation de la suite (X (t) ) par plot n’est pas intéressante pour visualiser la convergence puisque la chaîne explore le même intervalle à des moments différents. Si on agrandit sur les dernières simulations, pour 4500 ≤ t ≤ 4800, la Figure 6.1 montre certaines propriétés caractéristiques des chaînes de Metropolis– Hastings, notamment que, sur certains intervalles de temps, la suite (X (t) ) ne change pas car toutes les valeurs Yt correspondantes sont rejetées. Notons que toutes les valeurs qui se trouvent répétées plusieurs fois dans l’échantillon doivent être gardées comme telles ; sinon, l’approximation de f n’est plus valide ! En effet, en considérant l’ensemble de la chaîne simulée comme un échantillon, son histogramme approche correctement la cible Be(2.7, 6.3). La Figure 6.2 montre les histogrammes et les densités superposées pour cet échantillon de Metropolis–Hastings et pour un échantillon (exact) iid simulé par la commande rbeta. L’adéquation est similaire et peut être testée plus avant par le test de Kolmogorov–Smirnov d’égalité entre deux échantillons :
4500
4550
4600
4650
4700
4750
4800
Iterations
Fig. 6.1 – Suite (X (t) ) pour t = 4500, . . . , 4800, simulée par l’algorithme de Metropolis–Hastings avec une proposition uniforme et une cible Be(2.7, 6.3). > ks.test(jitter(X),rbeta(5000,a,b)) Two-sample Kolmogorov-Smirnov test data: jitter(X) and rbeta(5000,a,b) D = 0.0202, p-value = 0.2594 alternative hypothesis: two-sided
148
Méthodes de Monte-Carlo avec R
qui affirme que les deux échantillons sont compatibles avec l’hypothèse de même loi. Un test supplémentaire (quoique faible) est obtenu par les moments. Par exemple, puisque la moyenne et la variance d’une loi Be(a, b) sont a/(a+b) et ab/(a+b)2 (a+ b + 1) respectivement, on peut comparer ¯ = .301 , X
S 2 = .0205 ,
0.0
0.0
0.5
0.5
1.0
1.0
1.5
1.5
2.0
2.0
2.5
2.5
3.0
3.0
3.5
avec les valeurs théoriques de .3 pour la moyenne et de .021 pour la variance.
0.0
0.2
0.4
0.6
0.8
0.0
0.2
0.4
0.6
0.8
Fig. 6.2 – Histogrammes de variables aléatoires bêta Be(2.7, 6.3) avec la densité superposée. A gauche, les variables ont été générées par l’algorithme de Metropolis– Hastings avec une loi de proposition uniforme et à droite les variables aléatoires ont été directement simulées en utilisant rbeta(n,2.7,6.3). Alors que les résultats des simulations MCMC et de la simulation exacte apparaissent comme identiques sur la Figure 6.2, il est important de garder en mémoire qu’un échantillon de Monte-Carlo par chaînes de Markov est corrélé, à l’inverse de l’échantillon iid. Cela signifie que la qualité de l’échantillon est nécessairement dégradée ou, en d’autres termes, que l’on a besoin de plus de simulations pour obtenir la même précision. Cette question est formalisée par la notion de taille effective d’échantillon pour les chaînes de Markov (Section 8.4.3). Dans le cas d’une proposition symétrique (c’est-à-dire lorsque q(x|y) = q(y|x)), la probabilité d’acceptation ρ(xt , yt ) est déterminée par le rapport de lois cibles f (yt )/f (x(t) ) et donc même la probabilité d’acceptation est indépendante de q. (Ce cas particulier est détaillé dans la Section 6.4.1.) Encore une fois, les algorithmes de Metropolis–Hastings partagent la même propriété que l’Algorithme 2 d’optimisation stochastique (voir Section 5.5), à savoir qu’ils acceptent toujours les valeurs yt telles que le rapport f (yt )/q(yt |x(t) ) est supérieur à la valeur “précédente" f (x(t) )/q(x(t) |yt ). Certaines valeurs yt telles que le rapport est inférieur peuvent aussi être acceptées, en fonction de la valeur du ratio des rapports, mais
Chapitre 6. Algorithmes de Metropolis–Hastings
149
si le ratio est trop faible, la valeur proposée yt sera presque toujours rejetée. Cette propriété indique comment le choix de q peut avoir un impact sur la performance de l’algorithme de Metropolis–Hastings. Si le domaine exploré par q (son support) est trop petit, comparé avec le domaine de définition de f , la chaîne de Markov aura des difficultés à explorer ce domaine et donc elle convergera (si elle converge dans la pratique) très lentement. Une autre propriété intéressante de l’algorithme de Metropolis–Hastings est qu’il ne dépend que des rapports f (yt )/f (x(t) )
et
q(x(t) |yt )/q(yt |x(t) ) .
Par conséquent, il est indépendant des constantes de normalisation. En outre, puisque l’important est la capacité à (a) simuler à partir de q et (b) calculer le rapport f (yt )/q(yt |x(t) ), la proposition q peut être choisie de telle manière que les parties non explicites de f soient éliminées dans le rapport.
Puisque q(y|x) est une loi conditionnelle, elle s’intègre à 1 en y et donc, comme telle, elle implique un terme fonctionnel qui dépend à la fois de y et de x ainsi qu’un terme de normalisation qui dépend de x, à savoir q(y|x) = C(x)˜ q (x, y). Nous avons remarqué précédemment que la probabilité d’acceptation de Metropolis–Hastings ne dépend pas des constantes de normalisation ; les termes tels que C(x) sont évidemment exclus de cette remarque puisqu’ils interviennent dans la probabilité d’acceptation, faute de quoi la stationnarité de la chaîne serait compromise.
6.3.2
Algorithme de Metropolis–Hastings indépendant
L’algorithme de Metropolis–Hastings fourni dans la Section 6.3.1 permet d’utiliser une loi de proposition q qui ne dépend que de l’état présent de la chaîne. Si on impose à la proposition q d’être indépendante de cet état présent (c’est-à-dire, q(y|x) = g(y)), on obtient un cas particulier de l’algorithme de départ :
Algorithme 5 (Metropolis–Hastings indépendant) Étant donné x(t) 1. Générer Yt ∼ g(y). 2. Choisir X (t+1) =
⎧ ⎨Y ⎩
t
x(t)
avec probabilité sinon.
min
f (Yt ) g(x(t) ) ,1 f (x(t) ) g(Yt )
150
Méthodes de Monte-Carlo avec R
Cette méthode apparaît donc comme une généralisation directe de la méthode d’acceptation–rejet au sens où la loi instrumentale est la même densité g que dans la méthode d’acceptation–rejet. Aussi, si les valeurs acceptées sont différentes, les valeurs proposées Yt sont les mêmes. En tant que méthodes de simulation génériques, les algorithmes de Metropolis– Hastings et les méthodes d’acceptation–rejet (Section 2.3) possèdent des similarités qui permettent de les comparer, même s’il est plutôt rare d’envisager utiliser une solution de Metropolis–Hastings lorsque l’acceptation–rejet est possible. Notons en particulier les points suivants : a. L’échantillon produit par acceptation–rejet est iid, tandis que celui obtenu par Metropolis–Hastings ne l’est pas. Bien que les Yt soient générés de manière indépendante, l’échantillon obtenu n’est pas iid, ne serait-ce que parce que la probabilité d’acceptation de Yt dépend de X (t) (mis à part le cas trivial où f = g). b. On trouve des occurrences répétées d’une même valeur dans l’échantillon de Metropolis–Hastings, puisque le rejet de Yt implique la répétition de X (t) au temps t + 1. Cela joue sur les tests tels que ks.test qui n’acceptent pas les doublons. c. L’étape d’acceptation de l’algorithme d’acceptation–rejet nécessite le calcul de la borne supérieure M ≥ supx f (x)/g(x), dont on n’a pas besoin dans l’algorithme de Metropolis–Hastings. C’est une propriété très intéressante de Metropolis–Hastings si le calcul de M demande beaucoup de temps ou si la valeur de M utilisée est imprécise et donc implique un gaspillage de simulations. Exercice 6.2 Calculer la probabilité d’acceptation ρ(x, y) dans le cas où q(y|x) = g(y). En déduire que, pour une valeur x(t) donnée, l’algorithme de Metropolis–Hastings associé au même couple (f, g) qu’un algorithme d’acceptation–rejet accepte la valeur proposée Yt plus souvent que l’acceptation–rejet.
L’exercice suivant donne une première comparaison de l’algorithme de Metropolis– Hastings avec un algorithme d’acceptation–rejet déjà utilisé dans l’Exercice 2.15 dans le cas où les deux algorithmes sont basés sur la même proposition. Exercice 6.2 Considérer comme cible la loi G(α, β) et comme proposition la loi G([α], b) (où [a] dénote la partie entière de a). a. Déterminer la méthode d’acceptation–rejet correspondante et montrer que, quand β = 1, le choix optimal de b est b = [α]/α. b. Générer 5000 variables aléatoires G(4, 4/4.85) pour calculer un échantillon G(4.85, 1) (noter qu’on obtient moins de 5000 variables aléatoires). c. Utiliser le même échantillon dans l’algorithme de Metropolis–Hastings correspondant pour générer 5000 variables aléatoires G(4.85, 1).
Chapitre 6. Algorithmes de Metropolis–Hastings
151
d. Comparer les algorithmes en utilisant (i) leur taux d’acceptation et (ii) les estimations des moyenne et variance de la loi G(4.85, 1) ainsi que leurs erreurs. (Suggestion : étudier la corrélation entre les deux échantillons.)
0HWURSROLVï+DVWLQJV
$FFHSWï5HMHFW
$FFHSWï5HMHFW
0HWURSROLVï+DVWLQJV
Fig. 6.3 – Histogrammes et fonctions d’autocovariance pour un algorithme d’acceptation–rejet pour une loi gamma (gauche) et pour un algorithme de Metropolis–Hastings (droite). La cible est une loi G(4.85, 1) et la proposition une loi G(4, 4/4.85). La fonction d’autocovariance est calculée avec la fonction de R acf. La Figure 6.3 illustre l’Exercice 6.2 en comparant les échantillons d’acceptation– rejet et de Metropolis–Hastings. Dans ce cas, en pratique, l’algorithme de Metropolis–Hastings indépendant a une performance très proche de celle de l’algorithme d’acceptation-rejet, qui génère en fait des variables aléatoires parfaites et indépendantes. En théorie, il est également possible d’utiliser un couple (f, g) tel que le rapport f /g n’est pas borné (M n’existe pas) et donc d’utiliser un algorithme de Metropolis– Hastings lorsque l’acceptation–rejet n’est pas possible. Cependant, comme expli-
152
Méthodes de Monte-Carlo avec R
qué dans Robert & Casella (2004) et illustré dans l’exemple formel suivant, la performance de l’algorithme de Metropolis–Hastings est alors très mauvaise, tandis qu’elle est très bonne dès que sup f /g = M < ∞. Exemple 6.2 (Lois de Cauchy à partir de lois normales) Pour générer une variable aléatoire de Cauchy (c’est-à-dire, quand f correspond à une densité C(0, 1)), il est possible en théorie d’utiliser une loi de proposition N (0, 1) dans un algorithme de Metropolis–Hastings. Voici le code R correspondant : > Nsim=10^4 > X=c(rt(1,1)) # initialisation de la chaine > for (t in 2:Nsim){ + Y=rnorm(1) # normal candidat + rho=dt(Y,1)*dnorm(X[t-1])/(dt(X[t-1],1)*dnorm(Y)) + X[t]=X[t-1] + (Y-X[t-1])*(runif(1) pnorm(12.78,log=T,low=F)/log(10) [1] -36.97455 (ce qui signifie que la probabilité de dépasser 12.78 est 10−37 ) et que la chaîne de Markov reste constante pendant les 104 itérations considérées ! Si la chaîne commence par une valeur plus centrale, le résultat ressemblera bien plus à un échantillon normal qu’à un échantillon de Cauchy, comme le montre la Figure 6.4 au centre à droite. D’autre part, les très grandes valeurs de la chaîne seront fortement pondérées, avec pour conséquence la présence de longues séries où la chaîne reste constante, comme le montre la Figure 6.4, le pic isolé dans l’histogramme démontrant une telle occurrence. En revanche, si on utilise comme proposition indépendante g une loi de Student à 0.5 degré de liberté (c’est-à-dire, si on remplace Y=rnorm(1) par Y=rt(1,0.5) dans le code ci-dessus), le comportement de la chaîne est complètement différent. De très grandes valeurs de Yt peuvent se produire de temps à autre (comme le montre la Figure 6.4 en haut à gauche), l’adéquation de l’histogramme est très bonne (au centre à gauche) et la suite ne présente visiblement pas de corrélation (en bas à gauche).
153
−4
0
−2
2000
0
4000
1
2
6000
3
Chapitre 6. Algorithmes de Metropolis–Hastings
200
400
600
800
−10
−5
0
5
10
0
200
400
600
800
−10
−5
0
5
10
0.00 1.0 0.8 0.6 0.4 0.2 0.0
0.0
0.2
0.4
0.6
0.8
1.0
0.00
0.10
0.10
0.20
0.20
0.30
0.30
0
0
10
20
30
40
50
0
10
20
30
40
50
Fig. 6.4 – Comparaison de deux algorithmes de Metropolis–Hastings pour une cible de Cauchy en générant (gauche) à partir d’une proposition N (0, 1) et (droite) à partir d’une proposition T1/2 fondés sur 105 simulations. (haut) Extraits de la chaîne (X (t) ) ; (centre) histogrammes des échantillons ; (bas) graphes d’autocorrélation obtenus par la fonction acf.
Si on considère l’approximation d’une quantité telle que Pr(X < 3), dont la valeur exacte est pt(3,1) (c’est-à-dire, 0.896), la différence entre les deux choix de g apparaît clairement sur la Figure 6.5, obtenue par
154
Méthodes de Monte-Carlo avec R
> plot(cumsum(X<3)/(1:Nsim),lwd=2,ty="l",ylim=c(.85,1)). La chaîne fondée sur la proposition normale est constamment à côté de la vraie valeur, tandis que la chaîne fondée sur la loi de Student à .5 degré de liberté converge très vite vers cette valeur. Notons qu’en réalité, d’un point de vue théorique, l’algorithme de Metropolis–Hastings fondé sur une proposition normale converge toujours, mais avec une convergence tellement lente qu’elle n’est pas exploitable.
Fig. 6.5 – Exemple 6.2 : graphe de couverture cumulée pour une suite de Cauchy générée par un algorithme de Metropolis–Hastings fondé sur une proposition N (0, 1) (haut) et sur une proposition T1/2 (bas). Après 105 itérations, l’algorithme de Metropolis–Hastings fondé sur la proposition normale n’a toujours pas convergé. Nous nous tournons maintenant vers un exemple statistiquement plus réaliste qui correspond au cas général dans lequel une proposition indépendante est déduite de l’estimation préalable des paramètres du modèle. Par exemple, en simulant dans une loi a posteriori π(θ|x) ∝ π(θ)f (x|θ), cette proposition indépendante pourrait être une loi normale ou une loi de Student centrée sur l’estimateur du maximum de vraisemblance (EMV) θˆ et de matrice de variance-covariance égale à l’inverse de la matrice d’information de Fisher. Exemple 6.3 (Metropolis–Hastings pour la régression) La base de données de R cars relie les distances de freinage (y) à la vitesse (x) pour un échantillon de voitures. La Figure 6.6 montre les données et la courbe quadratique obtenue par régression par la fonction de R lm. On postule pour cette base de données un modèle quadratique yij = a + bxi + cx2i + εij ,
i = 1, . . . , k,
j = 1, . . . ni ,
où on suppose que les variables aléatoires εij ∼ N (0, σ 2 ) sont indépendantes. La
Chapitre 6. Algorithmes de Metropolis–Hastings
155
fonction de vraisemblance est donc proportionnelle à ⎫ ⎧ N/2 ⎬ ⎨ −1 1 2 2 , exp (y − a − bx − cx ) ij i i ⎭ ⎩ 2σ 2 σ2 ij
où N = i ni est le nombre total d’observations. On peut voir cette fonction de vraisemblance comme une loi a posteriori sur a, b, c et σ 2 (par exemple basée sur un a priori plat), et, comme exemple jouet, on peut essayer de simuler dans cette loi avec un algorithme de Metropolis–Hastings (puisque cette loi peut être simulée directement ; voir l’Exercice 6.9). Pour commencer, on peut obtenir un candidat en générant des coefficients en fonction de leur loi d’échantillonnage obtenue par régression. Ainsi, on peut utiliser la commande R > x2=x^2 > summary(lm(y∼x+x2)) pour obtenir les résultats suivants Coefficients : Estimate Std. Error t value Pr(> |t|) (Intercept) 2.63328 14.80693 0.178 0.860 x 0.88770 2.03282 0.437 0.664 x2 0.10068 0.06592 1.527 0.133 Residual standard error : 15.17 on 47 degrees of freedom Comme suggéré précédemment, on peut utiliser comme lois candidates les lois normales centrées sur les EMV a ∼ N (2.63, (14.8)2 ),
b ∼ N (.887, (2.03)2 ),
c ∼ N (.100, (0.065)2 ),
σ−2 ∼ G(n/2, (n − 3)(15.17)2 ),
0
20
40
60
80 100 120
dans un algorithme de Metropolis–Hastings afin de générer des échantillons (a(i) , b(i) , c(i) ) suivant la loi a posteriori. La Figure 6.6 illustre la variabilité des courbes associées au résultat de cette simulation.
5
10
15
20
25
Fig. 6.6 – Les données de freinage et la courbe quadratique (foncé) obtenue par moindres carrés avec la fonction lm. Les courbes grises représentent l’échantillon de Monte-Carlo (a(i) , b(i) , c(i) ) et montrent la variabilité des courbes obtenues par régression sur les 500 dernières itérations des 4000 simulations.
156
6.4
Méthodes de Monte-Carlo avec R
Sélection des lois de proposition
L’étude des algorithmes de Metropolis–Hastings indépendants est certainement intéressante, mais leur implémentation pratique est plus problématique. En effet, leur utilisation est délicate dans les cas complexes car la construction de la loi de proposition est compliquée — si on utilise des simulations, c’est justement parce que des estimations telles que l’EMV sont difficiles — et car ce choix de la proposition influence grandement la performance de l’algorithme. Plutôt que de construire une proposition arbitraire ou utilisant une approximation non paramétrique fondée sur des tirages préalables — ce qui ne peut guère être envisagé en dimension moyenne et encore moins grande — il est plus réaliste de collecter de l’information sur la cible à chaque itération, c’est-à-dire en explorant le voisinage de la valeur présente de la chaîne. Si le mécanisme d’exploration possède assez d’énergie pour visiter le support de la cible f jusqu’à ses frontières, alors la méthode révélera bien la complexité de f . (Fondamentalement, la même intuition fonctionne pour l’algorithme de recuit simulé de la Section 5.3.2.)
6.4.1
Marches aléatoires
Ainsi, une approche plus naturelle pour la construction pratique d’une proposition de Metropolis–Hastings consiste à prendre en compte la valeur précédemment simulée pour générer la suivante ; c’est-à-dire à explorer localement le voisinage de la valeur présente de la chaîne de Markov. L’implémentation de cette idée consiste à simuler Yt de la manière suivante Yt = X (t) + εt , où εt est une perturbation aléatoire de loi g indépendante de X (t) , par exemple une loi uniforme ou normale, signifiant que Yt ∼ U (X (t) − δ, X (t) + δ) ou Yt ∼ N (X (t) , τ 2 ) dans le cas unidimensionnel. Pour reprendre les notations de l’algorithme de Metropolis–Hastings général, la densité de proposition q(y|x) est ici de la forme g(y − x). La chaîne de Markov associée à q est une marche aléatoire (définie dans la Section 6.2) où la densité g est symétrique en 0 (elle satisfait g(−t) = g(t)). Mais du fait de l’étape d’acceptation de Metropolis–Hastings supplémentaire, la chaîne de Markov de l’algorithme de Metropolis–Hastings {X (t) } n’est pas une marche aléatoire. Cette approche nous amène à l’algorithme de Metropolis–Hastings suivant, qui est d’ailleurs l’algorithme original proposé par Metropolis, Rosenbluth, Rosenbluth, Teller & Teller (1953).
Chapitre 6. Algorithmes de Metropolis–Hastings
157
Algorithme 6 (Metropolis–Hastings par marche aléatoire) Étant donné x(t) , 1. Générer Yt ∼ g(y − x(t) ). 2. Choisir Yt
avec probabilité min 1, f (Yt ) f (x(t) ) ,
x(t)
sinon.
X (t+1) =
Comme on l’a remarqué plus haut, la probabilité d’acceptation ne dépend pas de g. Cela signifie que pour un couple (x(t) , yt ) donné, la probabilité d’acceptation est la même, que yt soit généré par une loi normale ou par une loi de Cauchy. Clairement, on obtient des valeurs différentes de Yt et un taux d’acceptation différent en modifiant g, donc le choix de g n’est pas sans effet sur le comportement de l’algorithme, mais cette invariance de la probabilité d’acceptation mérite d’être soulignée. Elle est lié au fait que, quelle que soit la densité (symétrique) g, la mesure invariante associée à la marche aléatoire est la mesure de Lebesgue sur l’espace correspondant (voir Meyn & Tweedie, 1993). Exemple 6.4 (Lois normales à partir de lois uniformes) L’exemple historique de Hastings (1970) considère le problème formel de génération d’une loi normale N (0, 1) fondée sur une marche aléatoire comme proposition, égale à la loi uniforme sur [−δ, δ]. La probabilité d’acceptation est alors ρ(x(t) , yt ) = exp{(x(t)2 − yt2 )/2} ∧ 1. La Figure 6.7 décrit trois échantillons de 5000 points obtenus par cette méthode pour δ = 0.1, 1, et 10 et montre clairement la différence entre les chaînes obtenues : une proposition trop serrée ou trop large (c’est-à-dire une valeur trop petite ou trop grande de δ) a pour résultat une autocovariance plus grande et une convergence plus lente. Remarquons les formes différentes obtenues pour δ = 0.1 et δ = 10 dans les graphes du haut : dans le premier cas, la chaîne de Markov se déplace à chaque itération, mais très lentement, tandis que dans le second cas, elle reste constante sur de longs intervalles de temps. Comme on le remarque dans cet exemple, calibrer l’échelle δ de la marche aléatoire est crucial pour obtenir une bonne approximation de la loi cible en un nombre d’itérations raisonnable. Dans les situations plus réalistes, cette calibration devient une question très difficile, qu’on traitera en partie en Section 6.5 puis plus en détail au Chapitre 8.
Méthodes de Monte-Carlo avec R
1 −2 2200
2400
2000
ACF 20
30
0.3 0.1 0.0 −4
−2
0
5 10
0
2
4
20
30
−4
−2
0
5 10
0
2
4
0.0 0.2 0.4 0.6 0.8 1.0
4
ACF
5 10
2
0.0 0.2 0.4 0.6 0.8 1.0
0
0
2400
0.2
0.3 0.0
0.1
0.2
0.3 0.2 0.1 0.0
−2
0.0 0.2 0.4 0.6 0.8 1.0
−4
2200
0.4
2000
0.4
2400
−1
−3 −2 −1
−0.5 −1.5
2200
0.4
2000
ACF
0
0
0.5
1
1.5
2
2
158
20
30
Fig. 6.7 – Résultats d’algorithmes de Metropolis–Hastings par marche aléatoire pour l’Exemple 6.4. La partie gauche a pour proposition une loi U (−.1, .1), la partie centrale une loi U (−1, 1) et la partie droite une loi U (−10, 10). Les graphes du haut représentent les 500 dernières itérations des chaînes, les graphes du milieu indiquent l’adéquation des histogrammes à la cible et les graphes du bas donnent les fonctions d’autocovariance respectives.
Exemple 6.5 (Metropolis–Hastings pour les mélanges) L’exemple de mélange détaillé dans l’Exemple 5.2 à partir du maximum de vraisemblance peut aussi être envisagé d’un point de vue bayésien en utilisant par exemple l’a priori uniforme U(−2, 5) à la fois sur μ1 et μ2 . La loi a posteriori qui nous intéresse est alors proportionnelle à la vraisemblance. Implémenter l’Algorithme 6 dans cet exemple est étonnamment simple dans le sens où l’on peut réutiliser en grande partie l’implémentation de l’Algorithme 2 de recuit simulé, déjà programmé dans l’Exemple 5.2. En effet, le cœur du code R est très similaire, si ce n’est que l’augmentation de température n’est pas nécessaire ici :
Chapitre 6. Algorithmes de Metropolis–Hastings > > > > > + + + + + +
159
scale=1 the=matrix(runif(2,-2,5),ncol=2) curlike=hval=like(x) Niter=10^4 for (iter in (1:Niter)){ prop=the[iter,]+rnorm(2)*scale if ((max(-prop)>2)||(max(prop)>5)|| (log(runif(1))>like(prop)-curlike)) prop=the[iter,] curlike=like(prop) hval=c(hval,curlike) the=rbind(the,prop)}
5 4 3
5 4 3
4
5
Puisque le problème principal de cette cible est l’existence de deux modes, l’un plus petit que l’autre, on peut comparer l’impact du choix d’échelles différentes sur le comportement de la chaîne en terme d’exploration des deux modes et de leur attraction. Lorsque l’échelle est fixée à 1, les modes sont très attractifs et, sur 104 itérations, il n’est pas rare de n’explorer qu’un seul mode, comme le montre la Figure 6.8 (gauche et droite) pour les deux modes. Si l’échelle passe à 2, la proposition possède une variabilité suffisante pour atteindre les deux modes, mais cela a un prix. Sur 104 itérations, la chaîne ne change de valeur que 23 fois ! Pour l’échelle plus petite, à savoir δ = 1, le nombre de changements et plutôt de l’ordre de 100, donc le taux d’acceptation est toujours très faible.
●
3
● ●
● ●
●
●
●
2
2
2
● ●●●● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ●● ● ●● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ●● ●●●
●● ● ● ● ● ●● ● ●● ● ●
●
●
μ2 1
μ2 1
1
μ2
●
●
● ●
−2
−1
0
1
2 μ1
3
4
5
0 −1 −2
−1
0
●
−2
−2
−1
0
● ● ●● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ●● ● ●●● ● ● ●● ● ● ● ●● ● ●● ●● ● ● ● ● ● ● ● ● ●●● ● ● ● ●●● ● ●
−2
−1
0
1
2 μ1
3
4
5
−2
−1
0
1
2
3
4
5
μ1
Fig. 6.8 – Impact du paramètre d’échelle d’une marche aléatoire sur l’exploration des modes dans un modèle de mélange : représentation de la chaîne de Markov (t) (t) (μ1 , μ2 ) superposée à la surface de la loi log–a posteriori avec l’échelle (à gauche et au centre) égale à 1 et l’échelle (à droite) égale à 2, avec 104 simulations et 500 observations simulées. Quand on utilise une marche aléatoire sur un domaine contraint, on peut se poser le problème de savoir si la marche aléatoire devrait être sous contrainte elle aussi. La réponse à cette question est non, au sens où l’utilisation de contraintes dans la
160
Méthodes de Monte-Carlo avec R
proposition modifie la fonction g et donc remet en cause la validité du rapport des cibles de l’Algorithme 6. Lorsque des valeurs yt sont proposées hors du domaine de f (c’est-à-dire lorsque f (yt ) = 0), la valeur proposée est rejetée et la valeur présente de la chaîne X (t) est dupliquée. Bien sûr, une marche aléatoire qui propose souvent des déplacements en dehors du domaine de f n’est que peu adéquate car la chaîne restera bloquée la plupart du temps ! Mais une telle proposition reste néanmoins correcte formellement.
6.4.2
Lois de proposition alternatives
Si l’algorithme de Metropolis–Hastings indépendant ne s’applique que dans des situations spécifiques, l’algorithme de Metropolis–Hastings par marche aléatoire apparaît souvent comme un algorithme de Metropolis–Hastings générique qui convient dans la plupart des cas. Néanmoins, la solution par marche aléatoire n’est pas nécessairement la meilleure solution dans le sens où (a) elle nécessite beaucoup d’itérations pour s’affranchir de certaines difficultés, notamment en présence de zones de basse probabilité entre les régions modales de f et (b) à cause de sa symétrie, elle passe environ la moitié des simulations à visiter des régions déjà explorées. Il existe des alternatives qui rompent la symétrie parfaite de la marche aléatoire afin de gagner en efficacité, mais qui ne sont pas toujours faciles à implémenter (voir, par exemple, Robert & Casella, 2004). L’algorithme de Langevin de Roberts & Rosenthal (1998) est l’une de ces alternatives. Il favorise les mouvements vers de plus grandes valeurs de f en incluant un gradient dans la proposition, Yt = X (t) +
σ2 ∇ log f (X (t) ) + σ t , 2
t ∼ g( ) ,
le paramètre σ étant le facteur d’échelle de la proposition. Lorsque l’on construit Yt de cette manière, le taux d’acceptation de Metropolis–Hastings est égal à
f (y) g [(x − y)/σ − σ ∇ log f (y)/2] ,1 . ρ(x, y) = min f (x) g [(y − x)/σ − σ ∇ log f (x)/2] Si ce schéma n’est pas sans rappeler les techniques de gradient stochastique de la Section 5.3.2, il en diffère pour deux raisons. D’abord, l’échelle σ est fixée dans l’algorithme de Langevin, alors qu’elle décroît dans la méthode du gradient stochastique. Ensuite, la valeur proposée Yt n’est pas nécessairement acceptée dans l’algorithme de Langevin, ce qui assure que la loi stationnaire de la chaîne est bien f . Exemple 6.6 (Régression probit) En utilisant le même modèle probit que dans l’Exemple 3.10, avec la base de données Pima.tr que nous connaissons bien maintenant, nous pouvons utiliser la fonction de vraisemblance like déjà définie page 57 et calculer le gradient explicitement
Chapitre 6. Algorithmes de Metropolis–Hastings
161
grad=function(a,b){ don=pnorm(q=a+outer(X=b,Y=da[,2],FUN="*")) x1=sum((dnorm(x=a+outer(X=b,Y=da[,2],FUN="*"))/don)*da[,1](dnorm(x=-a-outer(X=b,Y=da[,2],FUN="*"))/ (1-don))*(1-da[,1])) x2=sum(da[,2]*( (dnorm(x=a+outer(X=b,Y=da[,2],FUN="*"))/don)*da[,1](dnorm(x=-a-outer(X=b,Y=da[,2],FUN="*"))/ (1-don))*(1-da[,1]))) return(c(x1,x2)) } En implantant l’itération de base de l’algorithme de Langevin > > > + + +
prop=curmean+scale*rnorm(2) propmean=prop+0.5*scale^2*grad(prop[1],prop[2]) if (log(runif(1))>like(prop[1],prop[2])-likecursum(dnorm(prop,mean=curmean,sd=scale,lo=T))+ sum(dnorm(the[t-1,],mean=propmean,sd=scale,lo=T))){ prop=the[t-1,];propmean=curmean}
0.14 0.08
0.10
0.12
β2
0.16
0.18
0.20
il faut utiliser une valeur de scale suffisamment petite, car sinon grad(prop) produit des sorties NaN du fait que pnorm(q=a+outer(X=b,Y=da[,2],FUN="*")) vaut soit 1 soit 0. Avec une échelle égale à 0.01, la chaîne explore correctement la loi a posteriori, comme l’illustre la Figure 6.9, même si elle bouge très lentement. ● ● ● ● ● ● ● ●● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ●● ●● ● ●● ● ● ● ● ● ●● ● ● ●●● ● ●● ● ● ● ● ● ● ●● ● ● ●● ● ● ● ●●● ● ●● ● ● ● ●● ●● ● ● ●● ● ● ● ●● ● ●● ● ●●● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ●● ●● ●● ● ●● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ●●● ● ●● ● ● ● ● ●●●● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ●● ● ● ●● ● ● ● ● ●● ● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ●● ● ● ● ● ●● ● ● ●●● ● ● ● ●● ● ●● ● ●● ● ● ● ● ● ●● ● ● ●●● ●● ●●●●●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ● ● ● ●● ●● ●● ● ● ● ● ● ● ●● ● ● ● ●● ●●● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ●●● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ●●● ● ● ●● ●●● ● ● ●● ● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ● ●● ●●● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ●●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ●●● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ●●● ● ● ● ● ● ● ●● ●● ● ● ●●● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ●● ●● ●● ●● ●● ● ● ● ● ● ●●● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●●● ● ●●● ● ● ● ● ●● ● ● ●● ● ●●● ●●● ● ●● ● ● ● ● ●● ● ● ●● ● ● ●● ● ● ● ● ●●●● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ●● ● ● ● ●● ●●● ● ● ● ● ● ● ● ● ●●● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ●● ● ● ● ● ●●● ● ● ● ●● ●●● ● ● ● ● ● ●● ● ● ●● ● ●● ●● ● ● ● ● ● ●● ● ●● ● ● ● ● ●● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ●● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ●● ●● ● ● ● ● ● ●●● ● ●● ● ●● ● ● ● ● ●● ● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ●● ● ● ● ● ● ● ● ●●● ●● ● ●● ● ●● ● ● ●● ● ●● ● ●● ● ●● ● ● ● ●● ● ●● ● ● ●● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ●● ●● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ●● ● ● ●● ●● ●● ● ●● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ●● ●● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ●●●● ●● ● ● ● ● ● ● ●● ●●●● ● ● ● ● ● ●● ● ● ●● ● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ●● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ●● ● ●● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●●● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ●● ●● ● ● ●● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ●● ●● ● ● ● ● ● ● ● ● ● ●● ●● ●● ● ● ● ●● ● ● ● ● ●●● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ● ● ● ●●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ● ● ● ● ●● ●● ●● ●● ● ●● ● ● ● ● ● ●● ● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ●● ● ●● ● ● ● ● ● ● ● ●● ● ●● ● ● ●●● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ●●●● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ●● ●● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●●● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●●● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●●●● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ● ● ● ●● ● ●● ● ● ●●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ●● ● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ● ● ●● ●● ● ● ●● ● ● ● ● ● ● ● ●● ● ●● ● ●● ● ● ●● ● ● ●●● ● ●● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ● ●● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●●● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ● ● ● ●● ● ●● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ●● ● ●● ● ● ●● ● ●●●● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ●●● ● ● ●● ●● ● ●● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ● ● ●● ● ● ● ●● ●● ● ●● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ●●●●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ●● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ●●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ●● ● ● ●●●●● ● ● ●● ● ● ●● ● ● ● ●● ● ● ● ● ●●● ● ● ●● ●● ●● ● ● ●● ●● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ●● ● ● ●● ● ●● ●● ● ● ● ● ● ●● ●● ● ● ● ●● ● ● ● ● ●● ● ●● ● ● ● ●● ● ● ● ●● ● ● ●●● ●● ● ● ● ●● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ●● ● ●● ●● ● ● ● ● ● ● ● ● ● ●●● ● ● ● ● ● ● ● ●● ● ●● ● ●● ●●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ●● ● ●● ●● ● ●● ● ● ● ● ● ●●●●●● ● ●● ● ● ● ● ● ●● ●● ●● ●● ●● ● ● ● ● ● ● ● ● ● ●●● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ●●● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●●● ● ●● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ●● ●● ● ● ●● ● ●● ● ● ● ● ●● ● ● ●●● ● ●● ● ●● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ●● ● ● ●● ●● ● ● ● ●●● ●● ● ●● ● ● ● ●● ● ● ● ● ● ●● ● ●● ● ●●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ●● ● ● ●● ●●● ●● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ●● ● ● ● ●● ● ● ● ●● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ●● ● ●● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ●● ● ● ● ● ●● ●●● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ●● ●● ●● ● ●● ● ● ● ●● ●● ● ● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ●● ●● ●● ● ●● ● ● ●● ● ● ●●● ● ●●●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ●● ●●●● ● ● ● ●● ● ● ● ● ●● ● ● ●● ● ● ● ● ●● ●● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ●● ● ●● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ●●●● ● ● ● ●● ● ●● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ●●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ●●●● ● ●● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ●● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●●● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ●● ● ●●● ●● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ●●●● ● ●●● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ●● ● ●● ● ●● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ●●● ● ●● ●● ● ●● ● ●●● ● ●●● ● ● ● ●● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ●● ● ● ●● ●● ● ● ● ● ●● ● ●●● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ● ● ● ● ● ●●● ● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ●●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ●●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ●● ●●● ● ●● ● ● ● ● ● ● ●● ●● ●● ● ● ●● ●●● ●● ● ●● ●● ● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●●● ● ●●●● ● ●● ●● ●● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ●● ● ● ● ● ●● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ●● ● ●● ●● ● ● ●● ● ● ●● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ●● ● ●● ● ●● ● ●●● ●● ●● ● ● ● ● ●● ● ● ●● ● ● ●●●● ● ● ●● ● ● ● ● ● ●●●●●●● ● ● ● ●● ● ● ●● ● ● ●● ●● ● ● ● ● ● ●● ●● ● ● ●● ● ● ●● ● ●●●● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●●● ● ● ● ●●● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ● ● ●●● ● ● ● ● ● ●● ●● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●●● ● ●●● ●● ●● ● ● ● ● ●●● ● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ●● ● ● ● ●●● ● ●● ● ● ●● ● ● ●● ●● ●● ● ● ● ● ● ● ●● ● ●● ● ● ●● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ●●●● ● ● ● ●● ● ●● ●● ●● ● ●● ● ● ● ● ●●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ●●●●●● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●●● ●● ● ● ●●● ●● ● ● ● ●● ●● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ●● ●● ● ● ● ● ● ● ● ●●●● ● ●● ● ● ● ● ● ● ●●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●●● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ●● ● ●● ●● ●● ● ● ● ● ●● ●● ● ●● ● ●● ●● ●●● ● ● ● ● ●● ●● ● ●● ● ● ● ● ● ●● ●● ●● ● ●● ● ● ● ● ● ● ●●● ● ● ●● ●● ● ● ● ● ●● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ●● ●●● ● ● ● ●●● ● ●● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ●● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ●● ●● ●● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ● ●● ● ● ●● ● ●●● ●● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ●● ● ●● ● ● ● ●●● ● ● ● ●● ● ● ● ● ● ●● ●● ●● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●●● ● ● ● ● ● ●● ●●● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ●●● ● ● ●● ● ●● ● ● ●● ●● ● ●●● ●● ●●● ● ● ● ●● ●● ●● ●●● ●● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ●● ●● ● ●● ● ● ●● ● ● ● ●● ● ● ● ●● ●● ● ● ●●● ● ● ●● ● ●● ● ● ● ● ● ●● ●● ● ● ●● ●● ● ●●● ● ● ●●● ● ● ● ●● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ●● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ●● ● ● ● ●● ●● ● ● ●● ● ●● ● ● ●● ●● ● ● ●● ● ●● ●● ● ● ● ● ● ● ● ● ●● ●● ●●● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ●●●● ●●● ● ●●● ● ● ● ●● ● ● ● ●●● ● ● ●●● ● ●● ● ● ●● ● ●● ● ● ● ● ● ●● ● ● ● ● ● ● ●●● ● ● ● ●● ● ● ● ● ●● ●● ●● ● ●● ● ● ● ● ● ●●● ● ●●●● ●● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ●● ● ●● ● ● ●● ● ●●●● ● ●● ● ● ● ●● ● ● ●●● ● ● ● ● ● ●● ●● ● ●● ●●● ● ● ● ●● ●● ●● ● ● ●● ● ● ● ●● ● ●●● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ●● ●● ● ● ● ● ●● ● ● ● ●● ● ● ● ●● ● ● ●● ● ● ● ● ●●● ● ●● ● ●● ● ● ● ●● ●● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ●● ● ● ● ● ● ●● ● ●● ● ●● ● ● ● ● ●● ● ●● ● ● ●● ● ● ●● ● ● ● ●● ●● ●●● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ●●● ● ● ●● ● ●● ● ●● ● ●● ●● ● ● ● ● ●● ● ● ● ●● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ●●● ● ● ●●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ●●● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ●● ●● ● ●● ● ● ● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ●● ● ● ●● ●● ● ● ● ● ● ● ● ● ●● ●● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ●●●● ● ●● ● ● ● ●● ● ● ●● ●●● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ●●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ●●●●●● ● ● ●● ● ● ●● ● ●● ● ● ● ● ●● ● ●●● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ● ● ●● ●● ● ●● ●● ●● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ●●● ●● ● ● ● ●● ● ●● ● ●●● ●● ● ● ●●● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●●● ● ●● ● ● ● ● ● ● ● ● ●● ● ●● ● ●●● ●●● ● ● ● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ●●● ● ● ● ● ● ● ●● ●● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ●● ●● ●● ●●● ●● ● ●● ● ● ● ● ●● ● ● ●●● ● ●● ● ● ● ● ●● ● ● ● ●● ● ● ●●● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ●● ● ● ●● ● ● ● ● ●● ● ● ●● ●● ● ● ● ● ● ●●● ● ● ●● ● ●● ● ● ●● ● ●● ● ●● ● ●● ●● ● ●● ● ●● ● ● ●●● ●● ● ●● ● ● ● ● ● ●●● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ●● ●● ● ● ● ●● ● ● ●● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●
−6.0
−5.5
−5.0
−4.5
−4.0
−3.5
β1
Fig. 6.9 – Répartition de l’échantillon de Langevin correspondant à l’a posteriori probit défini dans l’Exemple 3.10, avec 20 observations de Pima.tr et 5 × 104 itérations. La modification de la proposition de marche aléatoire peut toutefois freiner la mobilité de la chaîne de Markov en renforçant la polarisation autour des modes locaux. Par exemple, en prenant pour cible la distribution a posteriori du modèle de mélange étudié dans l’Exemple 6.5, la structure bimodale de la cible est un
162
Méthodes de Monte-Carlo avec R
obstacle à l’implémentation de l’algorithme de Langevin car le mode local devient encore plus attractif. Exemple 6.7 (Suite de l’Exemple 6.5) La modification de l’algorithme de Metropolis–Hastings par marche aléatoire est directe car il faut simplement rajouter le gradient dans le code R précédent. En définissant la fonction gradient par gradlike=function(mu){ deno=.2*dnorm(da-mu[1])+.8*dnorm(da-mu[2]) gra=sum(.2*(da-mu[1])*dnorm(da-mu[1])/deno) grb=sum(.8*(da-mu[2])*dnorm(da-mu[2])/deno) return(c(gra,grb)) } la simulation de la chaîne de Markov s’effectue ainsi : > prop=curmean+rnorm(2)*scale > meanprop=prop+.5*scale^2*gradlike(prop) > if ((max(-prop)>2)||(max(prop)>5)||(log(runif(1))>like(prop) + -curlike-sum(dnorm(prop,curmean,lo=T))+ + sum(dnorm(the[iter,],meanprop,lo=T)))){ + prop=the[iter,] + meanprop=curmean } > curlike=like(prop) > curmean=meanprop
5 4
4
5
En appliquant cette alternative de l’algorithme de Langevin sur la même base de données que dans l’Exemple 6.5, il faut beaucoup diminuer l’échelle pour que la chaîne bouge. Par exemple, scale=.2 se montre trop grand. Il faut descendre à scale=.1 pour commencer à obtenir des taux d’acceptation différents de zéro.
3
3
●
● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ●● ● ● ●● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ●● ● ●● ●● ●● ● ●● ● ● ● ● ●●● ●● ● ●● ●● ● ●● ● ● ● ●● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●●● ●● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ●● ●● ● ● ● ● ●● ● ● ● ● ● ● ●● ●● ● ●● ● ● ● ● ●● ●● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ●● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ●● ●●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ●● ●● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●
●
2 μ2
μ2
2
●
● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ●● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ● ●● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ●●● ● ● ●● ● ● ● ● ●● ● ● ●● ● ● ● ● ●● ●● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ●● ●● ●● ● ●● ● ● ● ● ● ● ●● ●● ●● ● ●● ●● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ● ● ●● ●● ● ●● ● ● ● ●● ●● ● ● ● ● ● ●● ● ● ● ● ●● ●● ● ● ●● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ●● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●●●●
●
1
1
●
0 −1 −2
−2
−1
0
●
−2
−1
0
1
2 μ1
3
4
5
−2
−1
0
1
2
3
4
5
μ1
Fig. 6.10 – Exploration des modes du modèle de mélange par un algorithme de (t) (t) Langevin : représentation des deux chaînes de Markov (μ1 , μ2 ) en haut de la surface de la loi log–a posteriori avec une échelle égale à 0.1, avec 104 simulations et une base de données de 500 observations.
Chapitre 6. Algorithmes de Metropolis–Hastings
163
La Figure 6.10 illustre l’impact du point de départ sur la convergence de la chaîne : commencer près du mauvais mode mène à un échantillon concentré sur ce mode précis. La vraisemblance est à l’origine de cette difficulté, car avec 500 observations, elle est très piquée, de même que le gradient. Les deux exemples ci-dessus montrent combien l’ajustement de l’algorithme de Langevin peut être délicat. Cela peut expliquer pourquoi il n’est pas largement implanté, même s’il s’obtient par une modification plutôt facile du code par marche aléatoire initial.
6.4.3
Choix de modèles
Les algorithmes de Metropolis–Hastings par marche aléatoire s’appliquent évidemment aux cibles à support discret. Si cette situation correspond plus à un cadre combinatoire ou de traitement d’image que statistique, car la plupart des problèmes statistiques mettent en jeu des espaces de paramètres continus, le problème du choix de modèle constitue une exception (voir, par exemple, Robert, 2001, Chapitre 7), où l’index du modèle à sélectionner est le “paramètre” d’intérêt. Exemple 6.8 (Sélection de modèle) Étant donnée une régression linéaire ordinaire avec n observations, y|β, σ 2 , X ∼ Nn (Xβ, σ 2 In ) , où X est une matrice (n, p), la vraisemblance est
2 1 2 1 1 2 2 −n/2 T β, σ |y, X = 2πσ exp − 2 (y − Xβ) (y − Xβ) 2σ et, avec l’a priori de Zellner (1986) dénommé g-prior, ˜ nσ 2 (X T X)−1 ) β|σ 2 , X ∼ Nk+1 (β,
et π(σ 2 |X) ∝ σ −2
(où la constante g est choisie égale à n), la loi marginale de y est une loi de Student multivariée, (n+1)− m(y|X) = π n/2
k+1 2
− n n n T 1 ˜T T ˜ 2 T T −1 T Γ( ) y y− y X(X X) X y− β X Xβ . 2 n+1 n+1
Comme illustration, considérons la base de données swiss, où la variable y est le logarithme de la fertilité dans 47 districts suisses vers 1888, à expliquer par des indicateurs socio-économiques, > y=log(as.vector(swiss[,1])) > X=as.matrix(swiss[,2:6]) La matrice des variables explicatives contient cinq variables
164
Méthodes de Monte-Carlo avec R
> names(swiss) [1] "Fertility" [5] "Catholic"
"Agriculture" "Examination" "Infant.Mortality"
"Education"
(on obtient leur signification par ?swiss) et on souhaite comparer les 25 modèles correspondant à tous les sous-ensembles possibles de variables explicatives. (Dans cet exemple jouet, le nombre de modèles est suffisamment petit pour autoriser le calcul de toutes les lois marginales et donc des vraies probabilités de tous les modèles à comparer.) Comme dans Marin & Robert (2007), on indexe les modèles par le vecteur d’indicatrices γ, où γi = 0 indique que la colonne correspondante de X est incluse dans la régression. (Notons qu’en suivant la convention de notation de Marin & Robert, 2007, on inclut toujours la constante dans les modèles.) En utilisant la fonction d’inversion matricielle rapide inv=function(X){ EV=eigen(X) EV$vector%*%diag(1/EV$values)%*%t(EV$vector) } on calcule le logarithme de la densité marginale correspondant au modèle γ, que l’on note m(y|X, γ), par lpostw=function(gam,y,X,beta){ n=length(y) qgam=sum(gam) Xt1=cbind(rep(1,n),X[,which(gam==1)]) if (qgam!=0) P1=Xt1%*%inv(t(Xt1)%*%Xt1)%*%t(Xt1) else{ P1=matrix(0,n,n)} -(qgam+1)/2*log(n+1)-n/2*log(t(y)%*%y-n/(n+1)* t(y)%*%P1%*%y-1/(n+1)*t(beta)%*%t(cbind(rep(1,n), X))%*%P1%*%cbind(rep(1,n),X)%*%beta) } L’exploration de l’espace des modèles peut s’effectuer par un algorithme de Metropolis– Hastings qui se déplace entre les modèles en modifiant une indicatrice de modèle à la fois ; c’est-à-dire, étant donné le vecteur d’indicatrices courant γ (t) , la proposition de Metropolis–Hastings tire au sort l’une des p coordonnées, disons i, et (t) (t) choisit entre garder γi ou passer à 1 − γi avec des probabilités proportionnelles aux marginales associées. La probabilité d’acceptation de Metropolis–Hastings du modèle proposé γ est alors égale à
m(y|X, γ ) m(y|X, γ (t) ) min , 1 =1 m(y|X, γ (t) ) m(y|X, γ ) puisque les constantes de normalisation s’annulent. On n’a donc pas à envisager le rejet du modèle proposé γ car il est toujours accepté à l’étape de Metropolis– Hastings ! Lancer la fonction R suivante :
Chapitre 6. Algorithmes de Metropolis–Hastings
165
gocho=function(niter,y,X){ lga=dim(X)[2]; gamma=matrix(0,nrow=niter,ncol=lga) beta=lm(y∼X)$coeff gamma[1,]=sample(c(0,1),lga,rep=T) for (t in 1:(niter-1)){ j=sample(1:lga,1) gam0=gam1=gamma[t,];gam1[j]=1-gam0[j] pr=lpostw(gam0,y,X,beta) pr=c(pr,lpostw(gam1,y,X,beta)) pr=exp(pr-max(pr)) gamma[t+1,]=gam0 if (sample(c(0,1),1,prob=pr)) gamma[t+1,]=gam1} gamma } fournit alors un échantillon distribué (approximativement) selon la distribution a posteriori sur l’ensemble des indicatrices, c’est-à-dire sur la collection de tous les sous-modèles possibles. A partir du résultat > out=gocho(10^5,y,X) le modèle le plus probable est celui où l’on exclut la variable Agriculture (c’està-dire, γ = (1, 0, 1, 1, 1)), avec une probabilité estimée de 0.4995, tandis que la vraie probabilité est 0.4997. (On implémente aussi ce modèle par lm(y∼X).) De la même manière, le deuxième modèle le plus probable est γ = (0, 0, 1, 1, 1), avec une probabilité estimée de 0.237 pour une vraie probabilité de 0.234. La probabilité que chaque variable soit incluse dans le modèle est donnée par > apply(out,2,mean) [1] 0.66592 0.17978 0.99993 0.91664 0.94499 ce qui, encore une fois, indique que les trois dernières variables de swiss sont les plus significatives dans cette analyse. Le fait que la probabilité d’acceptation soit toujours égale à 1 dans l’Exemple 6.8 est dû à l’utilisation de la vraie probabilité cible sur un sous-ensemble des valeurs possibles de l’indicatrice des modèles. Exercice 6.3 Partant de la loi a posteriori ˜ nσ 2 (X T X)−1 ) : β|σ 2 , X ∼ Nk+1 (β, a. Montrer que et que
˜ nσ 2 X(X T X)−1 X T ) Xβ|σ 2 , X ∼ Nn (X β, ˜ σ 2 (In + nX(X T X)−1 X T )) . y|σ2 , X ∼ Nn (X β,
b. Montrer qu’intégrer en σ 2 avec π(σ 2 ) = 1/σ2 fournit la loi marginale de y ci-dessus. c. Calculer la valeur de la densité marginale de y pour la base de données swiss.
166
Méthodes de Monte-Carlo avec R
6.5
Taux d’acceptation
Il existe une infinité de choix pour la loi candidate q dans un algorithme de Metropolis–Hastings. Nous discutons ici de la possibilité de choisir q de manière “optimale". Bien entendu, ceci n’est pas un objectif bien défini, car le choix véritablement “optimal" de q en terme de vitesse de convergence est q = f , la loi cible. C’est évidemment un résultat formel sans intérêt en pratique ! Il faut en revanche décider d’un critère pratique qui permette de comparer des noyaux de proposition dans des situations où l’on ne connaît (presque) rien sur f . Un exemple de tel critère est le taux d’acceptation de l’algorithme de Metropolis–Hastings correspondant, puisqu’il se calcule facilement comme la fréquence empirique d’acceptation. A la différence du Chapitre 2, dans lequel la calibration d’un algorithme d’acceptation– rejet était basée sur un taux d’acceptation maximal, maximiser simplement le taux d’acceptation ne permettra pas nécessairement d’obtenir ici le meilleur algorithme en termes de qualité de mélange et de convergence. Exemple 6.9 (Taux d’acceptation : loi normales à partir de propositions doubles exponentielles) Dans un algorithme d’acceptation–rejet générant un échantillon normal centré réduit N (0, 1) à partir d’une loi double exponentielle L(α) de densité g(x|α) = (α/2) exp(−α|x|), le choix α = 1 maximise le taux d’acceptation (Exercice 2.14). On peut utiliser cette loi comme une loi candidate q dans un algorithme de Metropolis– Hastings. La Figure 6.11 compare le comportement de cette candidate L(1) ainsi qu’une loi L(3) qui, pour cette simulation, donne un moins bon résultat du fait d’une trop grande autocovariance qui ralentit la convergence.
0
1000
3000 Iterations
5000
0.8 0.6 0.0
0.2
0.4
ACF
0.4 0.0
−0.2
0.2
−0.1
0.0
ACF
0.6
0.1
0.8
0.2
1.0
Series 1
1.0
Series 1
0
5
15 Lag
25
35
0
5
15
25
35
Lag
Fig. 6.11 – (Gauche) Moyenne cumulée obtenue par un algorithme de Metropolis– Hastings utilisé pour générer une variable aléatoire N (0, 1) à partir d’une loi de proposition double exponentielle L(1) (clair) et L(3) (foncé) ; (milieu et droite) autocovariance pour les propositions L(1) et L(3) respectivement.
Chapitre 6. Algorithmes de Metropolis–Hastings
167
Bien sûr, il faudrait une étude plus précise pour valider cette affirmation, mais on constate néanmoins que le taux d’acceptation (estimé) pour α = 1 est deux fois plus grand, 0.83, que le taux d’acceptation (estimé) pour α = 3, 0.47. Si les algorithmes de Metropolis–Hastings indépendants peuvent effectivement être optimisés, ou au moins comparés, par le biais de leur taux d’acceptation (car l’optimisation de ce dernier réduit le nombre de réplications dans la suite {X (t) } et donc la corrélation dans la chaîne), ce critère n’est pas adapté à d’autres types d’algorithmes de Metropolis–Hastings, en particulier la version marche aléatoire. Exercice 6.3 La loi gaussienne inverse a pour densité √ √ θ2 + 2 θ1 θ2 + log 2θ2 f (z|θ1 , θ2 ) ∝ z −3/2 exp −θ1 z − z sur R+ (θ1 > 0, θ2 > 0). a. Soit la loi de proposition G(α, β) utilisée dans l’algorithme de Metropolis–Hastings de loi cible f . Montrer que θ2 f (x) ∝ x−α−1/2 exp (β − θ1 )x − g(x) x est maximum en x en x∗β =
(α + 1/2) −
(α + 1/2)2 + 4θ2 (θ1 − β) . 2(β − θ1 )
b. Après la maximisation en x, il faudrait minimiser la borne sur f /g en (α, β) pour (θ1 , θ2 ) fixé. C’est impossible analytiquement, mais pour certaines valeurs choisies de (θ1 , θ2 ) on peut tracer cette fonction de (α, β). Le faire en utilisant par exemple persp. Est-ce qu’il apparaît une forme particulière ? c. La moyenne de la loi gaussienne inverse est θ2 /θ1 , donc prendre α = β θ2 /θ1 fait coïncider les moyennes de la loi cible et de la loi de proposition. Pour θ1 = θ2 , faire coïncider les moyennes et trouver la proposition “optimale" en terme de taux d’acceptation.
La version marche aléatoire de l’algorithme de Metropolis–Hastings, introduite en Section 6.4.1, nécessite en effet une approche différente du taux d’acceptation, étant donné la dépendance de la loi de proposition à l’état actuel de la chaîne. En fait, comme on l’a déjà vu dans l’Exemple 6.4, un taux d’acceptation élevé n’indique pas toujours que l’algorithme se comporte de manière satisfaisante, puisqu’il peut correspondre à une chaîne qui se déplace trop lentement sur la surface de f . Lorsque x(t) et yt sont proches, dans le sens où f (x(t) ) et f (yt ) sont approximativement égaux, l’algorithme de Metropolis–Hastings par marche aléatoire soutient une acceptation de yt avec probabilité f (yt ) , 1 1. min f (x(t) )
168
Méthodes de Monte-Carlo avec R
Un taux d’acceptation élevé peut donc signaler que la convergence est mauvaise avec des mouvements dans le support de f trop limités. Bien sûr, ce n’est pas toujours le cas. Par exemple, quand f est presque plate, un taux d’acceptation élevé n’indique aucun mauvais comportement ! Mais, sauf si f est complètement plate (c’est-à-dire, si elle correspond à une cible uniforme), il existe des parties de l’espace à explorer où f prend des valeurs inférieures et donc où le taux d’acceptation doit être faible. Un taux d’acceptation élevé indique alors que ces parties du domaine ne sont pas souvent (pas du tout !) explorées par l’algorithme de Metropolis–Hastings. Par contre, si le taux d’acceptation moyen est faible, les valeurs consécutives de f (yt ) sont souvent faibles comparées à f (x(t) ), ce qui correspond au scénario où la marche aléatoire se déplace rapidement à la surface de f , puisqu’elle atteint alors souvent les “frontières" du support de f (ou au moins quand la marche aléatoire explore des régions avec faible probabilité sous f ). A nouveau, un taux d’acceptation faible ne signifie pas que la chaîne explore correctement le support entier de f . Même dans ce cas, il est possible qu’elle manque un mode important mais isolé de f . Néanmoins, un taux d’acceptation faible n’est pas un problème en soi, si ce n’est du point de vue du temps de calcul, car cela indique explicitement qu’un grand nombre de simulations est nécessaire. Cela se remarque clairement en utilisant la taille d’échantillon effective comme indicateur de convergence (voir 8.4.3). Exemple 6.10 (Suite de l’Exemple 6.4) Les trois marches aléatoires de la Figure 6.7 ont des taux d’acceptation égaux à [1] 0.9832 [1] 0.7952 [1] 0.1512 respectivement. A l’aide de l’adéquation des histogrammes, on voit que le taux d’acceptation moyen fait mieux, mais que le taux d’acceptation le plus faible réussit toujours mieux que le plus élevé. La question est ensuite de décider d’un taux d’acceptation idéal à partir duquel calibrer les algorithmes de Metropolis–Hastings par marche aléatoire afin d’éviter des taux d’acceptation “trop élevés" ou “trop faibles". Roberts et al. (1997) recommandent d’utiliser des lois instrumentales avec des taux d’acceptation proches de 1/4 pour des modèles de grande dimension et égaux à 1/2 pour des modèles de dimension 1 ou 2. (C’est la règle adoptée dans le package adaptatif amcmc décrit en Section 8.5.2.) Bien que cette règle ne soit pas universelle (dans le sens où elle est établie au départ pour un modèle gaussien), nous la recommandons comme calibration par défaut dans les cas où cela est possible. En particulier, si on considère l’Exemple 6.8, il n’y pas de taux d’acceptation puisque la probabilité d’acceptation est toujours égale à 1. Cependant, puisque la proposition inclut la valeur actuelle dans son support, la chaîne {γ (t) } prend des valeurs identiques à la suite et donc il existe un taux d’acceptation (ou de renouvellement) implicite. Il est égal à 0.1805,
Chapitre 6. Algorithmes de Metropolis–Hastings
169
ce qui est bien inférieur à la valeur de 0.25 préconisée et l’algorithme ne peut pas être modifié facilement (par exemple, en proposant plus de mouvements alternatifs autour du modèle courant) pour atteindre ce taux d’acceptation de référence.
6.6
Exercices supplémentaires
Exercice 6.4 Suite à l’Exemple 2.7, considérer la loi cible Be(2.7, 6.3). a. Générer des échantillons de Metropolis–Hastings dans cette densité en utilisant une gamme de lois de proposition bêta indépendantes, d’une loi Be(1, 1) à une loi bêta de petite variance. (On rappelle que la variance de la loi bêta B(a, b) est ab/(a + b)2 (a + b + 1).) Comparer les taux d’acceptation de ces algorithmes. b. Supposer qu’on souhaite générer une loi bêta tronquée Be(2.7, 6.3) restreinte à l’intervalle (c, d) avec c, d ∈ (0, 1). Comparer la performance des algorithmes de Metropolis– Hastings fondés sur une proposition Be(2, 6) et sur une proposition U(c, d). Prendre c = .1, .25 et d = .9, .75. Exercice 6.5 Le noyau q utilisé dans l’Algorithme 4 est un noyau de Markov, mais ce n’est pas le noyau de Markov K de l’algorithme. a. Montrer que la probabilité que X (t+1) = x(t) est " # ρ(x(t) ) = 1 − ρ(x(t) , y) q(y|x(t) ) dy . b. En déduire que le noyau K peut s’écrire K(x(t) , y) = ρ(x(t) , y)q(y|x(t) ) + ρ(x(t) )δx(t) (y) . c. Montrer que l’Algorithme 4 vérifie la condition d’équilibre ponctuel (6.3). Exercice 6.6 Calculer la moyenne d’une variable aléatoire G(4.3, 6.2) en utilisant 1. l’acceptation–rejet avec une proposition G(4, 7) ; 2. Metropolis–Hastings avec une proposition G(4, 7) ; 3. Metropolis–Hastings avec une proposition G(5, 6). Dans chaque cas, étudier la convergence avec les itérations. Exercice 6.7 La loi de Student à ν degrés de liberté, Tν , est donnée par −(ν+1)/2 Γ ν+1 1 2 √ 1 + x2 /ν . f (x|ν) = νπ Γ ν2 Calculer la moyenne d’une loi de Student à ν = 4 degrés de liberté en utilisant un algorithme de Metropolis–Hastings avec la loi de proposition a. N (0, 1) ;
170
Méthodes de Monte-Carlo avec R b. loi de Student à ν = 2 degrés de liberté.
Dans chaque cas, étudier la convergence avec les itérations. Exercice 6.8 En prolongement de l’Exemple 6.3, a. Utiliser la loi candidate donnée dans cet exemple pour générer un échantillon (a(i) , b(i) , c(i) ), i = 1, . . . , 500 avec un algorithme de Metropolis–Hastings. Les données sont celles de la base cars. b. Étudier la convergence et vérifier les autocorrélations pour chaque paramètre avec les itérations. c. Tracer les histogrammes des lois a posteriori des estimateurs des coefficients et donner des intervalles de confiance à 95%. Exercice 6.9 Toujours en prolongement de l’Exemple 6.3, montrer que la loi a posteriori de (a, b, c, σ −2 ) est une loi standard constituée d’une normale trivariée sur (a, b, c) conditionnellement à σ et aux données et une loi gamma sur σ −2 conditionnellement aux données. (Indication : voir Robert, 2001, ou Marin & Robert, 2007, pour des détails.) Exercice 6.10 En 1986, la navette spatiale Challenger a explosé au décollage, tuant les sept astronautes à bord. La cause de l’explosion était une défaillance du O-ring, un anneau de caoutchouc qui maintient solidaires entre elles les parties de la navette. L’accident est dû au temps exceptionnellement froid (31o F ou 0o C) à l’heure du décollage, car il y a des raisons de penser que la probabilité d’une défaillance de l’O-ring augmente quand la température diminue. La base de données challenger fournie avec le package mcsm contient les données relatives au lancement d’autres navettes spatiales et à des défaillances de O-rings. La première colonne correspond à l’indicatrice des défaillances yi , la seconde aux températures respectives xi (1 ≤ i ≤ 24). a. Effectuer une régression logistique sur cette base, où P (Yi = 1|xi ) = p(xi ) = exp(α + βxi ) 1 + exp(α + βxi ) , en utilisant la fonction glm de R, comme illustré en page 57. En déduire l’EMV pour α et β, ainsi que les écarts types. b. Construire un algorithme de Metropolis–Hastings avec pour loi cible la vraisemblance et pour proposition une loi exponentielle pour α et une loi de Laplace (ou double exponentielle) pour β. (Suggestion : choisir les paramètres des lois de proposition à partir des EMV calculés en a.) c. Générer 5000 itérations de la chaîne de Markov et construire un graphe similaire à la Figure 6.6 pour évaluer la variabilité de p(x). d. Déduire de cet échantillon une estimation de la probabilité de défaillance à 60o , 50o et 40o F ainsi que l’écart type. Exercice 6.11 En prolongement de l’Exemple 6.4,
Chapitre 6. Algorithmes de Metropolis–Hastings
171
a. Reproduire les graphes de la Figure 6.7 pour différentes valeurs de δ. Utiliser de petites valeurs puis de grandes valeurs pour δ. Peut-on trouver un choix optimal en terme d’autocovariance ? b. La proposition par marche aléatoire peut s’utiliser avec d’autres lois. Considérer la simulation d’une loi N (0, 1) en utilisant une marche aléatoire avec (i) une proposition de Cauchy et (ii) une proposition de Laplace. Construire ces algorithmes de Metropolis– Hastings, les comparer entre eux et avec la marche aléatoire de Metropolis–Hastings avec proposition uniforme. c. Pour chacune de ces trois marches aléatoires, déterminer s’il est possible d’obtenir un taux d’acceptation proche de 0.25 pour le bon choix de paramètres. Exercice 6.12 En prolongement de l’Exemple 6.9, a. Écrire un algorithme de Metropolis–Hastings pour construire la Figure 6.11. Remarquer que n variables aléatoires L(a) peuvent être générées en une fois avec la commande R > ifelse(runif(n)>0.5, 1, -1) * rexp(n)/a b. Quel est le taux d’acceptation pour l’algorithme de Metropolis–Hastings avec la proposition L(3) ? Tracer la courbe des taux d’acceptation pour des propositions L(α) quand α varie entre 1 et 10. Commenter. c. Tracer la courbe des taux d’acceptation pour des propositions L(0, ω) quand ω varie entre .01 et 10. Comparer avec la courbe des propositions L(α). d. Tracer la courbe des taux d’acceptation quand la proposition est basée sur une marche aléatoire Y = X (t) + ε, où ε ∼ L(α). Comparer avec les propositions précédentes. Exercice 6.13 En prolongement de l’Exemple 6.8, comparer l’implémentation précédente avec le code R suivant, où on considère plus de valeurs à la fois > > > + + > > > >
progam=matrix(gama[i,],ncol=lga,nrow=lga,byrow=T) probam=rep(0,lga) for (j in 1:lga){ progam[j,j]=1-gama[i,j] probam[j]=lpostw(progam[j,],y,X,betatilde)} probam=exp(probam) sumam=sum(probam) probam=probam/sumam select=progam[sample(1:lga,1,prob=probam),] a. Montrer que la probabilité d’acceptation est différente de 1 et fait appel à sumam. b. Étudier la vitesse de convergence de l’évaluation de la probabilité a posteriori du modèle le plus vraisemblable en comparaison à l’implémentation fournie à la page 164.
Chapitre 7
Echantillonneurs de Gibbs “Come, Watson , come !” he cried. “The game is afoot.” Arthur Conan Doyle The Adventure of the Abbey Grange
Guide du lecteur Ce chapitre traite des échantillonneurs de Gibbs à deux et à plusieurs étapes. Même si le premier est un cas particulier du second, l’échantillonneur à deux étapes a de meilleures propriétés de convergence et il s’applique naturellement à un grand nombre de modèles statistiques pour lesquels la généralisation à l’échantillonneur à plusieurs étapes n’est pas nécessaire. Pour autant, l’échantillonneur de Gibbs à plusieurs étapes possède de nombreuses propriétés d’optimalité et peut encore être considéré comme un étalon-or du monde MCMC. Après avoir présenté le contexte dans l’introduction (Section 7.1), on détaillera l’échantillonneur de Gibbs à deux étapes dans la Section 7.2, avant d’aborder l’échantillonneur de Gibbs à plusieurs étapes dans la Section 7.3. L’échantillonneur de Gibbs convient particulièrement bien aux expériences avec des données manquantes et aux modèles à variables latentes, comme on le verra dans la Section 7.4. Les modèles hiérarchiques sont utilisés dans tout le chapitre, mais on se concentrera sur leur usage dans la Section 7.5. La Section 7.6 aborde des sujets supplémentaires tels que la Rao–Blackwellisation, la reparamétrisation et les effets néfastes de certaines distributions a priori impropres.
C. P. Robert et al., Méthodes de Monte-Carlo avec R © Springer-Verlag France 2011
174
Méthodes de Monte-Carlo avec R
7.1
Introduction
Le Chapitre 6 a posé le principe de la simulation à l’aide de chaînes de Markov. Il en propose aussi des implantations directes, notamment l’algorithme générique de Metropolis–Hastings à marche aléatoire. Ce chapitre étend le domaine d’application des algorithmes MCMC en étudiant une autre classe de méthodes MCMC, très répandue, connue sous le nom d’échantillonnage de Gibbs. L’attrait de ces algorithmes est double : primo, l’essentiel de la calibration se fait grâce à la densité cible ; secundo, ils permettent de décomposer des problèmes complexes (comme une densité cible en haute dimension, pour laquelle il est quasiment impossible de construire un algorithme de Metropolis–Hastings à marche aléatoire) en plusieurs problèmes plus simples, comme une suite de cibles en petite dimension. Il existe des limitations à cette simplification, puisque la suite de problèmes simples peut au final mettre longtemps à converger, mais l’échantillonnage de Gibbs reste un candidat intéressant lorsqu’on est confronté à un nouveau modèle. Le nom échantillonnage de Gibbs est né dans l’article de Geman & Geman (1984), qui sont les premiers à appliquer un échantillonneur de Gibbs sur un champ aléatoire de Gibbs : ce nom est resté malgré la faiblesse du lien. Il s’agit en fait d’un cas particulier de l’algorithme de Metropolis–Hastings (voir Robert & Casella, 2004, Section 10.6.1). Les travaux de Geman & Geman (1984) s’appuyaient sur ceux de Metropolis et al. (1953), Hastings (1970) et Peskun (1973), et ont poussé Gelfand & Smith (1990) à écrire l’article qui a suscité le renouveau bayésien des années 90 grâce aux algorithmes stochastiques comme l’échantillonnage de Gibbs et l’algorithme de Metropolis–Hastings. Avec le recul, il est intéressant de voir que d’autres articles plus anciens comme ceux de Tanner & Wong (1987) et Besag & Clifford (1989) proposaient des solutions similaires, mais qu’ils n’ont pas reçu le même accueil de la communauté statistique.
7.2
L’échantillonneur de Gibbs à deux étapes
L’échantillonneur de Gibbs à deux étapes crée une chaîne de Markov à partir d’une loi jointe donnée de la manière suivante. Si deux variables aléatoires X et Y ont pour densité jointe f (x, y), avec les densités conditionnelles correspondantes fY |X et fX|Y , l’échantillonneur de Gibbs à deux étapes génère une chaîne de Markov (Xt , Yt ) selon les étapes suivantes : Algorithme 7 (Echantillonneur de Gibbs à deux étapes) Prendre X0 = x0 Pour t = 1, 2, . . . , générer 1. Yt ∼ fY |X (·|xt−1 ) ; 2. Xt ∼ fX|Y (·|yt ) .
Chapitre 7. Echantillonneurs de Gibbs
175
L’implantation de l’Algorithme 7 est alors aisée, dès lors qu’on peut simuler à partir des deux densités conditionnelles. 1 On voit facilement que si (Xt , Yt ) suit la distribution f , alors il en est de même pour (Xt+1 , Yt+1 ), puisque les deux étapes de l’itération t utilisent une simulation suivant la véritable densité conditionnelle. La convergence de la chaîne de Markov (et donc de l’algorithme) est donc garantie tant que les supports des densités conditionnelles sont connexes. Exemple 7.1 (Gibbs pour une loi normale bivariée) Commençons par un exemple trivial : la loi normale bivariée 1 ρ , (X, Y ) ∼ N2 0, ρ 1
(7.1)
pour laquelle l’échantillonneur de Gibbs est Etant donné xt , générer Yt+1 | xt Xt+1 | yt+1
∼ ∼
N (ρxt , 1 − ρ2 ), N (ρyt+1 , 1 − ρ2 ).
La sous-chaîne (Xt )t satisfait alors Xt+1 |Xt = xt ∼ N (ρ2 xt , 1 − ρ4 ), et une récurrence montre que Xt |X0 = x0 ∼ N (ρ2t x0 , 1 − ρ4t ) , qui converge bien vers N (0, 1) lorsque t tend vers l’infini. Comme le montre l’exemple ci-dessus, la suite (Xt , Yt ), t = 1, . . . , T , produite par un échantillonneur de Gibbs converge vers la loi jointe f . Les deux suites (Xt )t et (Yt )t convergent donc vers leurs lois marginales respectives. Exercice 7.1 Montrer que la sous-suite (Xt ) produite par l’Algorithme 7 est une chaîne de Markov. (Suggestion : utiliser le fait que (Xt , Yt ) est généré conditionnellement à Xt−1 seul.)
La raison principale du succès de l’échantillonneur de Gibbs en tant qu’algorithme MCMC de référence est peut-être qu’il était le complément computationnel parfait des modèles hiérarchiques, qu’on commençait alors à étudier sérieusement. Un modèle hiérarchique spécifie une loi jointe comme étant une succession de couches de distributions conditionnelles, comme on le verra plus en détail dans la Section 7.5. L’exemple ci-dessous propose une première approche des modèles hiérarchiques. 1. Lorsque l’on dispose d’une forme explicite de f (x, y), à une constante de normalisation près, les densités conditionnelles fY |X et fX|Y sont aussi disponibles sous forme explicite. Par conséquent, s’il n’est pas possible de simuler directement suivant ces densités conditionnelles, des approximations de Monte-Carlo ou MCMC peuvent être utilisées à la place, comme on le verra dans la Section 7.6.3.
176
Méthodes de Monte-Carlo avec R
Exemple 7.2 (Génération de lois bêta-binomiales) Considérons le couple de lois X|θ ∼ Bin(n, θ) ,
θ ∼ Be(a, b),
qui donne la loi jointe
n Γ(a + b) x+a−1 θ (1 − θ)n−x+b−1 . f (x, θ) = x Γ(a)Γ(b)
La loi conditionnelle correspondante de X|θ est donnée ci-dessus ; on a par ailleurs θ|x ∼ Be(x + a, n − x + b), loi bêta. L’échantillonneur de Gibbs associé peut être implanté comme suit : > > > > > > > > + + +
Nsim=5000 n=15 a=3 b=7 X=T=array(0,dim=c(Nsim,1)) T[1]=rbeta(1,a,b) X[1]=rbinom(1,n,T[1]) for (i in 2:Nsim){ X[i]=rbinom(1,n,T[i-1]) T[i]=rbeta(1,a+X[i],n-X[i]+b) }
#valeurs initiales
#initialisation des vecteurs #initialisation des chaînes #boucle d’échantillonnage
2.0 0.0
1.0
marginal density
0.12 0.08 0.04 0.00
marginal density
et sa sortie est illustrée par la Figure 7.1 pour chaque loi marginale. Dans cet exemple, les lois marginales sont également disponibles sous forme explicite et sont donc reproduites avec les histogrammes ; on voit qu’elles correspondent bien aux deux échantillons de Gibbs.
0
2
4
6
8 X
12
0.0
0.2
0.4
0.6
0.8
θ
Fig. 7.1 – Histogrammes des lois marginales de l’échantillonneur de Gibbs de l’Exemple 7.2 obtenus via 5000 itérations de l’Algorithme 7 pour n = 15, a = 3, b = 7. La vraie loi marginale de θ est Be(a, b) et la loi marginale de X est une loi bêta-binomiale.
Chapitre 7. Echantillonneurs de Gibbs
177
Exercice 7.2 La loi marginale de θ dans l’Exemple 7.2 est la loi standard Be(a, b), mais la loi marginale de X est moins connue ; on l’appelle loi beta-binomiale. a. Trouver une forme explicite pour la loi beta-binomiale en intégrant f (x, θ) par rapport à θ dans l’Exemple 7.2. b. Utiliser cette expression pour créer la fonction betabi en R. Utiliser la commande R curve(betabi(x,a,b,n)) pour superposer une courbe sur l’histogramme comme dans la Figure 7.1.
Exemple 7.3 (Etude d’un modèle hiérarchique à un facteur) Considérons la loi a posteriori sur (θ, σ 2 ) associée au modèle ∼ N (θ, σ 2 ), i = 1, . . . , n, ∼ N (θ0 , τ 2 ) , σ 2 ∼ IG(a, b),
Xi θ
(7.2)
où IG(a, b) est la loi gamma inverse (c’est-à-dire la loi de l’inverse d’une variable gamma), de densité ba (1/x)a+1 e−b/x /Γ(a) avec θ0 , τ 2 , a, b spécifiés. Si on note x = (x1 , . . . , xn ), la loi a posteriori de (θ, σ 2 ) est
1 2 − i (xi −θ)2 /(2σ 2 ) (7.3) e f (θ, σ |x) ∝ (σ 2 )n/2
2 2 2 1 1 × e−(θ−θ0 ) /(2τ ) × e1/bσ , 2 a+1 τ (σ ) dont on peut tirer les lois conditionnelles de θ et de σ2 . (Notons que ces distributions ne sont pas conjuguées au sens classique : si on intègre par rapport à θ ou à σ 2 , on n’obtient pas une densité standard.) On a π(θ|x, σ 2 )
π(σ 2 |x, θ)
∝
e−
∝
1 σ2
2 2 i (xi −θ) /(2σ )
(n+2a+3)/2
e−(θ−θ0 )
2
/(2τ 2 σ 2 )
, (7.4)
1
e− 2σ2 (
i (xi −θ)
2
+(θ−θ0 )2 /τ 2 +2/b)
.
Ces densités correspondent à σ2 nτ 2 σ2τ 2 2 θ|x, σ ∼ N θ0 + 2 x ¯, 2 σ 2 + nτ 2 σ + nτ 2 σ + nτ 2
et σ 2 |x, θ ∼ IG
1 n + a, (xi − θ)2 + b , 2 2 i
(où x ¯ est la moyenne empirique des observations) comme lois conditionnelles à utiliser dans un échantillonneur de Gibbs. Une étude du métabolisme chez des adolescentes de 15 ans a fourni les données x suivantes :
178
Méthodes de Monte-Carlo avec R
> x=c(91,504,557,609,693,727,764,803,857,929,970,1043, + 1089,1195,1384,1713) où chaque entrée correspond à la quantité d’énergie (en mégajoules) absorbée en 24 heures par une adolescente (ces données sont également disponibles dans la base de données R Energy). Dans le modèle normal ci-dessus, où θ correspond à la vraie quantité moyenne d’énergie absorbée, l’échantillonneur de Gibbs peut être programmé comme suit : > > > > > > > + + + + +
xbar=mean(x) sh1=(n/2)+a sigma=theta=rep(0,Nsim) #vecteurs initiaux sigma{1}=1/rgamma(1,shape=a,rate=b) #chaînes initiales B=sigma2{1}/(sigma2{1}+n*tau2) theta{1}=rnorm(1,m=B*theta0+(1-B)*xbar,sd=sqrt(tau2*B)) for (i in 2:Nsim){ B=sigma2[i-1]/(sigma2[i-1]+n*tau2) theta[i]=rnorm(1,m=B*theta0+(1-B)*xbar,sd=sqrt(tau2*B)) ra1=(1/2)*(sum((x-theta[i])^2))+b sigma2[i]=1/rgamma(1,shape=sh1,rate=ra1) }
où theta0, tau2, a, et b sont des valeurs spécifiées. Les moyennes a posteriori de θ et σ 2 sont 872.402 et 136 229.2, ce qui donne comme estimation de σ 369.092. Des histogrammes des distributions a posteriori de log(θ) et log(σ) sont donnés dans la Figure 7.2.
Fig. 7.2 – Histogrammes des distributions a posteriori de la log-moyenne et du log écart type via l’échantillonneur de Gibbs de l’Exemple 7.3 avec 5000 itérations, a = b = 3, τ2 = 10 et θ0 = 5. L’intervalle à 90% pour log(θ) est (6.299, 6.960) et pour log(σ) il vaut (0.614, 1.029).
Chapitre 7. Echantillonneurs de Gibbs
179
Exercice 7.1 Dans le contexte de l’Exemple 7.3 : a. Reproduire la Figure 7.2 et y superposer les vraies marginales a posteriori de log(θ) et log(σ) en intégrant f (θ, σ 2 |x) par rapport à σ 2 et θ, respectivement. b. Etudier la sensibilité de la réponse obtenue pour différentes valeurs des hyperparamètres theta0, tau2, a, et b. Plus particulièrement, calculer des estimations ponctuelles et des intervalles de confiance pour θ et σ pour différentes valeurs de ces paramètres.
Notons qu’il n’est pas si difficile de reconnaître les lois conditionnelles complètes à partir d’une distribution jointe. Par exemple, la distribution a posteriori proportionnelle à (7.3) est obtenue en multipliant les densités de la spécification (7.2). Pour trouver une loi conditionnelle complète (c’est-à-dire la distribution d’un paramètre conditionnellement à tous les autres), il suffit de sélectionner tous les termes de la distribution jointe contenant le paramètre en question. Par exemple, à partir de (7.3), on peut voir que
1 −(θ−θ0 )2 /(2τ 2 ) 1 2 − i (xi −θ)2 /(2σ 2 ) × , f (θ|σ , x) ∝ e e τ (σ 2 )n/2
2 1 1 − i (xi −θ)2 /(2σ 2 ) × f (σ 2 |θ, x) ∝ e e1/bσ . (σ 2 )a+1 (σ 2 )n/2 Il est alors facile de déduire que la loi conditionnelle complète de σ 2 est une distribution gamma inverse comme on l’a définie page 177 (voir aussi l’Exercice 7.8). Pour θ, un peu plus de calculs sont nécessaires, mais on peut reconnaître que la loi conditionnelle complète est une loi normale. Voir l’Exercice 7.9 pour un exemple avec une plus grande hiérarchie. Exercice 7.2 Faire les calculs explicites qui relient les expressions ci-dessus aux distributions conditionnelles complètes de (7.4).
7.3
L’échantillonneur de Gibbs à plusieurs étapes
L’échantillonneur de Gibbs à deux étapes peut être généralisé de façon naturelle en un échantillonneur de Gibbs à plusieurs étapes. Supposons que, pour p > 1, la variable aléatoire X ∈ X puisse s’écrire comme X = (X1 , . . . , Xp ), où les Xi sont des composantes à une ou plusieurs dimensions. De plus, supposons que l’on sache simuler les densités conditionnelles correspondantes f1 , . . . , fp ; autrement dit, que l’on sache simuler Xi |x1 , x2 , . . . , xi−1 , xi+1 , . . . , xp ∼ fi (xi |x1 , x2 , . . . , xi−1 , xi+1 , . . . , xp ) pour i = 1, 2, . . . , p. L’algorithme d’échantillonnage de Gibbs (ou échantillonneur de Gibbs) est donné par la transition suivante de X (t) à X (t+1) :
180
Méthodes de Monte-Carlo avec R
Algorithme 8 (Echantillonneur de Gibbs à plusieurs étapes) (t) (t) À l’itération t = 1, 2, . . ., étant donné x(t) = (x1 , . . . , xp ), générer (t+1)
∼ f1 (x1 |x2 , . . . , xp );
(t+1)
∼ f2 (x2 |x1 .. .
(t+1)
∼ fp (xp |x1
1. X1 2. X2
p. Xp
(t)
(t+1)
(t+1)
(t)
(t)
(t)
, x3 , . . . , xp ); (t+1)
, . . . , xp−1 ).
Les densités f1 , . . . , fp sont les lois conditionnelles complètes et un trait particulier de l’échantillonneur de Gibbs est que ce sont les seules densités qu’on utilise pour la simulation. Ainsi, même dans un problème en haute dimension, toutes les simulations peuvent être faites en dimension un, ce qui est généralement un avantage. Exemple 7.4 (Gibbs sur une loi normale multivariée) En prolongement de l’Exemple 7.1, considérons la loi normale multivariée (X1 , X2 , . . . , Xp ) ∼ Np (0, (1 − ρ)I + ρJ) ,
(7.5)
où I est la matrice d’identité p × p et J est la matrice p × p dont tous les éléments valent 1. Il s’agit d’un modèle d’équicorrélation, puisque corr(Xi , Xj ) = ρ pour tous les i = j. En utilisant des formules classiques pour les lois conditionnelles d’une variable normale multivariée (voir, par exemple, Johnson & Wichern, 1988), il est facile mais long de vérifier que (p − 1)ρ 1 + (p − 2)ρ − (p − 1)ρ2 Xi |x(−i) ∼ N x ¯(−i) , , 1 + (p − 2)ρ 1 + (p − 2)ρ ¯(−i) est la moyenne de ce vecteur. où x(−i) = (x1 , x2 , . . . , xi−1 , xi+1 , . . . , xp ) et x L’échantillonneur de Gibbs correspondant génère un échantillon de ces lois normales univariées, même s’il s’agit d’un problème artificiel puisque la loi jointe peut être directement simulée (Exercice 7.3). Néanmoins, on peut considérer le contexte où les composantes du vecteur normal sont restreintes à un sous-ensemble de Rp . Si ce sous-ensemble est un hypercube [ai , bi ] , H= i=1
alors les lois conditionnelles correspondantes sont simplement les lois normales restreintes à [ai , bi ] pour i = 1, . . . , p (auquel cas on peut utiliser un algorithme exact comme la fonction R sadmvn). Pour des contraintes plus complexes, un échantillonneur de Gibbs devient (presque) indispensable puisqu’il n’y a pas de solution
Chapitre 7. Echantillonneurs de Gibbs
181
exacte. Cet échantillonneur de Gibbs est toujours fondé sur des lois conditionnelles complètes normales, qui sont maintenant restreintes à des sous-ensembles de la droite réelle et sont donc faciles à simuler (Exercice 2.17). Exercice 7.3 Etant donnée la cible gaussienne Np (0, (1 − ρ)I + ρJ) : a. Ecrire un échantillonneur de Gibbs utilisant les distributions conditionnelles de l’Exemple 7.4. Exécuter le code R pour p = 5 et ρ = .25 et vérifier graphiquement que les marginales sont toutes N (0, 1). b. Comparer le temps d’exécution de cet algorithme avec T = 500 itérations à celui de rmnorm (décrit dans la Section 2.2.1). c. Proposer un sous-ensemble de contraintes qui ne soit pas un hypercube et déduire l’échantillonneur de Gibbs (Suggestion : considérer, par exemple, une p correspondant. 2 2 x ≤ contrainte de la forme m i i=1 i=m+1 xi pour m ≤ p − 1.)
Des modèles plus complexes que celui de l’Exemple 7.3 peuvent aussi correspondre à un modèle d’échantillonnage normal, comme le suivant : Exemple 7.5 (Extension de l’Exemple 7.3) Une extension hiérarchique du modèle normal est le modèle à effets aléatoires à un facteur. Ce modèle peut être paramétré de diverses manières, voir l’Exemple 7.14 et l’Exercice 7.13 pour des alternatives)
θi μ
∼ N (θi , σ 2 ), i = 1, . . . , k, ∼ N (μ, τ 2 ), i = 1, . . . , k, ∼ N (μ0 , σμ2 ),
σ2
∼
Xij
IG(a1 , b1 ),
j = 1, . . . , ni , (7.6)
τ 2 ∼ IG(a2 , b2 ),
σμ2 ∼ IG(a3 , b3 ).
Procédons comme précédemment et écrivons la loi jointe de cette hiérarchie. On peut alors en tirer les lois conditionnelles complètes σ2 ni τ 2 σ2τ 2 ¯i, , i = 1, . . . , k, θi ∼ N μ + X σ 2 + ni τ 2 σ 2 + ni τ 2 σ 2 + ni τ 2 σμ2 τ 2 kσμ2 τ2 ¯ θ, 2 μ∼N , μ0 + 2 τ 2 + kσμ2 τ + kσμ2 τ + kσμ2 ⎛ ⎞ σ 2 ∼ IG ⎝n/2 + a1 , (1/2) (Xij − θi )2 + b1 ⎠ , (7.7) ij
2
τ ∼ IG
k/2 + a2 , (1/2)
i
2
(θi − μ) + b2
1 2 σμ2 ∼ IG 1/2 + a3 , (1/2)(μ − μ0 )2 + b3 , où n = i ni et θ¯ = i ni θi /n.
,
182
Méthodes de Monte-Carlo avec R
Fig. 7.3 – Histogrammes des distributions marginales a posteriori obtenus par l’échantillonneur de Gibbs de l’Exemple 7.5 après 5000 itérations. La ligne du haut exhibe des histogrammes de la moyenne sous-jacente μ et des moyennes θ1 et θ2 pour l’énergie dépensée par les filles et par les garçons. La ligne du bas correspond aux écarts types.
La base de données Energy de l’étude de l’Exemple 7.3 contient aussi des données sur l’absorption d’énergie par les garçons. Le modèle (7.6) s’applique (avec k = 2) à l’analyse simultanée de l’absorption d’énergie des filles et des garçons. La sortie de l’échantillonneur de Gibbs qui utilise les lois conditionnelles de (7.7) est résumée dans la Figure 7.3. Exercice 7.4 Dans le contexte de l’Exemple 7.5 : a. Obtenir les distributions conditionnelles complètes de (7.7). b. Implémenter cet échantillonneur de Gibbs en R pour reproduire les histogrammes de la Figure 7.3. c. Une variation du modèle (7.6) est de donner à μ une distribution a priori uniforme, ce qui revient à prendre σμ2 = ∞ dans (7.6). Construire les lois conditionnelles complètes pour ce modèle et modifier le code R précédent pour comparer les deux modèles sur les données Energy.
Chapitre 7. Echantillonneurs de Gibbs
7.4
183
Données manquantes et variables latentes
Revenons au cadre de l’échantillonneur de Gibbbs à deux étapes, pour une distribution jointe cible f (x, y). Il semble présenter une différence essentielle avec l’algorithme Metropolis–Hastings puisque ce dernier travaille sur une seule distribution au sens où il génère toutes les composantes de (x, y) à la fois. Cette différence apparente de domaine d’application des deux algorithmes est en fait illusoire : f (x, y) étant donné, on peut utiliser soit l’échantillonneur de Gibbs pertinent, soit un algorithme de Metropolis–Hastings générique. Inversement, si on dispose d’une densité marginale fX (x), on peut construire (ou compléter fX (x) en) une densité jointe correspondante f (x, y) dans le seul but d’aider à la simulation, où la seconde variable Y est alors une variable auxiliaire qui peut ne pas être directement pertinente du point de vue statistique. Il existe de nombreux contextes où fX (x) peut être naturellement complétée en f (x, y) et associée à un échantillonneur de Gibbs efficace. 2 Ces considérations nous ramènent au cadre des modèles à données manquantes, décrits dans la Section 5.4.2, où on a introduit la représentation (5.9) g(x|θ) = f (x, z|θ) dz. Z
Comme l’a montré cette section, g(x|θ) est la densité des observations (c’est-àdire la vraisemblance) et f (x, z|θ) représente la densité jointe complétée. Sous la contrainte (5.9), la densité f est arbitraire et elle peut être choisie de telle sorte que ses lois conditionnelles complètes soient faciles à simuler. L’algorithme de Gibbs (Algorithme 8) peut alors être appliqué à f plutôt qu’à g et donc impliquer la loi conditionnelle correspondante de θ sachant (x, z). Selon le domaine d’application, ces représentations comme loi marginale portent des noms différents. Du point de vue mathématique, (5.9) est un modèle de mélange. En statistique, on parle le plus souvent de modèles à données manquantes, alors que les économètres préfèrent l’emploi de modèles à variable latente, peutêtre parce qu’ils ont l’impression qu’un deus ex machina opère en coulisses ! En factorisant f (x, z|θ) = f (x|z, θ)h(z|θ), (5.9) devient f (x|z, θ)h(z|θ) dz, g(x|θ) = Z
et h(z|θ), la loi marginale des données manquantes z, est clairement une loi mélangeante. Dans le contexte général des données manquantes, f (x, z) dz g(x) = Z
2. Soulignons le fait que toute densité fX (x) peut être — artificiellement — complétée en une densité jointe f (x, y), comme le prouve l’échantillonneur par tranches construit à la fin de cette section.
184
Méthodes de Monte-Carlo avec R
pour p ≥ 2, on écrit y = (x, z) = (y1 , . . . , yp ) et on note les densités conditionnelles de f (y) = f (y1 , . . . , yp ) sous la forme Y1 |y2 , . . . , yp ∼ f1 (y1 |y2 , . . . , yp ), Y2 |y1 , y3 , . . . , yp ∼ f2 (y2 |y1 , y3 , . . . , yp ), .. . Yp |y1 , . . . , yp−1 ∼ fp (yp |y1 , . . . , yp−1 ). Si on applique un échantillonneur de Gibbs à plusieurs étapes comme l’Algorithme 8 à ces lois conditionnelles complètes, en supposant qu’elles puissent toutes être simulées, on obtient une chaîne de Markov (Y (t) )t qui converge vers f et donc une sous-chaîne (X (t) )t qui converge vers g. Exemple 7.6 (Gibbs sur des données censurées) Dans les Exemples 5.13 et 5.14, on a traité un modèle à données censurées comme un modèle à données manquantes. On identifie g(x|θ) à la fonction de vraisemblance m 2 e−(xi −θ) /2 , g(x|θ) = L(θ|x) ∝ i=1
et f (x, z|θ) = L(θ|x, z) ∝
m
−(xi −θ)2 /2
e
i=1
n
e−(zi −θ)
2
/2
i=m+1
est la vraisemblance des données complètes. Etant donnée une distribution a priori sur θ, π(θ), on peut alors créer un échantillonneur de Gibbs qui itère entre les distributions conditionnelles π(θ|x, z) et f (z|x, θ) et a pour distribution stationnaire π(θ, z|x), la distribution a posteriori de (θ, z). Si on prend une loi a priori uniforme π(θ) = 1, la distribution conditionnelle de θ|x, z est donnée par θ|x, z ∼ N
m¯ x + (n − m)¯ z 1 , n n
,
et la distribution conditionnelle de Z|x, θ est le produit des lois normales tronquées Zi |x, θ ∼ ϕ(z − θ)I(z > a)
{1 − Φ(a − θ)} ,
puisque chaque Zi doit être supérieur au point de troncation a. On peut générer des valeurs de Z via la fonction R rtrun de la librairie bayesm (voir les Exercices 7.10 et 7.3). La sortie de l’échantillonneur de Gibbs, dont le cœur peut être écrit en R sous la forme
Chapitre 7. Echantillonneurs de Gibbs
185
> for(i in 2:Nsim){ > zbar[i]=mean(rtrun(mean=rep(that[i-1],n-m), + sigma=rep(1,n-m),a=rep(a,n-m),b=rep(Inf,n-m))) > that[i]=rnorm(1,(m/n)*xbar+(1-m/n)*zbar[i],sqrt(1/n)) > }
0.5
1.0
Density
1.0
0.0
0.0
0.5
Density
1.5
1.5
2.0
2.0
¯ est résumée dans la Figure 7.4 à l’aide des distributions a posteriori de θ et Z.
2.8
3.2
3.6
4.0
4.0
θ
4.5
5.0
Z
Fig. 7.4 – Histogrammes des distributions a posteriori de θ et Z¯ de l’Exemple 7.6. Le point de troncation des Zi est a = 3.5. Exercice 7.3 Reprenons l’Exemple 7.6 : a. Montrer que la vraisemblance des données complètes (vue comme fonction de θ) est proportionnelle à la densité de N ({m¯ x + (n − m)¯ z }/n, 1/n). b. Compléter le code R ci-dessus pour obtenir un échantillonneur de Gibbs qui estime la distribution a posteriori de θ.
Exemple 7.7 (Données multinomiales groupées) Reprenons le modèle multinomial de l’Exemple 5.16 : 1 θ 1 1 θ M n; + , (1 − θ), (1 − θ), . 2 4 4 4 4 où on a estimé θ à l’aide d’étapes EM ou MCEM en introduisant la variable latente Z avec la démarginalisation 1 θ 1 θ 1 . (z, x1 − z, x2 , x3 , x4 ) ∼ M n; , , (1 − θ), (1 − θ), 2 4 4 4 4
186
Méthodes de Monte-Carlo avec R
Si on prend une distribution a priori uniforme sur θ, les lois conditionnelles complètes peuvent être obtenues : θ , θ ∼ Be(z + x4 + 1, x2 + x3 + 1) et z ∼ Bin x1 , 2+θ ce qui mène à l’échantillonneur de Gibbs > x=c(125,18,20,34) #données > theta=z=rep(.5,Nsim) #initialisation de la chaîne > for (j in 2:Nsim){ > theta[j]=rbeta(1,z[j-1]+x[4]+1,x[2]+x[3]+1) > z[j]=rbinom(1,x{1},(theta[j]/(2+theta[j]))) > } dont la sortie est résumée dans la Figure 7.5.
Fig. 7.5 – Histogrammes des distributions marginales de l’échantillonneur de Gibbs de l’Exemple 7.7. On s’intéresse surtout à la marginale de θ. Cet exemple montre un cas où l’algorithme EM et l’échantillonnage de Gibbs s’appliquent tous deux. Comme d’habitude, l’approche bayésienne permet une inférence plus complète, conduisant par exemple à des intervalles de confiance. Exercice 7.4 Dans le contexte de l’Exemple 7.7 : a. Construire un intervalle de confiance à 95% pour θ en utilisant la sortie de l’échantillonneur de Gibbs et vérifier si la solution EM appartient à cet intervalle. b. L’échantillonneur de Gibbs ci-dessus utilise une distribution a priori uniforme en θ ; autrement dit, θ ∼ Be(a, b) avec a = b = 1. Ecrire un échantillonneur de Gibbs pour n’importe quelles valeurs de a et b. Pour différentes valeurs de a et b, comparer les estimations de Gibbs de θ à la réponse EM. Que peut-on en conclure sur la sensibilité à la distribution a priori ?
Chapitre 7. Echantillonneurs de Gibbs
187
Exemple 7.8 (Encore des données multinomiales groupées) Une généralisation de l’Exemple 7.7 est le modèle X ∼ M5 (n; a1 θ1 + b1 , a2 θ1 + b2 , a3 θ2 + b3 , a4 θ2 + b4 , c(1 − θ1 − θ2 )) ,
(7.8)
avec 0 ≤ a1 + a2 = a3 + a4 = 1 − 4i=1 bi = c ≤ 1. On connaît les hyperparamètres ai , bi ≥ 0 grâce à des considérations génétiques, comme dans le Tableau 7.1 qui décrit les probabilités des quatre groupes sanguins comme fonctions de probabilités de génotypes, à cause de la dominance de certains allèles. On s’intéresse à l’estimation des fréquences d’allèles pA , pB et pO (dont la somme vaut 1). Génotype AA AO BB BO AB OO
Probabilité p2A 2pA pO p2B 2pB pO 2pA pB p2O
Observé A
Probabilité p2A + 2pA pO
Fréquence nA = 186
B
p2B + 2pB pO
nB = 38
AB O
pA pB p2O
nAB = 13 nO = 284
Tableau 7.1 – Fréquences observées des génotypes sur des données de groupes sanguins. L’existence d’allèles dominants crée un problème à données manquantes.
On peut augmenter les données en Z = (Z1 , Z2 , Z3 , Z4 ) comme suit : X1 = Z1 + Z2 , X2 = Z3 + Z4 , X3 = Z5 + Z6 , X4 = Z7 + Z8 , ce qui démarginalise le modèle et nous permet d’échantillonner à partir de Y ∼ M9 (n; a1 θ1 , b1 , a2 θ1 , b2 , a3 θ2 , b3 , a4 θ2 , b4 , c(1 − θ1 − θ2 )) , avec Y = (Z1 , X1 − Z1 , Z2 , X2 − Z2 , Z3 , X3 − Z3 , Z4 , X4 − Z4 , X5 ). (Voir l’Exercice 7.12 pour une autre solution.) Une distribution a priori naturelle sur (θ1 , θ2 ) est la loi de Dirichlet D(α1 , α2 , α3 ), π(θ1 , θ2 ) ∝ θ1α1 −1 θ2α2 −1 (1 − θ1 − θ2 )α3 −1 , qui donne les lois conditionnelles complètes (θ1 , θ2 , 1 − θ1 − θ2 )|x, z
∼
Zi |x, θ1 , θ2
∼
Zi |x, θ1 , θ2
∼
D(z1 + z2 + α1 , z3 + z4 + α2 , x5 + α3 ), ai θ1 B xi , (i = 1, 3), (7.9) ai θ1 + bi ai θ2 (i = 5, 7). B xi , ai θ2 + bi
188
Méthodes de Monte-Carlo avec R
On peut facilement simuler ces distributions standard et donc les inclure dans un échantillonneur de Gibbs. La Figure 7.6 montre les distributions des chaînes produites par un tel échantillonneur.
Fig. 7.6 – Histogrammes des distributions marginales des probabilités des allèles obtenues grâce à l’échantillonneur de Gibbs de l’Exemple 7.8. Exercice 7.5 Pour les données du Tableau 7.1, modélisées avec (7.8) : a. Vérifier que la vraisemblance des données observées est proportionnelle à (p2A + 2pA pO )nA (p2B + 2pB pO )nB (pA pB )nAB (p2O )nO . b. Avec les données manquantes ZA et ZB , vérifier que la vraisemblance des données complètes est proportionnelle à (p2A )ZA (2pA pO )nA −ZA (p2B )ZB (2pB pO )nB −ZB (pA pB )nAB (p2O )nO . c. Ecrire un échantillonneur de Gibbs pour estimer pA et pB .
Les modèles de mélange fini, qu’on a étudiés en détails dans le Chapitre 5 (Exemple 5.2) et le Chapitre 6 (Exemple 6.5), sont clairement des candidats à la démarginalisation par des variables latentes. Comme déjà souligné dans l’Exemple 5.12, étant donné un échantillon (x1 , . . . , xn ) d’une distribution de mélange k j=1
pj f (x|ξj ) ,
où j pj = 1 et f (·|ξj ) est une densité paramétrée par un paramètre ξj , on peut associer à chaque observation xi une variable latente zi ∈ {1, . . . , k} qui indique à quelle composante du mélange est associée xi . On complète alors le modèle de mélange par xi |zi ∼ f (x|ξzi ). Zi ∼ Mk (1; p1 , . . . , pk ),
Chapitre 7. Echantillonneurs de Gibbs
189
En considérant yi = (xi , zi ) (plutôt que xi ), on élimine entièrement la structure de mélange puisque la vraisemblance du modèle complété est (p, ξ|y1 , . . . , yn )
∝
n
pzi f (xi |ξzi ) =
k
pj f (xi |ξj ).
j=1 i;zi =j
i=1
On pourrait se demander à quoi sert de compléter le modèle dans ce contexte, puisqu’on peut calculer la vraisemblance observée sous forme explicite, comme par exemple dans la Figure 5.2, qui représente une vraisemblance de mélange sur une grille de points comme celle de l’Exemple 6.5, où on a produit un algorithme de Metropolis–Hastings avec marche aléatoire. En fait, comme dans l’algorithme EM des Exemples 5.12 et 5.13, l’utilisation de variables indicatrices latentes produit un algorithme de simulation généralement efficace qui se concentre rapidement sur le(s) mode(s) de la distribution a posteriori. Les deux étapes de l’échantillonnage de Gibbs sont ensuite associées aux lois conditionnelles complètes a posteriori P (Zi = j|x, ξ) ∝ pj f (xi |ξj ) et ξj |y p où nj =
(i = 1, . . . , n, j = 1, . . . , k)
* * λj αj + nj xj * ∼ π ξ* , λj + nj , λj + nj ∼ Dk (γ1 + n1 , . . . , γk + nk ), n
Izi =j ,
nj xj =
i=1
n
Izi =j xi .
i=1
Dans cet échantillonnage de Gibbs à deux étapes, on ne détaille pas la génération de la loi a posteriori associée à la vraisemblance complète, puisqu’elle varie selon le modèle d’échantillonnage et la loi a priori. Dans la situation classique avec la famille exponentielle pour f (·|ξ) et une a priori conjuguée sur ξ, cette génération ne pose bien sûr aucune difficulté. Exemple 7.9 (Gibbs pour un mélange de lois normales) Comme exemple, considérons le contexte de l’Exemple 5.12, à savoir un mélange gaussien à deux composantes de même variance connue et à poids fixés, p N (μ1 , σ 2 ) + (1 − p) N (μ2 , σ 2 ) . On suppose de plus que la distribution a priori sur les moyennes μ1 et μ2 est une loi normale N (0, v 2 σ 2 ), avec v 2 connu. Les variables latentes zi sont les mêmes que dans l’Exemple 5.12, à savoir P (Zi = 1) = 1 − P (Zi = 2) = p
et
Xi |Zi = k ∼ N (μk , σ 2 ) .
190
Méthodes de Monte-Carlo avec R
La distribution complétée est alors π(μ1 , μ2 , z|x) ∝ exp −(μ21 + μ22 )/v 2 σ 2
(xi − μ1 )2 (xi − μ2 )2 , × p exp − (1 − p) exp − 2σ 2 2σ 2 i:z =1 i:z =2 i
i
5
pour laquelle les lois conditionnelles complètes sur les μj sont faciles à dériver (Exercice 7.6). La Figure 7.7 illustre le comportement de l’échantillonneur de Gibbs correspondant sur des données simulées x comprenant 500 points tirés de la distribution .7N (0, 1) + .3N (2.7, 1). Cette image représente l’échantillon MCMC après 15 000 itérations ainsi que la surface de la log-densité a posteriori. Cette simulation est clairement en accord avec la surface de la densité a posteriori. On pourrait croire qu’elle est trop concentrée autour d’un mode, mais il ne faut pas oublier que le second mode représenté sur ce graphique est en fait nettement plus bas : il y a une différence d’au moins 50 entre les log-densités a posteriori.
4
●
3
●
●
−2
−1
0
1
μ2
2
● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●●
−2
−1
0
1
2
3
4
5
μ1
Fig. 7.7 – Echantillon de Gibbs de 5000 points pour la distribution a posteriori d’une loi mélange, ainsi que la surface de la log-densité a posteriori. Exercice 7.6 En utilisant la distribution jointe complétée de l’Exemple 7.9 : a. Pour j = 1, 2, montrer que la distribution conditionnelle est
v2 σ2 v2 μj |x, z ∼ N xi , 2 nj v + 1 i;z =j nj v 2 + 1
,
i
où nj est le nombre de zi valant j et
" # (x −μ )2 p exp − i2σ2j # " #. " P (Zi = j|xi , μ1 , μ2 ) = −μ1 )2 −μ2 )2 + (1 − p) − (xi2σ p exp − (xi2σ 2 2
Chapitre 7. Echantillonneurs de Gibbs
191
b. Ecrire le code R pour reproduire la Figure 7.7. c. Pour σ = 1, étudier la convergence de l’échantillonneur de Gibbs pour différentes combinaisons des vraies valeurs de (μ1 , μ2 , p). En particulier, considérer le cas où les μi sont très éloignés et p = 0.5 pour montrer que l’échantillonneur de Gibbs peut se concentrer sur un seul mode alors que les vraisemblances modales sont similaires.
Comme dernière illustration d’un échantillonneur de Gibbs sur un modèle à variable latente, nous étudions l’échantillonneur par tranches (slice sampler en anglais), qui fonctionne comme une démarginalisation générique. 3 (Voir Neal, 2003 pour une étude détaillée des propriétés théoriques de cet échantillonneur.) Etant donnée une densité cible fX (x), on peut toujours la représenter comme la densité marginale de la densité jointe f (x, u) = I {0 < u < fX (x)} puisqu’en intégrant cette densité en u, on retrouve bien fX (x). Les densités conditionnelles associées sont fX|U (x|u) =
I{0 < u < fX (x)} I{0 < u < fX (x)} et fU |X (u|x) = , I{0 < u < fX (x)} dx I{0 < u < fX (x)} du
ce qui veut dire qu’elles sont toutes deux uniformes. Ces deux lois conditionnelles définissent alors l’échantillonneur par tranches comme l’échantillonneur de Gibbs associé.
Algorithme 9 (Echantillonneur par tranches à 2D) A l’itération t, simuler 1. U (t+1) ∼ U[0,f (x(t) )] ; 2. X (t+1) ∼ UA(t+1) , avec A(t+1) = {x : f (x) ≥ u(t+1) }.
L’intérêt de cet algorithme est que, formellement, il s’applique à n’importe quelle densité connue à une constante multiplicative près, sans restriction aucune sur la forme ou la dimension. Bien entendu, son implantation peut être énormément compliquée par la simulation uniforme sur l’ensemble A(t) . Exemple 7.10 (Exemple d’échantillonneur par tranches) √ Considérons la densité f (x) = 12 e− x définie pour x > 0. On peut simuler directe3. En fait, on peut aussi considérer que l’échantillonneur de Gibbs est une forme dérivée de l’échantillonneur par tranches ; voir Robert & Casella (2004, Chapitre 8).
192
Méthodes de Monte-Carlo avec R
ment suivant cette densité, mais elle se prête également aisément à l’échantillonnage par tranches. En effet, les formules ci-dessus donnent 2 1 1 √ U |x ∼ U 0, e− x , X|u ∼ U 0, [log(2u)]2 . 2 En codant l’échantillonneur par tranches, on génére 5000 points représentés dans la Figure 7.8 (gauche), qui montre que l’accord avec la véritable densité est très bon. Le panneau de droite exhibe de fortes autocorrélations, ce qui est typique de l’échantillonneur par tranches.
Fig. 7.8 – Histogramme provenant d’un échantillonneur par tranches et densité cible pour l’Exemple 7.10 après 5000 itérations. Le panneau de gauche représente l’histogramme et la vraie densité ; le panneau de droite représente la fonction d’autocorrélation. Exercice 7.7 √ En reprenant l’Exemple 7.10 et la densité fX (x) = (1/2) exp (− x) : a. Vérifier que les distributions conditionnelles sont √ U |x ∼ U 0, (1/2) exp (− x) et X|u ∼ U 0, [log(2u)]2 , et implanter un échantillonneur de Gibbs pour générer des variables aléatoires suivant fX (x). √ b. Faire la transformation Y = X et montrer que Y ∼ G(3/2, 1). Utiliser cette propriété pour simuler directement suivant X. Comparer cet algorithme à l’échantillonneur par tranches.
Une extension évidente à l’échantillonneur 2D s’impose, semblable à l’extension de l’échantillonneur de Gibbs à deux étapes à celui à plusieures étapes : si la densité
Chapitre 7. Echantillonneurs de Gibbs
193
cible est représentée comme un produit de fonctions f (x) =
n
gi (x) ,
i=1
comme par exemple dans le cas d’une distribution a posteriori associée à un échantillon de n observations (où les gi sont les vraisemblances associées à chaque observation), on peut compléter la densité en f (x, u1 , . . . , un ) =
n
I {0 < ui < gi (x)} ,
i=1
ce qui mène à un échantillonneur par tranches à (n + 1) étapes ; X (t) est alors générée uniformément sur l’ensemble A
(t)
=
n 3
(t)
x : gi (x) > ui
.
i=1
Exemple 7.11 (Régression logistique avec l’échantillonneur par tranches) Reprenons la régression logistique, que nous avons mentionnée pour la première fois dans l’Exemple 4.11 et pour laquelle nous avons construit un algorithme de Metropolis–Hastings dans l’Exercice 6.10. Le modèle est Yi ∼ Bernoulli(p(xi )),
p(x) =
exp(α + βx) , 1 + exp(α + βx)
où p(x) est la probabilité de succès et x une variable explicative unidimensionnelle. La vraisemblance associée à un échantillon (y, x) = (y1 , x1 ), . . . , (yn , xn ) est yi 1−yi n eα+βxi 1 L(α, β|y) ∝ . 1 + eα+βxi 1 + eα+βxi i=1 Avec une loi a priori plate sur (a, b), la distribution a posteriori peut être associée à l’échantillonneur par tranches fondé sur les variables uniformes eyi (α+βxi ) Ui ∼ U 0, . 1 + eα+βxi Comme il n’est pas facile de générer une distribution uniforme sur l’ensemble
ui (a, b) : yi (a + bxi ) > log , 1 − ui on peut décomposer davantage cette simulation uniforme en simulant consécutivement (t) (t) ui 1 − ui (t) (t−1) (t−1) −b xi , min log −b xi a ∼ U max log (t) (t) i;yi =1 i;yi =0 1 − ui ui
194
Méthodes de Monte-Carlo avec R
et
(t)
b
∼U
+ max log
i;yi =1
(t)
ui
(t)
1 − ui
, −a
(t)
+ /xi , min
i;yi =0
(t)
log
1 − ui (t)
ui
, (t)
−a
/xi
,
−0.55 −0.50 −0.45 −0.40 −0.35 −0.30 −0.25 −0.20
b
si on suppose (sans perte de généralité) que les xi sont tous positifs. Toutefois, si on teste l’échantillonneur par tranches correspondant sur les données challenger décrites dans l’Exercice 6.10, on observe un comportement de marche aléatoire sur la chaîne (a(t) , b(t) )t , comme on le voit dans la Figure 7.9.
15
20
25
30
35
a
(t)
(t)
Fig. 7.9 – Evolution de la chaîne (a , b )t sur 103 itérations finales d’un échantillonneur par tranches pour les données challenger avec une loi a priori constante. On introduit donc plutôt des lois a priori gaussiennes N (0, σ 2 ) sur a et b. La modification de l’échantillonneur par tranches est minimale : on remplace les deux distributions uniformes par des lois normales tronquées N (0, σ 2 ), avec comme intervalles de troncation les intervalles utilisés ci-dessus. Le cœur du code R est alors > for (t in 2:Nsim){ + uni=runif(n)*exp(y*(a[t-1]+b[t-1]*x))/ + (1+exp(a[t-1]+b[t-1]*x)) + mina=max(log(uni[y==1]/(1-uni[y==1]))-b[t-1]*x[y==1]) + maxa=min(-log(uni[y==0]/(1-uni[y==0]))-b[t-1]*x[y==0]) + a[t]=rtrun(0,sigmaa,mina,maxa) + minb=max((log(uni[y==1]/(1-uni[y==1]))-a[t])/x[y==1]) + maxb=min((-log(uni[y==0]/(1-uni[y==0]))-a[t])/x[y==0]) + b[t]=rtrun(0,sigmab,minb,maxb) + }
Chapitre 7. Echantillonneurs de Gibbs
195
avec sigmaa égal à 5 et sigmab égal à 5 divisé par l’écart type des xi .
7.5
Structures hiérarchiques
Nous avons appliqué l’échantillonneur de Gibbs à plusieurs exemples, dont la plupart provenait de structures à données manquantes. L’échantillonneur de Gibbs s’applique tout aussi bien à n’importe quel modèle hiérarchique. Un modèle hiérarchique est défini comme une suite empilée de distributions conditionnelles comme, par exemple, dans la structure hiérarchique générique à deux niveaux Xi θj γk
∼ ∼
fi (x|θ), i = 1, . . . , n , θ = (θ1 , . . . , θp ) , πj (θ|γ), j = 1, . . . , p , γ = (γ1 , . . . , γs ) ,
∼
g(γ),
k = 1, . . . , s.
La distribution jointe de cette hiérarchie est n
fi (xi |θ)
i=1
p
πj (θj |γ)
j=1
s
g(γk ) .
k=1
Supposons que les xi soient des observations ; la distribution a posteriori correspondante sur (θ, γ) est associée aux conditionnelles a posteriori complètes θj
∝
πj (θj |γ)
n
fi (xi |θ),
j = 1, . . . , p ,
i=1
γk
∝
g(γk )
p
πj (θj |γ),
k = 1, . . . , s .
j=1
Dans les modèles hiérarchiques standard, ces densités sont faciles à simuler et sont donc naturellement associées à un échantillonneur de Gibbs. Dans les modèles hiérarchiques plus complexes, on aura peut-être besoin de méthodes plus sophistiquées, par exemple une étape Metropolis–Hastings ou un autre échantillonneur par tranches, pour simuler suivant les lois conditionnelles (comme on le verra dans la Section 7.6.3). Notre message principal est néanmoins que les lois conditionnelles complètes sont assez faciles à écrire étant donnée la spécification hiérarchique et qu’elles réduisent considérablement la dimension des variables aléatoires à simuler à chaque étape.
Quand on ne peut pas simuler directement une loi conditionnelle complète dans un échantillonneur de Gibbs, il suffit d’utiliser à la place une seule étape de n’importe quel algorithme MCMC associé à cette loi conditionnelle complète. La validation théorique est la même qu’avec n’importe quel échantillonneur MCMC. Si on utilise un échantillonneur par tranches, il suffit d’ajouter la variable auxiliaire au vecteur de paramètres.
196
Méthodes de Monte-Carlo avec R
Exemple 7.12 (Une hiérarchie de Poisson) Un exemple important de la littérature de l’échantillonnage de Gibbs décrit les défaillances répétées de dix pompes d’une centrale nucléaire ; les données figurent dans le Tableau 7.2. Pompe Défaillances Temps
1 2 3 4 5 6 7 8 9 10 5 1 5 14 3 19 1 1 4 22 94.32 15.72 62.88 125.76 5.24 31.44 1.05 1.05 2.10 10.48
Tableau 7.2 – Nombre de défaillances et temps d’observation pour dix pompes d’une centrale nucléaire (source : Gaver & O’Muircheartaigh, 1987). Le modèle fait l’hypothèse que les défaillances de la pompe i suivent un processus de Poisson de paramètre λi (1 ≤ i ≤ 10). Pour un temps d’observation ti , le nombre de défaillances Xi suit donc une distribution de Poisson P(λi ti ). La distribution a priori standard est une distribution gamma, ce qui mène au modèle hiérarchique Xi λi β
∼ P(λi ti ), ∼ G(α, β), ∼ G(γ, δ).
i = 1, . . . 10, i = 1, . . . 10,
La distribution jointe est donc π(λ1 , . . . , λ10 , β|t1 , . . . , t10 , p1 , . . . , p10 ) ∝
10
(λi ti )xi e−λi ti λα−1 e−βλi β 10α β γ−1 e−δβ i
i=1
∝
10
λxi i +α−1 e−(ti +β)λi β 10α+γ−1 e−δβ ,
i=1
ce qui donne les distributions conditionnelles complètes λi |β, ti , xi
∼
G(xi + α, ti + β),
β|λ1 , . . . , λ10
∼
G
γ + 10α, δ +
i = 1, . . . 10,
10
λi
.
i=1
L’échantillonneur de Gibbs associé est assez simple ; le cœur du code R en est > for(i in 2:Nsim){ + for(j in 1:nx) + lambda[i,j]=rgamma(1,sh=xdata[j]+alpha,ra=Time[j]+beta[i-1]) + beta[i]=rgamma(1,sh=gamma+nx*alpha,ra=delta+sum(lambda[i,]))}
Chapitre 7. Echantillonneurs de Gibbs
197
La Figure 7.10 montre le résultat de 5000 itérations de cet échantillonneur.
Fig. 7.10 – Histogrammes des distributions marginales de λ1 , λ2 et β pour les données de défaillances de pompes de l’Exemple 7.12. Les panneaux du bas sont les courbes d’autocorrélation. Valeurs des hyperparamètres : α = 1.8, γ = 0.01 et δ = 1. Exercice 7.8 Une des raisons de la collection des données sur les défaillances des pompes est d’identifier quelles pompes sont les plus fiables. a. À l’aide de l’échantillonneur de Gibbs pour les données de défaillances de pompes, obtenir des intervalles de crédibilité a posteriori a 95% pour les paramètres λi . b. D’après cette analyse, êtes-vous en mesure d’identifier des pompes qui sont plus fiables que d’autres ? c. Votre réponse à la question b. change-t-elle si la valeur des hyperparamètres est modifiée ?
7.6
Autres considérations
Dans cette dernière section, on s’intéresse à quelques problèmes qui peuvent se poser dans l’implantation d’un échantillonneur de Gibbs.
198
7.6.1
Méthodes de Monte-Carlo avec R
Reparamétrisation
De nombreux facteurs contribuent aux propriétés de convergence d’un échantillonneur de Gibbs. Par exemple, les performances de convergence peuvent être fortement affectées par le choix des coordonnées (autrement dit, par la paramétrisation). Si la matrice de covariance Σ de la cible a un grand spectre de valeurs propres, l’échantillonneur de Gibbs peut explorer le domaine de la cible très lentement. Exemple 7.13 (Corrélation dans une loi normale bivariée) Reprenons l’Exemple 7.1, où nous avions construit un échantillonneur de Gibbs pour la loi normale bivariée (7.1). Pour cette distribution, la Figure 7.11 montre l’autocorrélation de l’échantillonneur de Gibbs pour les cibles correspondant respectivement à ρ = .3, .6, .9.
Fig. 7.11 – Autocorrélations d’une marginale de la normale bivariée générées par un échantillonneur de Gibbs pour ρ = 0.3 (gauche), ρ = 0.6 (centre) et ρ = 0.9 (droite). La forte corrélation a pour conséquence un échantillonneur qui a plus de difficultés à explorer tout l’espace et nécessite donc un plus grand nombre d’itérations. Il est également intéressant de noter que quelle que soit la valeur de ρ, X + Y et X − Y sont indépendants. Effectuer un changement de coordonnées passant de (x, y) en (x + y, x − y) donnerait donc un algorithme de Gibbs qui convergerait immédiatement ! Exercice 7.9 Pour la distribution normale bivariée (7.1) : a. Montrer que X + Y et X − Y sont indépendantes. b. Supposons que X et Y soient des variables normales bivariées de moyenne 0 et de corrélation ρ, et que var(X) = σx2 et var(T ) = σy2 , qui peuvent être différentes. Etudier l’effet des variations de ρ, σx2 et σy2 sur l’autocorrélation.
Chapitre 7. Echantillonneurs de Gibbs
199
c. Si σx2 = σy2 , alors X + Y et X − Y ne sont plus indépendants. Trouver un changement de variables linéaire qui donne des composantes indépendantes.
La convergence de l’échantillonneur de Gibbs et des algorithmes de Metropolis– Hastings peut donc souffrir d’un mauvais choix de la paramétrisation. Dans la littérature MCMC, on considère qu’un changement de paramétrisation d’un modèle est à même d’accélérer la convergence d’un échantillonneur de Gibbs. Il semble toutefois que la majorité des efforts a porté sur des modèles spécifiques, et qu’il n’existe pas de méthodologie générale pour choisir une “bonne" paramétrisation. Notre recommandation générale est de chercher à ce que les composantes soient “aussi indépendantes que possible" et d’utiliser plusieurs paramétrisations en même temps pour mélanger les lois conditionnelles et accélérer la convergence.
Exemple 7.14 (Suite de l’Exemple 7.5) Pour reparamétrer l’effet aléatoire de l’Exemple 7.5, on peut introduire la moyenne globale des paramètres au niveau des observations :
Xij θi μ
∼
N (μ + θi , σ2 ),
i = 1, . . . , k,
j = 1, . . . , ni ,
2
∼ N (0, τ ), i = 1, . . . , k, ∼ N (μ0 , σμ2 ).
(7.10)
La structure hiérarchique semble être la même, mais les lois conditionnelles sont différentes (Exercice 7.10) et les propriétés de l’échantillonneur de Gibbs correspondant sont modifiées. Ainsi, quand on l’applique aux données Energy, le nouvel échantillonneur de Gibbs n’est pas aussi performant. Par exemple, la Figure 7.12 montre les autocorrélations qui, visuellement, semblent légèrement meilleures que pour le premier modèle. Mais, quand on considère la matrice des covariances de la (t) (t) sous-chaîne (μ(t) , θ1 , θ2 ), ses estimées sont respectivement ⎛
⎞ ⎛ ⎞ 1.056 −0.175 −0.166 1.604 0.681 0.698 ⎝ −0.175 1.029 0.018 ⎠ et ⎝ 0.681 1.289 0.278 ⎠ , −0.166 0.018 1.026 0.698 0.278 1.304
pour les modèles (7.7) et (7.10). Les variances et covariances sont plus grandes pour le modèle reparamétré, ce qui signifie que la paramétrisation du modèle (7.7) est préférable.
200
Méthodes de Monte-Carlo avec R
Fig. 7.12 – Autocovariances pour l’échantillonneur de Gibbs associé au modèle (7.7) et l’échantillonneur de Gibbs associé à sa reparamétrisation (7.10). La ligne du haut donne les autocovariances pour μ, θ1 , θ2 (de gauche à droite) pour le modèle (7.7) et la ligne du bas les donne pour le modèle (7.10). Exercice 7.10 Pour le modèle reparamétré (7.10) : a. Montrer que les lois conditionnelles complètes de θi et μ sont ¯ i − μ), (σ 2 /ni )B1 , N B1 (X
ni τ 2 , i = 1, . . . , k ni τ 2 + σ 2 nσμ2 ¯ (σ 2 /n)B2 , B2 = ¯ − θ), μ ∼ N (1 − B2 )μ0 + B2 (X , nσμ2 + σ 2 où n = i ni et θ¯ = i ni θi /n. b. Ecrire un échantillonneur de Gibbs pour ce modèle et comparer les autocovariances à celles de l’échantillonneur de Gibbs basé sur le modèle (7.7). c. La matrice de covariance des estimateurs des paramètres est l’inverse de la matrice d’information de Fisher. Calculer cette matrice pour les deux paramétrisations à l’aide des fonctions R cor et solve. θi
7.6.2
∼
B1 =
Rao–Blackwellisation
Nous avons déjà rencontré la Rao–Blackwellisation dans la Section 4.6, où le fait de conditionner sur un sous-ensemble des variables simulées (en intégrant par rapport
Chapitre 7. Echantillonneurs de Gibbs
201
au reste) peut produire une amélioration considérable, en termes de variance, de l’estimateur empirique standard, par un simple “recyclage" des variables rejetées. Comme l’échantillonneur de Gibbs accepte toutes les valeurs simulées, ce type de recyclage ne peut pas s’appliquer ici. Toutefois, Gelfand & Smith (1990) proposent de conditionner suivant une technique que nous appellerons Rao–Blackwellisation paramétrique pour la différencier de celle étudiée dans la Section 4.6. Pour (X, Y ) ∼ f (x, y), la Rao–Blackwellisation paramétrique est basée sur l’identité de marginalisation (ou des espérances itérées) E[X] = E[E[X|Y ]] . Posons δ(Y ) = E[X|Y ] ; on a E[δ(Y )] = E[X] et var[δ(Y )] ≤ var(X), ce qui montre que δ(Y ) est un meilleur estimateur que X (en supposant qu’on puisse le calculer). Exemple 7.15 (Rao–Blackwellisation de Gibbs sur une loi normale bivariée) Dans le cas où la cible est une loi normale bivariée, les lois conditionnelles complètes sont Xt+1 | yt Yt+1 | xt+1
∼ ∼
N (ρyt , 1 − ρ2 ), N (ρxt+1 , 1 − ρ2 ),
et il en découle que E[X|Y ] = ρY . Comme X et Y ont la même distribution marginale, la variance de la version Rao–Blackwellisée est clairement réduite d’un facteur ρ2 . Malheureusement, l’emploi de δY ne réduit pas la variance de manière générale, car la corrélation dans l’échantillon MCMC induit des termes croisés dans la variance. Toutefois, Liu et al. (1994) ont montré qu’en particulier l’amélioration apportée par la Rao–Blackwellisation paramétrique est garantie pour tout échantillonneur de Gibbs à deux étapes. On s’intéresse maintenant à un autre exemple de Rao–Blackwellisation d’un échantillonneur de Gibbs à données manquantes dans un contexte relativement courant où des gains sont possibles. Exemple 7.16 (Comptages poissoniens avec données manquantes) Pour 360 unités de temps consécutives, considérons l’enregistrement du nombre de passages d’individus par unité de temps devant un capteur. (Cela peut correspondre, par exemple, au nombre de voitures observées à un carrefour.) Les résultats hypothétiques de cet enregistrement sont Nombre de passages Nombre d’observations
0 139
1 128
2 55
3 25
4 ou plus 13
Dans ces données, on a regroupé les observations avec quatre passages ou plus, ce qui constitue un modèle à données manquantes, où les observations non groupées
202
Méthodes de Monte-Carlo avec R
sont de loi Xi ∼ P(λ). La vraisemblance du modèle est alors (λ|x1 , . . . , x5 ) ∝ e
−347λ 128+55×2+25×3
λ
1−e
−λ
3
13 i
λ /i!
i=0
pour x1 = 139, . . . , x5 = 13. Pour π(λ) = 1/λ et z = (z1 , . . . , z13 ), le vecteur des 13 unités avec plus de 4 observations, on peut construire une complétion et donc un échantillonneur de Gibbs à partir des lois conditionnelles complètes Zi
(t)
∼
λ(t)
∼
P(λ(t−1) ) Iy≥4 , i = 1, . . . , 13, 13 (t) G 313 + Zi , 360 . i=1
L’estimateur Rao–Blackwellisé de λ est alors donné par T T 13 ) ( * 1 (t) (t) (t) 313 + , E λ*, z1 , . . . , z13 = yi 360T t=1 t=1 i=1 et l’évolution de cet estimateur, ainsi que celle de la moyenne empirique, sont représentées dans la Figure 7.13. On y observe bien une réduction importante de la variance.
Fig. 7.13 – Pour les données de comptage de l’Exemple 7.16 et un échantillonnage de Gibbs, histogramme des λ simulés (gauche) et espérance conditionnelle 13 E(λ|Z) = 313 + i=1 zi (droite). On notera la différence d’échelle des histogrammes. Le panneau central montre l’évolution des moyennes cumulées de la moyenne empirique (noir) et de la Rao–Blackwellisation (plus clair).
Chapitre 7. Echantillonneurs de Gibbs
203
Exercice 7.5 En reprenant l’Exemple 7.16 : a. Vérifier la fonction de vraisemblance et l’échantillonneur de Gibbs. b. Ecrire un code R pour reproduire la Figure 7.13. c. La variable de Poisson tronquée peut être générée avec la commande while : > for (i in 1:13){while(y[i]<4) y[i]=rpois(1,lam[j-1])} ou directement avec > prob=dpois(c(4:top),lam[j-1]) > for (i in 1:13) z[i]=4+sum(prob
Il existe aussi des estimateurs Rao-Blackwellisés non paramétriques dans des contextes de données manquantes. Quand on considère une approximation de la densité marginale fX associée à f (x, y1 , . . . , yp ), un estimateur Rao-Blackwellisé de fX associé à la chaîne de Gibbs (x(t) , y(t) )t est donné par T 1 f-X (x) = f (x|y(t) ) . T t=1
(7.11)
Il converge en fait à vitesse paramétrique vers fX . Cet estimateur donne une approximation continue de la densité marginale, que l’on peut représenter en sus de l’histogramme. Comme on l’a vu dans les Exercices 3.13, 4.1 et 4.1, l’approximation du facteur de Bayes exige des solutions de calcul spécifiques. Chib (1995) propose une approche qui se fonde sur une Rao-Blackwellisation nettement plus efficace quand on peut l’implanter. Exercice 7.6 Dans un contexte de modèle à données manquantes où la densité d’échantillonnage peut s’écrire comme g(x, z|θ) dz, f (x|θ) = Z
on suppose que la loi a priori π(θ) autorise un échantillonneur de Gibbs à deux étapes fondé sur la simulation de g(z|x, θ) et π(θ|x, z). En utilisant une représentation de la densité marginale déduite du théoréme de Bayes, m(x) =
f (x|θ)π(θ) , π(θ|x)
construire un estimateur convergent de m(x) fondé sur l’estimateur Rao-Blackwellisé de la densité a posteriori π(θ|x) ci-dessus. L’appliquer aux Exemples 7.7 et 7.9.
204
7.6.3
Méthodes de Monte-Carlo avec R
Metropolis dans Gibbs et stratégies hybrides
L’échantillonnage de Gibbs peut être généralisé à des modèles où certaines des lois conditionnelles complètes ne sont pas des lois standard. Plus précisément, si, dans un ensemble de lois conditionnelles complètes f1 , . . . , fp , une densité fi ne peut pas être simulée directement, comme par exemple (5.15) dans l’Exemple 5.17, il est tout de même possible de construire un échantillonneur de Gibbs, puisque la stratégie suivante de Metropolis dans Gibbs peut être adoptée : plutôt que de simuler (t+1) (t+1) (t+1) (t) Xi ∼ fi (xi |x1 , . . . , xi−1 , xi+1 , . . . , x(t) p ), on peut utiliser une seule étape de n’importe quelle méthode MCMC associée (t+1) (t+1) (t) (t) à la densité cible fi (xi |x1 , . . . , xi−1 , xi+1 , . . . , xp ). Une solution simple est (t)
par exemple d’utiliser une marche aléatoire centrée en xi . À première vue, cette réponse peut passer pour une approximation grossière, puisque la loi conditionnelle complète n’est pas simulée exactement, mais la validité de l’algorithme qui résulte de cette substitution est exactement la même que pour l’échantillonneur de Gibbs originel, puisque la distribution jointe f est toujours la distribution stationnaire de la chaîne de Markov correspondante. On peut se demander à quoi sert d’utiliser un échantillonneur de Gibbs si les simulations composante par composante doivent être remplacées par des étapes de Metropolis–Hastings : l’alternative d’un algorithme Metropolis–Hastings ayant pour cible la distribution jointe f serait alors plus “naturelle". La motivation pour ces étapes de Metropolis dans Gibbs est la dimension des problèmes considérés. La création d’un algorithme de Metropolis–Hastings sur une cible de grande dimension est souvent difficile, voire impossible. Le gain fondamental dans l’utilisation d’une structure de type Gibbs est qu’elle divise un modèle complexe en un grand nombre de cibles de dimensions plus petites, donc plus simples, où des algorithmes Metropolis–Hastings locaux peuvent être créés à faible coût. Exemple 7.17 (Illustration de Metropolis dans Gibbs) Considérons la distribution cible (5.15). Nous avons mentionné dans l’Exemple 5.17 que cette distribution n’est pas standard. Booth & Hobert (1999) ont créé un algorithme de rejet spécifique pour simuler (5.15), mais on peut aussi proposer une marche aléatoire sur chaque ui : le code > for (i in 1:n){ + mu=u[i] + u[i]=factor*sigma[iter-1]*rnorm(1)+mu + if (log(runif(1))>gu(u[i],i,beta[iter-1],sigma[iter-1])+ gu(mu,i,beta[iter-1],sigma[iter-1])){ + u[i]=mu + } + }
Chapitre 7. Echantillonneurs de Gibbs
205
produit un échantillon des ui à l’itération iter conditionnellement aux valeurs actuelles des paramètres et à l’échantillon des ui à l’itération iter-1. Dans l’échantillonneur de Gibbs global, les paramètres sont alors simulés par > > > > + + >
sigma=c(sigma,1/sqrt(2*rgamma(1,0.5*n)/sum(u^2))) tau=sigma[iter]/sqrt(sum(as.vector(x^2)*pro(beta[iter-1],u))) betaprop=beta[iter-1]+rnorm(1)*factor*tau if (log(runif(1))>likecomp(betaprop,sigma[iter],u)likecomp(beta[iter-1],sigma[iter],u)) betarop=beta[iter-1] beta=c(beta,betaprop)
facilement. (Voir l’Exemple 8.1 pour l’implantation complète.) Le terme de calibration factor peut être réglé en termes du taux d’acceptation de la Section 6.5, comme décrit dans la Section 8.5. En restant proche de cette idée d’incorporer des étapes de Metropolis–Hastings quand la simulation directe n’est pas possible, signalons aussi l’extension possible aux stratégies hybrides. 4 Le concept est, une fois encore, fondé sur la stationnarité de la bonne distribution cible, même s’il peut sembler contre-intuitif. Quand on dispose d’une cible (univariée ou multivariée) pour laquelle plusieurs méthodes MCMC naturelles sont disponibles, un algorithme hybride fusionne ces différentes méthodes en une seule. Schématiquement, si les fonctions de mise à jour MCMC locales ou globales (c’est-à-dire composante par composante ou jointes) mcmc.1(x,y), . . ., mcmc.q(x,y) sont disponibles, le noyau de transition défini par mcmc(x,y)=function(x,y){ switch(sample(1:p,1), mcmc.1(x,y) ... mcmc.p(x,y)) } est encore une mise à jour MCMC valide pour la même distribution cible. Cela peut paraître ridicule, puisque de mauvaises méthodes sont mélangées à de bonnes méthodes, mais ce mélange à l’aveugle de toutes les stratégies disponibles est néanmoins (a) valide du point de vue de la production de la bonne distribution stationnaire et (b) sans risque puisque si la liste des fonctions contient au moins un algorithme performant, la version hybride est au moins aussi performante, même si le temps de calcul est multiplié par p. Par exemple, si plusieurs stratégies de regroupement ou de reparamétrisation sont disponibles, elles peuvent toutes être incorporées dans le même algorithme. Cette solution peut paraître un gâchis 4. Il ne faut pas confondre les stratégies hybrides avec le Monte-Carlo hybride (Neal, 1999), qu’on appelle également MCMC hamiltonien et qui est une version de l’algorithme de Langevin qui cherche à réduire les rejets dans la simulation de propositions de marches aléatoires.
206
Méthodes de Monte-Carlo avec R
du temps de calcul, mais selon nous, à moins qu’une des fonctions mcmc.i ne fonctionne clairement bien, le temps passé (gâché) sur la solution hybride est du temps de gagné à créer et sélectionner la fonction mcmc.i la plus efficace. Autrement dit, il est plus efficace de laisser l’ordinateur faire son tri parmi les différentes solutions disponibles que de faire des tests préliminaires pour trier ces solutions “à la main".
7.6.4
Distributions a priori impropres
Cette section aborde un danger spécifique provenant d’une utilisation inappropriée de l’échantillonnage de Gibbs. On sait que l’échantillonnage de Gibbs est fondé sur les distributions conditionnelles déduites de la distribution jointe. Malheureusement, ces distributions conditionnelles peuvent très bien être correctement définies et se prêter à la simulation, sans pour autant correspondre à une distribution jointe ! Ce problème n’est pas un défaut de l’échantillonnage de Gibbs, ni même un problème de simulation. Il découle plutôt de l’emploi impropre de l’échantillonnage de Gibbs dans une situation où les hypothèses sous-jacentes ne sont pas vérifiées. Il nous semble important de prévenir l’utilisateur d’algorithmes MCMC de ce danger, puisqu’il correspond à une situation qu’on rencontre souvent dans des modèles bayésiens non informatifs (ou “par défaut”). La construction naturelle d’un échantillonneur de Gibbs directement fondé sur les distributions conditionnelles pousse fortement l’utilisateur à ne pas vérifier que la distribution a posteriori jointe est intégrable, surtout dans des situations complexes. Mais cette vérification est essentielle car l’algorithme ne détecte pas toujours la difficulté, comme le montre l’exemple suivant, créé par Casella & George (1992). Exemple 7.18 (Distributions conditionnelles impropres) Considérons les densités conditionnelles X|y ∼ Exp(y) ,
Y |x ∼ Exp(x) ,
(7.12)
qui sont bien définies en tant que lois de probabilité. Néanmoins, ces distributions conditionnelles ne correspondent à aucune distribution jointe. En effet, la seule densité qui pourrait faire office de distribution jointe est f (x, y) ∝ exp(−xy), dont l’intégrale n’est pas finie. La Figure 7.14 montre un histogramme et la moyenne cumulée tirés d’un échantillon généré à l’aide de l’échantillonneur de Gibbs correspondant à ces deux lois conditionnelles. La chaîne (x(t) ) prend à un moment une valeur démesurément grande, qui est un signe de problème de convergence. Dans le cas présent, la chaîne de Markov ainsi créée n’est pas récurrente.
Chapitre 7. Echantillonneurs de Gibbs
207
Fig. 7.14 – Histogramme et moyenne cumulée de la variable X de l’échantillonneur de Gibbs de (7.12). Notons le spectre des valeurs prises par la chaîne sur les graphiques. Exercice 7.11 Pour l’échantillonneur de Gibbs utilisant (7.12) a. Ecrire un code R pour reproduire la Figure 7.14. b. Le Théorème de Hammersley–Clifford (Robert & Casella, 2004, Section 9.1.4) établit que la densité jointe doit satisfaire f (x, y) = f (y|x)
[f (y|x)/f (x|y)] dy .
Montrer que ce résultat appliqué à (7.12) aboutit à f (x, y) ∝ exp(−xy). c. Montrer que, si les distributions exponentielles sont restreintes à (0, B), B < ∞, le comportement de la chaîne de Markov devient raisonnable. Montrer la stationnarité de la chaîne de Markov dans ce cas. (Suggestion : utiliser le théorème de Hammersley– Clifford.)
Au vu des résultats de l’Exemple 7.18, on pourrait penser qu’une simple vérification graphique suffit à signaler qu’un échantillonneur de Gibbs est associé à une fausse loi cible. Malheureusement, ce n’est en général pas le cas et il existe de nombreux exemples, dont certains ont été publiés (voir Casella, 1996), où la sortie de l’échantillonneur de Gibbs ne semble pas différer de celle d’une chaîne de Markov convergente. Souvent, ce phénomène se produit quand la divergence de la densité cible a lieu “en 0", c’est-à-dire en un point spécifique dont le voisinage immédiat est rarement visité par la chaîne, comme dans l’exemple ci-dessous d’un modèle à effets aléatoires. La seule façon de vérifier que le modèle fondant un échantillonneur de Gibbs est valide est de démontrer que la distribution jointe a une intégrale finie...
208
Méthodes de Monte-Carlo avec R
Exemple 7.19 (Distribution a posteriori impropre pour un modèle à effets aléatoires) Considérons le modèle à effets aléatoires Yij = β + Ui + εij ,
i = 1, . . . , I, j = 1, . . . , J,
où Ui ∼ N (0, σ 2 ) et εij ∼ N (0, τ 2 ). La distribution a priori (impropre) de Jeffreys pour les paramètres β, σ et τ est π(β, σ 2 , τ 2 ) =
1 σ2 τ 2
.
Les distributions conditionnelles correspondantes J(¯ yi − β) −2 −2 −1 , Ui |y, β, σ 2 , τ 2 ∼ N , (Jτ + σ ) J + τ 2 σ −2 β|u, y, σ 2 , τ 2
∼
σ 2 |u, β, y, τ 2
∼
N (¯ y−u ¯, τ 2 /JI), 2 IG I/2, (1/2) ui , ⎛
τ 2 |u, β, y, σ 2
∼
IG ⎝IJ/2, (1/2)
i
⎞ (yij − ui − β)2 ⎠ ,
i,j
sont toutes bien définies et un échantillonneur de Gibbs peut facilement s’en déduire. Toutefois, il n’existe pas de distribution jointe intégrable qui lie ces lois conditionnelles ! Comme vous pouvez le vérifier par vous-même, il est de plus impossible de détecter ce problème en étudiant les sorties de l’échantillonneur de Gibbs. Exercice 7.7 Dans le contexte de l’Exemple 7.19 : a. Générer des données selon le modèle à effets aléatoires et utiliser l’échantillonneur de Gibbs correspondant pour générer les paramètres du modèle suivant la loi a posteriori. Etudier les histogrammes et les moyennes cumulées. Parvenez-vous à détecter qu’il n’existe pas de distribution jointe intégrable ? b. La variation sur le modèle (7.6) donnée à l’Exercice 7.4, où μ a une distribution a priori uniforme, est un échantillonneur de Gibbs avec des distributions a priori impropres. Il n’y a pas de garantie que la distribution a posteriori soit intégrable ; vérifiez qu’elle l’est.
En conclusion, quand on utilise des distributions a priori impropres et qu’on en déduit un échantillonneur de Gibbs, il faut toujours vérifier que la distribution a posteriori est intégrable. (Notons qu’une distribution a priori impropre sur les variances cause souvent plus de problèmes qu’une distribution a priori impropre sur les moyennes.)
Chapitre 7. Echantillonneurs de Gibbs
7.7
209
Exercices supplémentaires
Exercice 7.8 La distribution gamma de paramètres a et b, G(a, b), admet pour densité ba xa−1 e−bx /Γ(a). Montrer que si X ∼ IG(a, b), alors 1/X ∼ G(a, b), ce qui signifie que générer selon une distribution gamma revient à générer selon une inverse-gamma. Exercice 7.9 Pour la structure hiérarchique (7.6), montrer que la distribution jointe peut être obtenue en multipliant les densités entre elles. À l’aide de la stratégie de l’Exercice 7.2, vérifier que les lois conditionnelles complètes sont bien données par (7.7). Exercice 7.10 Un générateur de loi gaussienne tronquée est fondé sur la fonction R rtnorm=function(n=1,mu=0,lo=-Inf,up=Inf){ qnorm(runif(n,min=pnorm(lo,mean=mu,sd=sigma), max=pnorm(up,mean=mu,sd=sigma)), mean=mu,sd=sigma)} où mu et sigma sont la moyenne et l’écart type de la loi normale, lo est le point de troncature inférieur, up est le point de troncature supérieur, et n est le nombre de variables aléatoires à générer. Pour Z ∼ N (0, 1) avec la troncature (i) −1 < Z < 1, (ii) Z < 1, et (iii) Z > 3, générer 1000 variables aléatoires et comparer les histogrammes avec les densités correspondantes. Exercice 7.11 Dans le contexte de l’Exercice 7.3 : a. Calculer les troisième et quatrième moments de la densité de la question a. b. Si X ∼ Np (0, Σ), montrer que la densité de X1 |x(−1) est −1 Np (Σ12 Σ−1 22 x(−1) , Σ11 − Σ12 Σ22 Σ12 ),
où la matrice de covariance est partitionnée de manière évidente. Utiliser cette formule pour vérifier (7.5). c. Vérifier que la matrice (1 − ρ)I + ρJ est seulement définie positive si ρ > −1/(p − 2). Exercice 7.12 Pour le modèle (7.8), la distribution a posteriori (non complétée) est π(θ1 , θ2 |x)
∝
(a1 θ2 + b1 )x1 (a2 θ2 + b2 )x2 (a3 θ1 + b3 )x3 (a4 θ1 + b4 )x4 × (1 − θ1 − θ2 )x5 +α3 −1 θ2α1 −1 θ1α2 −1 .
a. Montrer que les densités marginales π(θ1 |x) et π(θ2 |x) peuvent être calculées explicitement comme polynômes lorsque les αi sont entiers. b. Donner la distribution marginale a posteriori de ξ = θ2 /(1 − θ1 − θ2 ). (Suggestion : voir Robert, 1995a, pour une solution.) c. Evaluer l’échantillonneur de Gibbs fondé sur (7.9) en comparant les moments empiriques de θ1 , θ1 et ξ avec leurs équivalents exacts déduits de la loi marginale explicite.
210
Méthodes de Monte-Carlo avec R
Exercice 7.13 La paramétrisation alternative du modèle (7.6) fournie dans l’Exemple 7.14 modifie la relation entre les variables. Montrer que θi et μ sont a priori indépendants pour cette paramétrisation mais que ce n’est pas le cas pour le modèle (7.6). Exercice 7.14 La Rao-Blackwellisation peut être appliquée à la plupart des échantillonneurs de Gibbs de ce chapitre. Pour chacun des exemples suivants, vérifier l’expression de l’espérance conditionnelle et utiliser une expérience codée en R pour la comparer à la moyenne empirique avec RaoBlackwellisation. a. Exemple 7.2 : E[θ|x] = x + a/(n + a + b). σ2 nτ 2 θ0 + 2 x ¯. 2 + nτ σ + nτ 2 2 σ2 iτ ¯ ¯i , σ2 ] = c. Equation (7.7) : E[θi |X μ + σ2n+n 2 Xi . 2 iτ σ + ni τ 2 m¯ x + (n − m)¯ z d. Exemple 7.6 : E[θ|x, z] = . n e. Exemple 7.12 : E[λi |β, ti , xi ] = (xi + α)/(ti + β). b. Equation (7.4) : E[θ|x, σ 2 ] =
σ2
Chapitre 8
Contrôle de convergence et adaptation des algorithmes MCMC “Why does he insist that we must have a diagnosis ? Some things are not meant to be known by man." Susanna Gregory An Unholy Alliance
Guide du lecteur Le but de ce chapitre est de présenter différentes méthodes de contrôle (ou diagnostics) pour vérifier la convergence d’un algorithme MCMC. Ces méthodes s’appuient sur la chaîne produite par l’algorithme pour répondre à la question la plus courante à propos des méthodes MCMC, à savoir : “quand doit-on arrêter l’algorithme ?” Nous distinguons ici deux notions de convergence : la convergence vers la loi stationnaire et la convergence de moyennes ergodiques, par opposition au cas iid. Nous examinons également plusieurs types de diagnostics de convergence, principalement ceux contenus dans la librairie coda de Plummer et al. (2006), bien que d’autres méthodes soient plus précises dans certains cas particuliers. Puisque l’évaluation de la convergence est une étape préalable à la comparaison entre plusieurs algorithmes, nous couvrons aussi dans ce dernier chapitre (bien que brièvement) les méthodes MCMC adaptatives, en soulignant les dangers de l’adaptation naïve et en examinant la librairie amcmc développée par Rosenthal (2007) pour une distribution de proposition particulière à marche aléatoire adaptative.
C. P. Robert et al., Méthodes de Monte-Carlo avec R © Springer-Verlag France 2011
212
8.1
Méthodes de Monte-Carlo avec R
Introduction
Dans les deux chapitres précédents, nous avons introduit les algorithmes MCMC et, bien que nous ayons omis la plupart des détails théoriques, nous avons affirmé que, sous des conditions assez générales, ces algorithmes sont convergents car les chaînes qu’ils produisent sont ergodiques. Bien que ces résultats soient évidemment nécessaires en tant que validation théorique des algorithmes MCMC, ils sont toutefois insuffisants du point de vue de l’implémentation. En effet, ces garanties théoriques ne nous disent pas quand arrêter ces algorithmes, ni à partir de combien d’itérations il est possible de produire les estimations avec suffisamment de confiance. Dans l’idéal, nous aimerions vous donner des indicateurs clairs de convergence à inclure dans tous vos programmes R afin qu’aucun traitement supplémentaire ne soit requis ! En pratique, cela s’avère impossible et plusieurs exécutions de votre programme sont nécessaires avant que vous soyez satisfait du résultat (ou que vous soyez à court de temps et/ou de patience). Comme dans le Chapitre 4, les techniques que nous présentons ici sont principalement empiriques et des difficultés supplémentaires apparaissent puisque nous simulons seulement approximativement selon la densité cible. Ainsi, nous décrivons essentiellement une série de méthodes qui ne sont pas comparables, ayant chacune un degré de justification théorique et une utilité propres, alors même que l’évaluation permise par ces méthodes est en partie subjective et loin d’être infaillible. Historiquement, une série d’articles est parue à la fin des années 90 sur les diagnostics de convergence (voir Robert & Casella, 2004, Chapitre 13), émergence qui correspondit au développement d’une librairie R appelée coda, que nous examinerons plus loin dans ce chapitre. Cette vogue est dorénavant passée, principalement parce que, malheureusement, aucun critère n’est absolu. Il est d’ailleurs quelque peu illusoire de croire que l’on peut contrôler la propagation d’une chaîne de Markov et évaluer sa convergence uniquement à partir de quelques (centaines, milliers ou même millions de) réalisations de cette chaîne. Il existera toujours des cadres qui, pour la plupart des réalisations, invalideront un diagnostic donné et le caractère aléatoire inhérent à la nature du problème empêche toute garantie catégorique de performance.
8.2
Que contrôler et pourquoi ?
Avant de décrire les outils de contrôle, il est nécessaire d’examiner les objectifs alloués à ces outils, qui correspondent à trois types différents de convergence pour lesquels une évaluation est nécessaire.
8.2.1
Convergence vers la loi stationnaire
La première condition de convergence d’un algorithme MCMC énonce que la distribution de la chaîne (x(t) ) doit être la distribution stationnaire f . Cette condition
Chapitre 8. Contrôle et adaptation des algorithmes MCMC
213
semble être minimale pour un algorithme censé être un générateur approché de f ! Malheureusement cette condition n’est pas aussi simple qu’il n’y paraît. En effet évaluer que, pour t donné, x(t) est exactement distribué selon f est d’une part une tâche difficile quand f est une cible complexe et d’autre part une impossibilité théorique si l’on considère une unique réalisation (ou trajectoire) de la chaîne de Markov (x(t) ). Ces deux problèmes peuvent être contournés en se fixant un objectif un peu moins ambitieux, qui est d’évaluer expérimentalement l’indépendance par rapport au point de départ x(0) , à partir de plusieurs réalisations de la chaîne utilisant le même noyau de transition. Dans Robert & Casella (2004), nous faisions l’hypothèse que, dans un cadre statistique standard où le support de f est approximativement connu, cette première question de convergence est marginale, à savoir que la valeur initiale x(0) peut être choisie comme si elle était générée à partir de la distribution f . Lors de l’examen d’une seule chaîne, cela revient à considérer que la chaîne est déjà dans son régime stationnaire au départ, donc en pratique que x(0) appartient à un ensemble de valeurs assez probables pour f . Cependant cette hypothèse est plus dure à maintenir en grande dimension, quand le support de f est généralement inconnu.
Pendant l’exécution d’un algorithme MCMC, les questions les plus importantes sont la vitesse d’exploration du support de f (c’est-à-dire de la région qui contient la plupart de la masse de f ) et le degré de corrélation entre les x(t) . Cependant cela ne signifie pas que la stationnarité ne doit pas être testée. Comme l’explique la Section 8.3.2, quelle que soit la distribution de départ, la chaîne peut avoir besoin de temps pour explorer les différentes régions du support de f , avec de longs séjours dans certaines sous-régions. Un test de stationnarité comparant plusieurs chaînes peut alors être utile pour détecter de telles difficultés. Le principal outil d’évalutation de (la convergence vers) la stationnarité consiste à lancer plusieurs chaînes en parallèle afin de comparer leurs performances. Evidemment, cela signifie que la chaîne la plus lente du groupe détermine le diagnostic de convergence et que le choix de la distribution initiale est extrêmement important pour garantir que les différentes chaînes sont bien réparties (par rapport à la distribution cible f ). Cependant l’émergence de machines à plusieurs processeurs incite à lancer plusieurs chaînes en parallèle, alors que la nature markovienne des algorithmes MCMC limite l’utilisation de ces processeurs multiples pour la construction d’une unique chaîne. Vérifier la convergence d’un algorithme MCMC en utilisant plusieurs chaînes en même temps n’est donc pas beaucoup plus coûteux qu’utiliser une seule chaîne et l’ensemble des chaînes générées peut ensuite être recyclé à des fins d’approximation (Monte-Carlo). Regarder une unique trajectoire de chaîne de Markov produite par un algorithme MCMC rend difficile l’évaluation de la convergence sauf si de l’information est disponible sur la cible f ou sur le noyau de transition K. En général les algorithmes MCMC souffrent d’un inconvénient majeur qui peut s’exprimer ainsi : “vous n’avez
214
Méthodes de Monte-Carlo avec R
vu que ce que vous avez parcouru", c’est-à-dire que la partie du support de f qui n’a pas (encore) été visitée par la chaîne au temps T est presque impossible à détecter. Ce problème de la “masse manquante" est une difficulté centrale pour la plupart des algorithmes MCMC, beaucoup plus que le manque d’exploration des queues de distribution de f .
8.2.2
Convergence de moyennes
Une fois (approximativement) réglé le problème de la convergence vers la distribution stationnaire, nous nous trouvons à nouveau dans le cadre classique des méthodes de Monte-Carlo, à savoir la convergence de la moyenne empirique T 1 h(x(t) ) T t=1
(8.1)
vers Ef [h(X)] pour une fonction quelconque h. Bien que les outils du chapitre 4 puissent être utilisés dans ce contexte, il y a deux distinctions à faire entre les sorties stationnaires d’un algorithme MCMC et les sorties iid, à savoir la dépendance probabiliste au sein de l’échantillon et, par conséquent, le comportement mélangeant de la transition, c’est-à-dire à quel point la chaîne explore le support de f . Alors qu’explorer le support de f peut sembler proche d’une contrainte de stationnarité, nous insistons sur le fait que les deux problèmes doivent être traités séparément. Une chaîne de Markov ergodique qui démarre en un mode de f peut être correctement considérée comme étant dans son régime stationnaire, mais elle peut nécessiter encore beaucoup d’itérations pour atteindre les autres modes de cette distribution, à cause une nouvelle fois du problème de la “masse manquante". Ainsi l’ergodicité, comprise au sens de l’indépendance par rapport aux conditions initiales, ne doit pas être confondue avec l’ergodicité prise au sens d’approximation correcte de f par la distribution empirique. Des évaluations supplémentaires sont ainsi requises pour garantir que les diagnostics standard du Chapitre 4 sont toujours appropriés dans le cas markovien. Par exemple, l’utilisation tacite du Théorème de la Limite Centrale dans le chapitre 4 doit être nuancée par le fait que le théorème central limite n’est pas valide pour toutes les chaînes de Markov ergodiques (Meyn & Tweedie, 1993). Cette seconde perspective sur la convergence est donc celle qui est centrale pour l’évaluation et la comparaison des algorithmes MCMC.
8.2.3
Approcher les échantillons iid
Dans l’idéal, l’approximation de f fournie par les algorithmes MCMC devrait s’étendre à la génération (approchée) d’échantillons iid suivant f . La solution la plus concrète au problème d’indépendance est l’utilisation du sous-échantillonnage
Chapitre 8. Contrôle et adaptation des algorithmes MCMC
215
(ou échantillonnage par lots) pour réduire ou éliminer la corrélation entre les valeurs successives de la chaîne de Markov. Cette technique sous-échantillonne la chaîne (x(t) ) avec un pas (déterministe ou aléatoire) k, en considérant seulement les valeurs y (t) = x(kt) . Si la covariance covf (x(0) , x(t) ) décroît de manière monotone avec t, la justification du sous-échantillonnage est évidente. Cependant, vérifier la décroissance monotone de covf (x(0) , x(t) ) n’est pas toujours possible et, dans certains cadres, la covariance oscille avec t, ce qui complique le choix de k. Comme signalé dans le Chapitre 4, évaluer la convergence conduit presque inévitablement à un “gâchis” de simulations puisqu’il faut plus de temps pour diagnostiquer la convergence qu’il n’en faut pour converger. Le sous-échantillonnage illustre cette caractéristique générale puisqu’il perd en efficacité du point de vue de la seconde notion de convergence. Exercice 8.1 On suppose que Ef [h(X)] et Ef [h2 (X)] sont bien définis et que (x(t) ) est une chaîne de Markov de distribution stationnaire f . Nous comparons un estimateur qui utilise toute la chaîne de Markov (δ1 ) avec un estimateur qui sous-échantillonne (δk ) : δ1 =
Tk T 1 1 h(x(t) ) et δk = h(x(k ) ) . T k t=1 T =1
Montrer que la variance de δ1 vérifie var(δ1 ) ≤ var(δk ) pour tout k > 1.
Dans la suite du chapitre, nous évoquons les problèmes d’indépendance seulement dans les cas où ils influent sur les diagnostics présentés.
8.2.4
La librairie coda
Suivant les articles de Cowles & Carlin (1996) et Brooks & Roberts (1998), qui passaient en revue les principaux diagnostics de convergence, Plummer et al. (2006) ont écrit une librairie R appelée coda qui contient la plupart des outils que nous étudions dans ce chapitre. Bien que cette librairie coda ait été initialement prévue pour manipuler les sorties d’une exécution de BUGS (Lunn et al., 2000), elle peut aussi être utilisée directement pour gérer une sortie quelconque de vos propres programmes MCMC. Comme nous utiliserons quelques fonctions de coda dans les prochaines sections, nous présentons dès à présent les fonctionnalités élémentaires de cette librairie, en vous renvoyant à la dernière version du manuel de coda pour plus de détails. (Le manuel est disponible dans le même répertoire CRAN que la librairie.) La librairie coda est téléchargeable sur son répertoire CRAN et fonctionne sur toutes les plateformes. 1 Une fois la librairie installée sur votre machine, vous pouvez charger toutes les fonctions coda grâce à la commande library(coda). Les fonctions génériques de la librairie coda sont : 1. Comme la librairie est libre, elle fait partie des distributions principales de GNU/Linux telles que Ubuntu, Red Hat et Debian.
216
Méthodes de Monte-Carlo avec R
codamenu coda.options multimenu read.coda
lance une interface avec un menu vers les fonctions coda liste et modifie les options des fonctions coda fournit des options supplémentaires pour le tracé de graphes lit les données au format BUGS
Une famille de fonctions essentielles est appelée mcmc. Ces fonctions transforment une sortie MCMC constituée d’un vecteur ou d’une matrice en un objet MCMC qui peut être géré par coda, par exemple : > summary(mcmc(X)) (où X est une matrice (T, n) dont les n colonnes sont les sorties d’un algorithme MCMC pour chaque composante de l’objet simulé). Sa fonction dérivée mcmc.list est utile pour représenter des exécutions parallèles de la même chaîne contre des diagnostics de convergence spécifiques. Des graphes multidimensionnels particuliers sont également fournis par les fonctions levelplot, acfplot, qqmath, densityplot et xyplot. Certains des diagnostics contenus dans coda sont décrits et étudiés dans la suite du chapitre.
8.3 8.3.1
Contrôler la convergence vers la stationnarité Diagnostics graphiques
Une première approche empirique du contrôle de convergence consiste à représenter les sorties des chaînes simulées, composante par composante ainsi que conjointement, afin de détecter des comportements anormaux ou non stationnaires, avec le risque évident que la chaîne “bloquée” dans une région particulière de l’espace des paramètres, éloignée de la masse principale de la cible f , puisse présenter malgré tout un motif de stationnarité. Par exemple, coda fournit cette analyse rudimentaire via la commande plot, qui, quand on l’applique à un objet mcmc, produit à la fois un tracé de la chaîne au fil des itérations et une estimation non paramétrique de sa densité, paramètre par paramètre (au lieu d’un graphe standard). Exemple 8.1 (Modèle à effets aléatoires logit) Nous considérons à nouveau le modèle logit à effets aléatoires déjà traité dans l’Exemple 5.17 par une approche EM par Monte-Carlo. Si l’on opte pour un algorithme standard de Metropolis–Hastings à marche aléatoire, on simule à la fois les effets aléatoires ui (i = 1, . . . , n) et le coefficient logit β par des distributions normales centrées en les valeurs précédentes des paramètres. (Notez que les ui ’s sont indépendants sachant les paramètres β et σ.) Le paramètre d’échelle σ des effets aléatoires peut être simulé directement selon une distribution inverse gamma. Le programme est alors : > T=10^3 ; beta=mlan ; sigma=1 > u=rnorm(n)*sigma > samplu=matrix(u,nrow=n)
Chapitre 8. Contrôle et adaptation des algorithmes MCMC
217
> for (iter in 2:T){ + u=rnorm(n) + for (i in 1:n){ + mu=samplu[i,iter-1] + u[i]=sigma[iter-1]*rnorm(1)+mu + if (log(runif(1))>gu(u[i],i,beta[iter-1],sigma[iter-1]) + -gu(mu,i,beta[iter-1],sigma[iter-1])) + u[i]=mu} + samplu=cbind(samplu,u) + sigma=c(sigma,1/sqrt(2*rgamma(1,0.5*n)/sum(u^2))) + tau=sigma[iter-1]/sqrt(sum(as.vector(x^2)*pro(beta[iter-1],u))) + betaprop=beta[iter-1]+rnorm(1)*tau + if (log(runif(1))>likecomp(betaprop,sigma[iter],u) + -likecomp(beta[iter-1],sigma[iter],u)) + betaprop=beta[iter-1] + beta=c(beta,betaprop) + } en utilisant certaines fonctions déjà définies dans l’Exemple 5.17. Un appel à la fonction plot sur mcmc(cbind(beta,sigma)) produit alors les graphes suivants : Density of beta
0.0 0.5 1.0 1.5
−3.5 −3.0 −2.5
Trace of beta
0
200
400
600
800
−4.0
Iterations
−3.5
N = 1000
−2.5
Density of sigma
0.4
0.8
1.2
0.0 0.5 1.0 1.5 2.0
Trace of sigma
−3.0
Bandwidth = 0.05741
0
200
400
600
Iterations
800
0.2 N = 1000
0.6
1.0
1.4
Bandwidth = 0.04794
Fig. 8.1 – Sortie de la fonction plot.mcmc appliquée à un échantillon de 103 valeurs produites par un algorithme de Metropolis–Hastings à marche aléatoire, fondé sur un échantillon simulé selon le modèle logit à effets aléatoires de l’Exemple 5.17 avec n = 20, m = 30, β = −3, σ = 1 et les xij distribués uniformément sur {−1, 0, 1}
218
Méthodes de Monte-Carlo avec R
Il est clair en regardant les deux tracés (à gauche) que les deux composantes de la chaîne se déplacent très lentement dans la gamme des valeurs possibles. Comme on pouvait s’y attendre les deux composantes sont, en plus, profondément corrélées. Cet exemple est donc caractéristique d’un cas où plot est suffisant pour identifier des problèmes de convergence et indiquer qu’il faudrait plus de 103 itérations pour garantir une mélangeance satisfaisante. Un autre diagnostic graphique intuitif, approprié dans ce cadre ainsi que pour la convergence des moyennes empiriques, consiste à vérifier la stabilisation de la fonction de répartition empirique construite à partir des chaînes de Markov, en utilisant par exemple la fonction cumuplot de coda. La Figure 8.2 illustre l’utilisation de cette fonction pour l’échantillon MCMC de l’Exemple 8.1, avec un manque clair de stabilité incitant à augmenter le nombre de simulations (ou à changer de méthode !). Notez le creux brutal dans le quantile empirique à 2.5% pour la suite des β. Il pourrait correspondre soit à une découverte soudaine d’une autre région du support de f , soit à une excursion aberrante de la chaîne de Markov. Sachant que la suite des médianes ne varie presque plus à partir de cette itération, la seconde explication est la plus crédible.
sigma
β 0.4
−3.4
β
0.8
−2.8
beta
0 200
600 Iterations
1000
0 200
600
1000
Iterations
Fig. 8.2 – Sortie de la fonction cumuplot appliquée au même échantillon MCMC que dans la Figure 8.1. La ligne du bas correspond au quantile à 2.5%, la ligne centrale à la médiane et la ligne du haut au quantile à 97.5%. Les graphes produits par coda ne sont pas facilement personnalisables, comme le montre le piètre rendu de la Figure 8.2. C’est particulièrement vrai quand on contrôle plusieurs paramètres à la fois, comme illustré par plot(mcmc(t(samplu))) dans l’exemple plus haut. Notez qu’utiliser plot sur un objet mcmc.list (constitué de sorties mcmc de plusieurs chaînes lancées en parallèle) produit une comparaison des chaînes. Soyez également averti qu’utiliser cumuplot sur une longue chaîne MCMC, sans réduire la chaîne au préalable, peut être coûteux en temps, puisque
Chapitre 8. Contrôle et adaptation des algorithmes MCMC
219
les quantiles sont calculés sur la chaîne partielle pour chaque itération !
8.3.2
Tests non paramétriques de stationnarité
Si nous souhaitons plus de certitude sur la stationnarité de la chaîne de Markov (x(t) ) qu’une simple vérification graphique, nous devons vérifier, de manière statistique, que la distribution de la chaîne ne change pas au cours des itérations. Cela peut être fait en utilisant une seule ou plusieurs chaînes, le cadre étant évidemment plus simple avec plusieurs chaînes du fait de leur indépendance. Par exemple, des tests non paramétriques standard d’adéquation, comme les tests de Kolmogorov–Smirnov et de Cramer–von Mises, peuvent être appliqués à une réalisation unique de la chaîne (x(t) ) pour comparer les distributions des deux moitiés — ou d’autres sous-ensembles — de cet échantillon, (x(1) , . . . , x(T /2) ) et (x(T /2+1) , . . . , x(T ) ). Comme les tests non paramétriques sont calibrés en termes d’échantillons iid, on doit cependant les corriger pour prendre en compte la corrélation entre les x(t) . La solution, fondée sur les lots, est assez simple et est aussi utilisée pour reproduire l’indépendance, comme déjà mentionné dans la Section 8.2.3. La correction peut être faite en introduisant une taille de lot G et un sous-échantillonnage, conduisant à la construction de deux échantillons (quasiment) indépendants. (La sélection de G peut se faire au cours de l’algorithme, par exemple en déduisant G de l’autocorrélation de la chaîne via acf ou en attendant que le test de stationnarité soit (G) (2G) (G) (2G) accepté.) Les sous-échantillons correspondants (x1 , x1 , . . .) et (x2 , x2 , . . .) peuvent être manipulés par ks.test afin d’estimer si la statistique de Kolmogorov–Smirnov * * M M * * 1 * (gG) (gG) * K= sup * I(0,η) (x1 ) − I(0,η) (x2 )* (8.2) * M η * g=1
g=1
est suffisamment petite. Pour des chaînes multidimensionnelles, (8.2) peut être calculé soit sur une fonction d’intérêt soit sur chaque composante du vecteur x(t) . Outre la perspective statique de décider si oui ou non un nombre donné T d’itérations est assez grand, la statistique K peut être manipulée pour obtenir un critère d’arrêt, en calculant la p-value avec ks.test pour une suite de T jusqu’à ce qu’elle soit au-dessus d’un niveau donné. Un √ indicateur graphique peut également être utilisé, qui représente l’échantillon de M KT contre T afin de vérifier la stabilisation. Exemple 8.2 (Modèle hiérarchique de Poisson) Reprenant l’Exemple 7.12 des défaillances de pompes nucléaires, nous contrôlons la sous-chaîne (β (t) ) produite par l’algorithme. La Figure 8.3 (haut) donne la valeur des p-values de Kolmogorov–Smirnov produites par ks.test quand T augmente jusqu’à 103 . Il s’agit d’un graphe séquentiel puisque chaque point est fondé sur
220
Méthodes de Monte-Carlo avec R
1.0
●● ● ● ●●● ● ● ●●● ● ●● ● ● ●● ● ● ● ● ●●● ● ● ● ● ●● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ●● ●● ● ● ●● ● ● ● ● ● ● ●
● ● ●● ●
0.2
p−value
l’échantillon des β (t) produits jusqu’au temps T , qui est ensuite réduit en sélectionnant une taille G = 10 de lot, puis séparé en deux moitiés. Notez que l’échantillonneur de Gibbs est initialisé en l’EMV des λi . Puisque la Figure 8.3 (haut) montre une absence de motif et une dispersion correcte des p-values sur [0, 1], il n’y a pas d’indication d’un manque de stationnarité à déduire de ce graphe. En revanche, si nous comparons deux chaînes différentes avec le même outil, la Figure 8.3 (bas) indique un motif de temporalité plus long. En effet, alors que les p-values de Kolmogorov–Smirnov restent éloignées des valeurs faibles, le motif apparu dans cette comparaison signifie que, alors qu’autour des itérations 4000 et 6000, les deux échantillons présentent des fonctions de répartition empiriques très similaires, elles explorent différemment l’espace au cours des itérations postérieures. Par conséquent, 104 itérations ne sont pas suffisantes pour fournir une évaluation stable de la distribution stationnaire (pour au moins l’une des deux chaînes).
●
●●●
0
2000
4000
6000
8000
10000
1.0 0.2
p−value
Iterations ●●● ●●● ●●●● ●●● ● ●● ● ●●● ● ● ● ● ● ●● ●●●●● ● ● ●● ● ●● ●● ●●● ●●● ● ●●● ●● ●●● ●●● ● ●● ● ●●●●● ● ●● ●●●●●●●●●●● ●●●●●●●●●● ●●●●● ●● ●
0
2000
4000
6000
8000
10000
Iterations Fig. 8.3 – Graphe de 100 p-values de Kolmogorov–Smirnov résultant de 104 itérations de l’échantillonneur de Gibbs de l’Exemple 7.12 appliqué aux données des défaillances de pompes nucléaires. (haut) Chaque point correspond à un test de Kolmogorov–Smirnov appliqué aux deux moitiés d’un échantillon réduit de taille T ; (bas) même graphe pour deux chaînes parallèles réduites de taille T . Nous ne rentrerons pas ici dans le débat sur la validité statistique de la p-value, mais notons tout de même que, alors que sa définition la plus objective énonce qu’elle est uniformément distribuée sous l’hypothèse nulle, cette propriété est rarement satisfaite. De grands échantillons produits par l’échantillonneur de Gibbs présentent encore les motifs de la Figure 8.3 (bottom), même si les deux chaînes suivent clairement la même distribution et sont proches de l’indépendance pour M
Chapitre 8. Contrôle et adaptation des algorithmes MCMC
221
grand. Pour G extrêmement grand, les p-values finissent par être toujours proches de 1, ce qui, d’après Jeffreys (1939), signifie qu’il faudrait rejeter l’hypothèse nulle par manque d’uniformité ! Exercice 8.2 Reproduire la Figure 8.3 pour deux échantillons de Gibbs indépendants de taille 105 et évaluer l’impact de la taille G sur la forme de ces graphes. (Essayer G = 2, 5, 10, 100, 1000.)
Heidelberger & Welch (1983) utilisent comme alternative à Kolmogorov–Smirnov la statistique de Cramer–von Mises qui approche la distance L2 entre deux distributions, C = (F (x) − Fn (x))2 dF (x) , où F et Fn sont respectivement les fonctions de répartition de référence et empirique. Dans le cas de deux échantillons, (x(1g) )1≤g≤M et (x(2g) )1≤g≤M , la comparaison correspondante des fonctions de répartition empiriques est fondée sur une version normalisée de la variance des rangs. Le test est implémenté dans la première partie de la fonction heidel.diag de coda. (Malheureusement, cette fonction fournit deux tests à la fois.) Quand on l’utilise sur la sortie de l’Exemple 8.2 (avec 105 itérations), le résultat est : > heidel.diag(mcmc(beta)) Stationarity start p-value test iteration var1 passed 1 0.212 ce qui complète la vérification de stationnarité apportée par le test de Kolmogorov–Smirnov.
La Figure 8.3 apporte une illustration frappante du fait qu’une évaluation de stationnarité fondée sur une seule chaîne peut conduire à de mauvaises interprétations : dans les cas d’une forte attraction d’un mode local, la chaîne va probablement se comporter comme si elle était simulée selon la restriction de f au voisinage de ce mode et ainsi conduira à un diagnostic de convergence positif (c’est le problème de “vous n’avez vu que ce que vous avez parcouru", mentionné précédemment). Lancer plusieurs chaînes avec des valeurs initiales dispersées permet de se prémunir contre ce genre de mauvaises conclusions, même si cette précaution n’est pas toujours infaillible lorsque la dispersion n’est pas adéquate.
8.3.3
Analyse spectrale
Bien que nous ne puissions ni ne voulions rentrer dans des détails théoriques, il existe plusieurs moyens pratiques d’évaluation de convergence fondés sur l’analyse
222
Méthodes de Monte-Carlo avec R
spectrale (aussi connue sous le nom d’analyse de Fourier). Par exemple, Geweke (1992) utilise la densité spectrale de h(x(t) ), Sh (w) =
t=∞ 4 5 1 cov h(x(0) ), h(x(t) ) eιtw , 2π t=−∞
où ι représente la racine carrée (complexe) de 1 (c’est-à-dire, eιtw = cos(tw) + ι sin(tw)) pour retrouver la variance asymptotique de (8.1) avec γh2 = Sh2 (0). En estimant Sh par des méthodes non paramétriques appropriées, la fonction geweke.diag de coda construit ainsi l’équivalent d’un test de Student pour évaluer l’égalité des moyennes sur les premières et les dernières parties de la chaîne de Markov. Plus spécifiquement, Geweke (1992) prend les premières TA et les dernières TB observations d’une séquence de longueur T pour calculer δA =
TA 1 h(x(t) ), TA t=1
δB =
1 TB
T
h(x(t) ) ,
t=T −TB +1
2 2 et σB de Sh (0) fondées sur les deux sous-échantillons, reset les estimations σA pectivement. Le test statistique produit par geweke.diag est ensuite le Z-score asymptotiquement normal
√ T (δA − δB )
6
2 σ2 σA + B, τA τB
avec TA = τA T , TB = τB T , et τA + τB < 1. Par exemple, quand on prend (une nouvelle fois) la sortie de l’Exemple 8.2 (avec 105 itérations), la statistique de Geweke (1992) est > geweke.diag(mcmc(beta)) var1 0.2139 et elle est donc compatible avec la stationnarité. Dans l’éventualité où geweke.diag renvoie une valeur incompatible avec une distribution N (0, 1), geweke.plot peut être utilisé pour voir à quel point l’échantillon doit être réduit pour atteindre la stationnarité. La fonction geweke.diag peut parfois renvoyer un message d’erreur comme > geweke.diag(mcmc(xmc)) Error in data[1:nobs, , drop = FALSE] : incorrect number of dimensions
Chapitre 8. Contrôle et adaptation des algorithmes MCMC
223
sans plus d’explications. Il semble que la taille de l’échantillon soit en fait limitée à 105 − 1. Une autre approche utilisant également l’approximation spectrale de la variance asymptotique est expliquée dans Heidelberger & Welch (1983) et implémentée dans la seconde partie de heidel.diag, comme on peut le voir dans > heidel.diag(mcmc(sigma)) Halfwidth Mean Halfwidth test var1 passed 1.05 0.00793 puisque le test appelé halfwidth utilise la variance asymptotique estimée pour normaliser la différence entre des moyennes globale et partielle. Un test de stationnarité idéal utiliserait un estimateur de la “masse manquante", surface du support de f qui n’a pas encore été explorée par la chaîne MCMC. Malheureusement, cette estimation n’est que très rarement possible ! Ne serait-ce que parce que la constante de normalisation de la cible f n’est presque jamais connue dans les situations pratiques. Egalement parce que, si f˜ ∝ f , produire une estimation de f (x) dx en se fondant sur l’échantillon simulé selon f est une tâche beaucoup plus difficile qu’il n’y paraît et la vérification de la stabilisation de cette estimation rencontre la même difficulté que pour les autres estimations, toujours à cause du problème rencontré précédemment et résumé par “vous n’avez vu que ce que vous avez parcouru". Exercice 8.3 Montrer que si ϕ est une densité arbitraire ayant le même support de f , si (x(t) ) est une chaîne de Markov de distribution stationnaire f et si f (x) = C f˜(x), alors T 1 ϕ(x(t) ) f˜(x(t) ) T t=1
converge (en T ) vers 1/C. Discuter les contraintes à imposer sur ϕ pour garantir que cet estimateur ait une variance finie.
En guise de dernier avertissement quant à la valeur relative des évaluations de convergence, nous présentons ci-dessous un exemple où chaque indicateur est positif, mais où le mode principal de la cible n’est pas visité par la chaîne de Markov. Exemple 8.3 (Metropolis–Hastings à marche aléatoire sur un modèle AR(1)) Soit un modèle AR(1) xt+1 = xt + t (t ≥ 1), où t ∼ N (0, 1), observé à travers yt = x2t + ζt , où ζt ∼ N (0, τ 2 ). Si l’on s’intéresse à la distribution conditionnelle de xt sachant (xt−1 , yt , xt+1 ), π(xt |xt−1 , yt , xt+1 ), proportionnelle à exp − τ −2 (yt − x2t )2 + (xt − ρxt−1 )2 + (xt+1 − xt )2 /2,
224
Méthodes de Monte-Carlo avec R
cette densité n’est pas standard et, pour l’approcher, on peut lancer une chaîne √ de Metropolis–Hastings à marche aléatoire à partir de yt (en supposant yt > 0). Si l’échelle de la marche aléatoire est de 0.1, les critères de Geweke (1992) et de Heidelberger et Welch (1983) donnent une évaluation positive de l’échantillon MCMC xmc : > geweke.diag(mcmc(xmc)) Fraction in 1st window = 0.1 Fraction in 2nd window = 0.5 var1 -0.6162 > heidel.diag(mcmc(xmc)) Stationarity start p-value test iteration var1 passed 1 0.83 Halfwidth Mean Halfwidth test var1 passed 1.76 0.000697 De même, les tests graphiques indiquent tous une adéquation parfaite à la cible, comme le montre la partie supérieure de la Figure 8.4. Il s’agit d’un cas spécial où la superposition de la vraie cible et de l’histogramme est possible parce que la dimension est 1, π est connue à une constante de normalisation près et cette constante peut être approchée en fixant le maximum de π à l’aide d’une approximation par la fonction density, comme dans le code R suivant : > + + > +
ordin=apply(as.matrix(seq(min(xmc),max(xmc),le=200)),1, FUN=function(x){exp(-.5*((xm*rho-x)^2+(x*rho-xp)^2+ (yc-x^2)^2/tau^2))}) lines(seq(min(xmc),max(xmc),le=200), ordin*max(density(xmc)$y)/max(ordin))
Le graphe supérieur gauche montre ainsi une adéquation parfaite entre l’histogramme de xmc et la cible, alors que le test de Kolmogorov–Smirnov appliqué à xmc réduit par une taille G = 50 montre une tendance presque périodique mais pas de petites p-values. Si maintenant on augmente l’échelle de la marche aléatoire en 0.9, les deux diagnostics concluent à un manque de stationnarité et le test de Kolmogorov–Smirnov représenté en bas à droite de la Figure 8.4 donne un avertissement similaire. Cependant, quand on regarde la correspondance de l’histogramme et de la cible π, il est clair que la chaîne de Markov a réussi à échapper à l’attraction du mode local pour bouger vers le mode le plus important. Le manque de stationnarité indiqué par les diagnostics est dû aux valeurs initiales, mais il
Chapitre 8. Contrôle et adaptation des algorithmes MCMC
225
1.0
signale aussi que l’exploration adéquate des deux modes de la cible π nécessiterait beaucoup plus que 105 simulations.
●●● ● ● ● ● ●
●
0.8
6
●
●
●●
●
4
●
●
●
●
●
●
●
● ● ●
●
● ●
●
0.6
●
● ●●
●
● ●
● ●●
● ●
●
●
●
●
●
●
● ●
●
● ●
●
●
0.4
● ●
● ●● ●
● ●
●
●
●
2
●
0.2
● ●
●
●
●●
● ● ● ● ●
●
●● ● ● ● ● ● ● ●
● ● ● ● ●
●● ●
●
0
●●●●●
1.6
1.7
1.8
1.9
0e+00
4e+04
8e+04
0
1
2
3
4
5
0.0 0.2 0.4 0.6 0.8 1.0
Iterations
−2
−1
0
1
2
● ● ● ● ●
● ●
●
● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
0e+00
4e+04
8e+04
Iterations
Fig. 8.4 – Comparaison de deux échelles dans une évaluation par Metropolis– Hastings à marche aléatoire de la distribution a posteriori de xt dans le modèle AR bruité de l’Exemple 8.3 lorsque (xt−1 , yt , xt+1 , τ, ρ) = (−0.94, 3.17, −1.12, 0.2, 0.85) donné sur des chaînes de Markov de longueur T = 105 . (haut) Echelle égale à 0.1 avec histogramme et cible (gauche) et p-values de Kolmogorov–Smirnov (droite) ; (bas) mêmes graphes pour une échelle de 0.9.
8.4 8.4.1
Contrôler la convergence des moyennes Diagnostics graphiques
L’outil de diagnostic primaire le plus naturel consiste à tracer l’évolution de l’estimateur (8.1) lorsque T augmente. Si la courbe des moyennes cumulées n’est pas stabilisée après T itérations, la longueur de la chaîne de Markov doit être augmentée. Le principe peut également être appliqué à plusieurs chaînes et les fonctions cumsum, plot.mcmc(coda) et cumuplot(coda) peuvent être utilisées dans ce but. Exemple 8.4 (Suite de l’Exemple 8.3) √ √ Si on utilise plusieurs points de départ situés près de y t ou de − y t , avec une échelle de 0.5,
226
Méthodes de Monte-Carlo avec R
> plot(mcmc.list(mcmc(smpl[,1]),...,mcmc(smpl[,M])))
−4
0.0
0.1
−2
0.2
0.3
0
0.4
2
0.5
0.6
4
0.7
on obtient les résultats de la Figure 8.5, qui montrent clairement le problème de la convergence de l’algorithme de Metropolis–Hastings dans ce cas. (La matrice smpl est constituée de M exécutions parallèles de l’algorithme MCMC.) Notez qu’utiliser cumsum sur une unique chaîne initialisée près de −xt (et y restant) ne montre aucune défaillance parce que la chaîne reste stable dans le voisinage de ce mode local.
0
2000
6000 Iterations
10000
−4
−2
0
2
4
Bandwith 0.351
Fig. 8.5 – Evaluation de cinq exécutions parallèles de l’algorithme de Metropolis–Hastings pour l’Exemple 8.3 avec une échelle de 0.5 quand (xt−1 , xt , yt , xt+1 , τ, ρ) = (−3.13, −3.46, 12.02, −2.75, 0.2, 0.85) fondées sur des chaînes de Markov de longueur T = 104 . (gauche) Chaînes brutes et (droite) histogramme global. Notez l’inconvénient, quand on utilise mcmc.list, d’avoir à ajouter chaque simulation séparée par la commande mcmc(smpl[,i]). Définir smpl directement avec smpl=c(smpl,mcmc(xmc)) dans la boucle pour les chaînes parallèles ne fonctionne pas. De plus, l’estimation de la densité dans cumuplot est aussi fondée sur la fonction standard density et elle ne tient pas compte de la corrélation entre les observations, ce qui signifie que la densité estimée est typiquement plus piquée que la véritable densité. (La même remarque s’applique pour summary.mcmc.) La plupart des fonctions de coda étant écrites en R, il est possible de vérifier leur contenu et, sous réserve de maîtriser la programmation R, de les modifier pour corriger, par exemple, l’estimation de la densité. Ainsi, dans la plupart des cas, le tracé d’une seule chaîne brute (x(t) ) ou de la moyenne cumulée correspondante n’aide pas à détecter la stationnarité ou la convergence. Paradoxalement, c’est uniquement lorsque la chaîne a exploré différentes régions de l’espace d’état pendant le temps d’observation qu’un manque
Chapitre 8. Contrôle et adaptation des algorithmes MCMC
227
de stationnarité peut être détecté. (Comme dans d’autres cadres de test, il est toujours plus facile de rejeter l’hypothèse de stationnarité que de l’accepter.)
8.4.2
Variances intra et inter
Puisque plusieurs chaînes sont presque toujours nécessaires pour évaluer la convergence de la moyenne, nous considérons maintenant l’outil central de convergence de Gelman & Rubin (1992), implémenté en coda dans gelman.diag(coda) et (t) gelman.plot(coda). À partir de M chaînes parallèles {xm }t (1 ≤ m ≤ M, 1 ≤ (t) (t) t ≤ T ), éventuellement transformé en ξm = h(xm ), le critère d’arrêt de Gelman & Rubin (1992) est fondé sur la différence entre un estimateur pondéré de la variance et la variance des estimateurs issus de différentes chaînes. La variance inter-chaînes est définie comme la variance des moyennes BT =
M 1 (ξ − ξ)2 , M − 1 m=1 m
alors que la variance intra-chaîne est la moyenne des variances WT =
M M T 1 1 1 s2m = (ξ (t) − ξ m )2 M − 1 m=1 M − 1 m=1 T − 1 t=1 m
avec ξm =
T 1 (t) ξ , T t=1 m
ξ=
M 1 ξ . M m=1 m
Ces quantités sont constamment utilisées en analyse de la variance. Un premier estimateur de la variance a posteriori de ξ est σ ˆT2 =
T −1 WT + BT . T
Puisque σ ˆT2 et WT sont asymptotiquement équivalents, Gelman & Rubin (1992) construisent leur critère sur la comparaison entre ces deux quantités. Tant que les (t) différentes chaînes (ξm ) restent concentrées autour de leurs valeurs initiales (ou dans différentes parties de l’espace des paramètres), σ ˆT2 surestime la variance de (t) ξm à cause de la grande dispersion de la distribution initiale, alors que WT sousestime cette variance. Par exemple, en utilisant les mêmes cinq chaînes que dans la Figure 8.5, le graphe comparant les deux estimations, fourni par gelman.plot, est présenté dans la Figure 8.6. Le facteur de réduction (shrink factor) étant très éloigné de 1, on conclut, sans surprise, que les cinq chaînes n’ont pas encore exploré (ou pas encore convergé vers) la même région. Notez que le quantile du graphe est fondé sur une loi de Student, ce qui revient à supposer que la distribution cible est proche d’une loi normale. Si ce n’est clairement pas le cas, la chaîne devrait
228
Méthodes de Monte-Carlo avec R
400
d’abord être transformée (ou l’option transform=TRUE devrait être activée dans gelman.plot, modifiant la chaîne par une transformation logit).
300 250 150
200
shrink factor
350
median 97.5%
0
2000
4000
6000
8000
10000
last iteration in chain
Fig. 8.6 – Evaluation de la convergence par le critère de Gelman et Rubin (1992) pour le modèle AR bruité et pour les mêmes chaînes que dans la Figure 8.5. Le facteur de réduction de Gelman & Rubin (1992) est RT , avec
RT2
=
BT M νT + 1 , WT νT + 3
σ ˆT2 +
σT2 + BMT )2 /WT est le degré de liberté estimé. Alors que la distribuoù νT = 2(ˆ tion approchée de RT2 peut être retrouvée par une approximation par une loi de Fisher, T BT /WT ∼ F(M − 1, 2WT2 /T ) (voir Gelman & Rubin, 1992, pour plus de détails), avec ⎡ M 2 ⎤ M 1 ⎣ 4 1 sm − s2m ⎦ , T = 2 M M m=1 m=1 gelman.diag et gelman.plot n’indiquent que la valeur du facteur de réduction, accompagnée de la borne supérieure de confiance à 97.5%. Exemple 8.5 (Suite de l’Exemple 8.2) La Figure 8.7 décrit l’évolution du facteur de réduction à partir de dix chaînes parallèles (β (t) ). Elle montre une stabilisation claire autour de la valeur cible 1 à partir de seulement 5000 itérations. La conclusion est donc en accord avec geweke.diag et heidel.diag.
0.994 0.996 0.998 1.000 1.002 1.004 1.006
shrink factor
Chapitre 8. Contrôle et adaptation des algorithmes MCMC
229
median 97.5%
0
2000
4000
6000
8000
10000
last iteration in chain
Fig. 8.7 – Evaluation de Gelman & Rubin (1992) pour le modèle de défaillance de pompes et pour dix chaînes simulées comme dans l’Exemple 8.2. Cette méthode a été très rapidement adoptée par les utilisateurs, en particulier grâce à sa simplicité et à ses liens intuitifs avec les outils standard de la régression linéaire. Cependant, il s’agit de se prévenir contre l’excès de confiance qu’elle peut induire. Alors que l’indicateur RT converge bien vers 1 sous l’hypothèse de stationnarité, l’approximation de sa distribution est fondée sur des hypothèses de normalité, tandis que les algorithmes MCMC sont utilisés dans des contextes où ces hypothèses sont au mieux difficiles à satisfaire et au pire erronées. La borne supérieure tracée par gelman.plot n’est donc pas nécessairement une bande de confiance asymptotique à 0.975.
8.4.3
Taille effective d’échantillon
En rapport avec les Sections 4.4, 8.3.3 et 8.2.3, nous considérons maintenant l’utilisation de la taille effective d’échantillon (effective sample size) dans le cas spécifique des algorithmes MCMC, disponible dans la fonction coda effectiveSize, puisque même dans le régime stationnaire, il existe une différence entre le nombre d’itérations T et la taille de l’échantillon iid suivant f qui conduirait à la même variabilité. En effet, la moyenne empirique (8.1) ne peut pas être associée à l’estimateur standard de la variance 52 1 4 h(x(t) ) − ST T − 1 t=1 T
νˆT =
en raison des corrélations au sein des x(t) . Les solutions de Geweke (1992) et Heidelberger & Welch (1983) prennent toutes les deux en compte cette difficulté en estimant directement la densité spectrale
230
Méthodes de Monte-Carlo avec R
Sh en zéro, alors qu’une alternative rudimentaire consiste à se fonder sur un souséchantillonnage par lots, comme dans la Section 8.3.2, la taille G du lot étant éventuellement déterminée par la fonction d’autocorrélation autocorr. Par exemple, dans le cadre de l’Exemple 8.5, l’appel à la fonction autocorr.diag sur les dix chaînes parallèles renvoie Lag Lag Lag Lag Lag Lag
1 10 20 30 40 50
[,1] 0.90222644 0.34901530 0.11590444 0.04325814 0.02945172 0.02386088
ce qui signifie qu’au moins un point sur G = 30 devrait être considéré pour construire un échantillon pseudo-iid fondé sur cette sortie MCMC. Dans le contexte des séries temporelles (y compris des chaînes de Markov), la taille effective d’échantillon est directement définie comme le facteur de corrélation τT tel que νˆT /τT soit la variance de la moyenne empirique (8.1). Ce critère fournit évidemment une indication sur la perte d’efficacité due à l’utilisation d’une chaîne de Markov (au lieu d’un échantillon iid) et peut être calculé, comme dans Geweke (1992) et Heidelberger & Welch (1983), par τT = T /κ(h) , où κ(h) est le temps d’autocorrélation associé avec la suite h(x(t) ), κ(h) = 1 + 2
∞
4 5 corr h(x(0) ), h(x(t) ) ,
t=1
estimé par spectrum0 dans coda. L’utilisation de effectiveSize sur les dix chaînes parallèles traitées plus haut mène à une taille effective d’échantillon de 2645.168, c’est-à-dire une efficacité de 5%, ce qui est d’une certaine manière cohérent avec la taille G = 30 trouvée précédemment. Quand on l’applique à une unique suite de 103 valeurs (β (t) , σ (t) ) tirée de l’Exemple 8.1, la sortie est > effectiveSize(mcmc(cbind(beta,sigma))) beta sigma 55.3948 236.0124 ce qui est à nouveau en accord avec le message heuristique de la Figure 8.1. Si vous explorez coda plus en détails, vous remarquerez que la librairie contient une autre fonction de diagnostic appelée raftery.diag. Même si cette fonction produit des évaluations très explicites du nombre de simulations à utiliser pour estimer un quantile donné de la distribution cible avec une certaine précision, les
Chapitre 8. Contrôle et adaptation des algorithmes MCMC
231
fondements théoriques de cette méthode, due à Raftery & Lewis (1992), ne sont pas solides : la structude sous-jacente n’est pas une chaîne de Markov (voir Robert & Casella, 2004, Section 12.4.1). Exercice 8.4 (t) Produire plusieurs chaînes MCMC parallèles {βm }t,m pour le modèle de pompes de l’Exemple 8.2. Etudier la variabilité du nombre de simulations N proposé par raftery.diag. Comparer avec les autres critères d’arrêt contenus dans coda.
8.4.4
Moyennes par lots de taille fixée
La section précédente suggère une manière assez rudimentaire d’implanter la condition nécessaire de la Section 8.2.3, à savoir de remplacer la chaîne de Markov originale produite par l’algorithme MCMC par une suite pseudo-iid, en utilisant un sous-échantillonnage selon un taux défini par la taille effective d’échantillon. Il est cependant possible d’étudier la convergence d’une suite MCMC en étudiant l’erreur d’approximation de la moyenne MCMC δT =
T 1 h(x(t) ) . T t=1
La Section 8.3.3 a présenté un estimateur de la variance asymptotique de δT fondé sur l’analyse spectrale, mais il existe des alternatives fondées sur l’échantillonnage par lots et sur le Théorème de la Limite Centrale, comme celle introduite par Jones et al. (2006), qui est comparable avec gelman.diag (Flegal et al., 2008). L’échantillonnage par lots a été utilisé dans la Section 8.3.2 pour décider de la stationnarité de la suite MCMC, mais il est aussi possible d’utiliser cette technique pour évaluer la convergence. Si les moyennes par lots sont définies par ¯j = 1 h aT
j+a T −1
h(x(t) ) ,
t=j
et si la suite aT croît assez lentement vers l’infini, par exemple aT = T ν avec 1/2 ≤ ν ≤ 3/4, alors l’approximation de la variance asymptotique de δT , σ ˆh2 =
T aT (T − aT )(T − aT − 1)
T −a T +1
¯ t − δT )2 , (h
t=1
converge vers la variance asymptotique avec T (sous des conditions supplémentaires de régularité sur la chaîne (x(t) )). Bien que validé uniquement par un argument asymptotique (c’est-à-dire quand T tend vers l’infini) et donc ouvert aux mauvais comportements 2 à T fixé, ce résultat de Jones et al. (2006) permet une 2 n’est pas un estimateur convergent de la variance asymptotique σ 2 , 2. Quand aT est fixé, σ ˆh h comme l’ont démontré Glynn & Whitt (1992).
232
Méthodes de Monte-Carlo avec R
évaluation rapide de la variance de δT et même un critère d’arrêt fondé sur le fait √ ˆh / T soit plus petite qu’une précision fixée pour une bande que la largeur t1−α/2 σ de confiance au niveau (1 − α). Jones et al. (2006) mentionnent aussi la possibilité ¯ j pour construire un intervalle de confiance sur Ef [H]. de bootstrapper les h Exemple 8.6 (Suite de l’Exemple 8.5) Si l’on applique cette méthode à la chaîne (β (t) ) produite pour les données de défaillance de pompes et si l’on calcule les moyennes par lots avec une taille donnée en utilisant la suite at = T 5/8 , on obtient le diagnostic de convergence illustré par la Figure 8.8. Le calcul de la bande de confiance à 25%, sur lequel cette figure est fondée, est le résultat du code R suivant > > + + + + + + +
Ts=seq(100,T,le=25);ranj=matrix(0,ncol=2,nrow=25) for (j in 1:25){ aT=trunc(Ts[j]^(5/8)) batch=rep(mean(beta),le=Ts[j]-aT) for (t in (aT+1):Ts[j]) batch[t-aT]=mean(beta[(t-aT):t]) sigma=2*sqrt(sum((batch-mean(beta[1:Ts[j]]))^2)*aT/ ((Ts[j]-aT)*(Ts[j]-aT-1))) ranj[j,]=mean(beta[1:Ts[j]])+c(-sigma,+sigma) }
Notez que la bande de confiance décroît beaucoup plus vite qu’une bande de confiance standard sur un échantillon iid.
Fig. 8.8 – Evolution d’une moyenne MCMC cumulée pour le modèle de défaillance de pompes de l’Exemple 8.2. Le fond gris correspond à une bande de confiance à 95% estimée par l’échantillonnage par lots à taille fixée de Jones et al. (2006). Exercice 8.1 Construire une autre bande de confiance fondée sur la sortie MCMC de l’Exemple 8.6 en obtenant les estimations de variance par une évaluation bootstrap sur les moyennes par lots et la comparer avec la bande de la Figure 8.8.
Chapitre 8. Contrôle et adaptation des algorithmes MCMC
8.5 8.5.1
233
MCMC adaptatif Précautions d’emploi
Une fois les diagnostics de convergence présentés, nous pouvons étudier l’étape suivante dans la construction d’algorithmes MCMC, qui consiste à calibrer ces algorithmes (et ainsi à les trier) selon leurs performances en fonction de ces diagnostics. Nous entrons de ce fait dans le domaine des algorithmes adaptatifs, une extension des algorithmes MCMC développée récemment dans laquelle les noyaux de transition sont calibrés dynamiquement en fonction des performances observées jusqu’à l’itération courante. L’objectif d’utiliser le “meilleur" noyau au sein d’un ensemble de propositions ou les “meilleurs" paramètres au sein d’une famille de noyaux paramétrés — comme des marches aléatoires à échelles uni- ou multidimensionnelles — est, cependant, difficile à atteindre en pratique, ne serait-ce que du fait de l’impact potentiellement fatal de l’adaptation sur les propriétés de convergence de l’algorithme correspondant ! En effet, si l’on calibre l’algorithme en fonction de sa sortie jusqu’à l’itération présente, cela signifie que l’algorithme n’est plus markovien puisqu’il dépend de tout le passé de la simulation. De sévères contraintes s’imposent donc au processus d’adaptation pour préserver la garantie (théorique) que l’algorithme converge. Même si la théorie probabiliste associée aux algorithmes MCMC adaptatifs se situe au-delà du cadre de notre livre, nous souhaitons cependant souligner les dangers du MCMC adaptatif naïf avant d’examiner la librairie amcmc développée par Rosenthal (2007). Exemple 8.7 (Une autre approche de l’Exemple 8.2) Pour le modèle de défaillance de pompes de l’Exemple 8.2, au lieu d’utiliser les étapes de Gibbs, nous pourrions essayer de construire une proposition indépendante log-normale de paramètre (μ, Σ) fondée sur les moments empiriques de la chaîne de Markov. L’intuition derrière cette construction serait d’approcher la vraie cible par une distribution (log-) normale avec les mêmes moments que la distribution cible, en supposant que les moments empiriques construits au temps t fournissent des approximations convergentes des vrais moments. Malheureusement, même si l’on accepte la valeur proposée (β , λ ) avec le ratio de Metropolis– Hastings standard f (β , λ ) ϕ(β (t) , λ(t) |μ, Σ) ∧ 1, f (β (t) , λ(t) ) ϕ(β , λ |μ, Σ) où ϕ désigne la densité log-normale, le fait que (μ, Σ) dépende des itérations passées met en danger les propriétés de stationnarité de la chaîne. Par exemple, si t 1 (m) (m) (β , λ ) μ= t m=1
and
Σ = 0.2 var
est mis à jour toutes les 100 itérations, comme dans
β
(m)
,λ
(m)
1≤m≤t
234 > > > > + + + + + + + + + + + + +
Méthodes de Monte-Carlo avec R MM=T=10^2 cbeta=beta[length(beta)] clambda=lambda[length(beta),] for (m in 1:MM){ mu=c(apply(log(lambda),2,mean),mean(log(beta))) Sigma=.2*var(log(cbind(lambda,beta))) for (t in 1:T){ prop=exp(rmnorm(1,mu,Sigma)) if (log(runif(1))>post(prop[1:10],prop[11])post(clambda,cbeta)+ dmvnorm(log(c(clambda,cbeta)),mu,Sigma,log=T)dmvnorm(log(prop),mu,Sigma,log=T)sum(log(c(clambda,cbeta)))+sum(log(prop))) #jacobian prop=c(clambda,cbeta) clambda=prop[1:10]; cbeta=prop[11] lambda=rbind(lambda,clambda);beta=c(beta,cbeta) }}
5
10
15
20
β
25
30
35
40
(T = 102 itérations initiales standard de l’échantillonneur de Gibbs pour produire beta, lambda et donc les premières estimations μ et Σ), alors la chaîne (β (t) , λ(t) ) s’effondre, comme démontré par la Figure 8.9 pour la chaîne β (t) .
0
2000
4000
6000
8000
10000
Iterations
Fig. 8.9 – Un algorithme MCMC adaptatif dégénéré, fondé sur une proposition indépendante et les moments courants de la chaîne, pour le modèle de défaillance de pompes de l’Exemple 8.2. Le fond gris correspond à l’étendue normale permise par l’adaptation, la courbe brute est une réalisation du MCMC adaptatif et la courbe en grisé plus clair au-dessus est la suite des moyennes des propositions normales.
Chapitre 8. Contrôle et adaptation des algorithmes MCMC
235
Evidemment, il n’y a pas de raison particulière de choisir le facteur de réduction sur Σ de cette manière, mais cet exemple montre qu’utiliser une étape parfaitement valide de Metropolis–Hastings ne garantit pas toujours la convergence lorsque les paramètres de la proposition sont constamment mis à jour. Exercice 8.2 Répéter l’expérience de l’Exemple 8.7 quand Σ est mis à jour par > Sigma=var(log(cbind(lambda,beta))) et mettre en lumière la différence entre (a) l’estimation de la densité a posteriori sur β ainsi obtenue et (b) une estimation résultant d’un échantillon de Gibbs traditionnel, comme dans l’Exemple 8.2 et la Figure 5.17.
Même des scénarios d’apprentissage plus élaborés peuvent empêcher la convergence, comme illustré par l’exemple suivant. Exemple 8.8 (Suite de l’Exemple 8.4) Si nous utilisons un échantillon MCMC brut pour construire une estimation non paramétrique d’une densité cible sous la forme d’un mélange normal centré en chaque point de l’échantillon, avec un écart type commun fourni par bw.nrd(xmc), on peut mettre à jour l’estimation non paramétrique à chaque nouvelle valeur de la chaîne de Markov correspondante. Le code R ressemble alors à > for (t in (T+1):TT){ + bw=bw.nrd0(xmc) + prop=rnorm(1,mean=sample(xmc,1),sd=bw) + prodens=log(density(xmc,from=prop,to=prop,n=1,bw=bw)$y) + if ((is.na(prop))||(log(runif(1))>ef(prop)-ef(xmc[t-1])+ + curdens-prodens)) { + prop=xmc[t-1] + prodens=curdens } + xmc=c(xmc,prop) + curdens=prodens + } où les T = 102 premières itérations sont fondées sur une proposition à marche aléatoire standard pour construire xmc. L’estimation non paramétrique par density appliquée à xmc est alors très dépendante des valeurs de départ et, dans un cas bimodal, si l’on initialise la chaîne de Markov au mode le plus bas, l’estimation va au mieux reproduire correctement ce mode, comme montré dans la Figure 8.10 et au pire se concentrer sur une région encore plus petite.
Méthodes de Monte-Carlo avec R
0
2
4
6
8
10
12
14
236
3.20
3.25
3.30
3.35
3.40
3.45
xt
Fig. 8.10 – Sortie d’une adaptation MCMC non paramétrique fondée sur un estimateur à noyau de la densité cible et 104 itérations pour le modèle AR bruité autour du second mode de la densité cible. Si nous modifions à présent l’estimation à noyau en utilisant une échelle extrêmement élargie, > bw=500*bw.nrd0(xmc)
0
−3
5
−1
10
15
1 2 3
20
la chaîne de Markov parvient à atteindre le mode principal, comme montré dans la Figure 8.11, mais l’approximation de la distribution cible n’est pas encore satisfaisante après 105 itérations.
0
1000
3000
Iterations x 20
5000
−3.45
−3.35
−3.25
xt
Fig. 8.11 – Exploration du mode principal de la densité cible pour le modèle AR bruité en utilisant une adaptation MCMC non paramétrique fondée sur une estimation à noyau avec une grande bande d’estimation. (gauche) Tracé de la chaîne brute ; (droite) adéquation de l’histogramme à la cible.
Chapitre 8. Contrôle et adaptation des algorithmes MCMC
237
Le défaut usuel des méthodes adaptatives est qu’elles se reposent trop sur les échantillons passés et mettent ainsi en lumière les parties de l’espace non visitées par ces échantillons, comme l’Exemple 8.7 l’illustre clairement. Alors qu’un algorithme de Metropolis–Hastings standard peut trouver assez d’énergie pour surpasser l’attraction aux modes locaux, une version adaptive se retrouvera bloquée plus souvent dans cette situation. La solution trouvée dans la littérature pour résoudre cette difficulté est de diminuer progressivement le caractère adaptatif de l’algorithme. Plus précisément, Roberts & Rosenthal (2009) proposent une condition d’adaptation décroissante qui énonce que la distance en variation totale entre deux noyaux consécutifs doit décroître uniformément vers zéro (ce qui ne signifie pas que le noyau doit converger !). Par exemple, une proposition à marche aléatoire qui se fonde sur la variance empirique de l’échantillon (modulo un facteur stabilisant de type ridge) comme dans Haario et al. (1999) satisfait cette condition. Une autre possibilité trouvée dans Roberts & Rosenthal (2009) est de régler l’échelle dans chaque direction pour obtenir un taux d’acceptation optimal de 0.44, ce qui est la solution implémentée dans la librairie amcmc, décrite ci-dessous. Plus précisément, pour chaque composante du paramètre simulé, un facteur δi correspondant au logarithme de la déviation de la marche aléatoire est mis à jour toutes les 50 itérations en ajoutant ou soustrayant un facteur t , selon que le taux d’acceptation moyen sur ce lot de 50 itérations et sur cette composante √ est ou non au-dessus de 0.44. Si t décroît vers zéro à la vitesse de min(.01, 1/ t), les conditions de convergence sont satisfaites. (Il s’agit exactement du critère suivi par amcmc.)
Soulignons que nous ne passons en revue que les conditions requises pour qu’un algorithme MCMC adaptatif converge, principalement pour introduire la librairie suivante qui contient des algorithmes valides (c’est-à-dire convergents). Nous renvoyons les lecteurs à la littérature appropriée (mais difficile) pour qu’ils valident leurs propres algorithmes adaptatifs !
8.5.2
La librairie amcmc
Commençons avec quelques mots d’avertissement sur les aspects inhabituels de cette librairie, développée par Jeff Rosenthal de l’Université de Toronto. Premièrement, la librairie ne provient pas du répertoire usuel CRAN et doit être téléchargée depuis la page de l’auteur (au moins à l’heure où ce livre a été écrit). Deuxièmement, le programme doit commencer par appeler source("amcmc") si le fichier correspondant amcmc est disponible dans le répertoire local. Troisièmement, il nécessite que le compilateur C appelé gcc soit installé, puisque amcmc exécute certaines parties (ou l’ensemble) du calcul en utilisant un code C compilé par gcc. Quand la distribution cible f et éventuellement la fonctionnelle cible h peuvent être directement programmées en C, Rosenthal (2007) rapporte que le temps d’exécution peut être amélioré d’un facteur cent, comparé à l’implémentation R.
238
Méthodes de Monte-Carlo avec R
À cause de la nécessité d’installer le compilateur C pour utiliser la librairie amcmc, le code R correspondant aux exemples suivants n’a pas été inclu dans notre programme demo(Chapter.8) Notez cependant que l’Exemple 8.9 est déjà fourni dans la librairie amcmc, mais les deux exemples suivants doivent être reprogrammés. Ces avertissements préliminaires étant faits, le programme peut être testé sur n’importe quel exemple, même s’il peut mettre un certain temps à s’exécuter. Exemple 8.9 (MCMC adaptatif pour l’ANOVA) L’exemple principal fourni par amcmc est le célèbre jeu de données “baseball" utilisé dans la littérature sur les estimateurs de James–Stein (Efron & Morris, 1975). Il s’agit d’un modèle d’analyse de la variance où les observations Yi (1 ≤ i ≤ 18) sont distribuées suivant une loi normale, Yk ∼ N (θi , σ 2 ), les μi étant aussi iid normaux, θi ∼ N (μ, α), avec la moyenne commune distribuée suivant μ ∼ N (0, 1) et l’échelle suivant α ∼ IG(2, 2). Dans cet exemple, σ 2 est remplacé par son estimateur bayésien empirique, égal à 0.00434. Appeler > amcmc("baseballlogdens","baseballfirstfunct",logflag=TRUE) [1] 0.3931286 renvoie donc 0.393 comme estimateur de Bayes de θ1 en environ une minute. En utilisant plutôt la version C > cfns("baseball") gcc-4.2 -std=gnu99 -I/usr/share/R/include -I/usr/share/R/ include -fpic -g -O2 -c baseball.c -o baseball.o gcc-4.2 -std=gnu99 -shared -o amcmc.so amcmc.o baseball.o -L/usr/lib/R/lib -lR > amcmc("baseballlogdens","baseballfirstfunct",log=T,cfn=T) [1] 0.3917384 on obtient la même valeur en environ une seconde ! Exercice 8.3 Montrer que la distribution a posteriori de μ dans l’Exemple 8.9 peut être obtenue explicitement. Utiliser cette forme explicite pour vérifier les performances de l’échantillonneur de Gibbs standard en utilisant geweke, heidel et l’évaluation de Kolmogorov–Smirnov de la Section 8.3.2.
La librairie amcmc peut être utilisée conjointement avec les outils d’évaluation de convergence de la librairie coda en ajoutant l’option write=T, qui sauvegarde la sortie dans le fichier amcmcvals et les logarithmes des variances des propositions après chaque lot de simulations dans le fichier amcmcsigmas. Les deux fichiers sont stockés sous forme de listes R, avec des composantes values, une matrice dont les lignes correspondent aux composantes du vecteur à simuler et dont les colonnes correspondent aux itérations MCMC. Cela signifie qu’ils peuvent être chargés avec source("amcmcvals") et ensuite vérifiés à l’aide de coda, par exemple via la commande summary(mcmc(t(amcmcvals))).
Chapitre 8. Contrôle et adaptation des algorithmes MCMC
239
Exemple 8.10 (Suite de l’Exemple 8.7) Pour le modèle de défaillance de pompes nucléaires, la seule modification requise dans la définition de la distribution a posteriori est un changement de paramétrisation. En effet, β et les λi étant tous des paramètres positifs, la proposition à marche aléatoire utilisée par amcmc nécessite une log-paramétrisation du modèle, ce qui revient à définir apost=function(lambdabeta){ lambda=lambdabeta[1:10] beta=lambdabeta[11] return((-exp(beta)*delta)+(((10*alpha)+gamma)*beta)+ sum((-(time+exp(beta))*exp(lambda))+((data+alpha)*lambda))) } comme densité de substitution (notez le terme de jacobien log(lambda)+beta dans cette fonction). Quand on appelle > amcmc(dens=apost,func=mytarg,logfl=TRUE,num=10^4,vec=11) [1] 2.491654 (où vec est l’abréviation de vectorlength, ce qui fournit le nombre de composantes de density), on obtient un résultat comparable à l’espérance obtenue par une exécution de Gibbs standard, > mean(beta) [1] 2.487719 où beta est le résultat de T = 5 × 104 itérations de Gibbs. Comme noté plus haut, la sortie de la simulation peut être vérifiée par coda, comme par exemple dans > source("amcmcvals") > effectiveSize(mcmc(t(amcmcvals))) var1 var2 var3 var4 var5 var6 9411.0 9308.9 10001.0 10001.0 9357.6 10102.4 var8 var9 var10 var11 9253.3 9174.5 9495.4 8106.1
var7 8867.6
(mais soyez conscients que la validation théorique de ces diagnostics est nécessairement limitée par la nature adaptative de la chaîne de Markov sous-jacente).
Un inconvénient d’utiliser amcmc, vis-à-vis des librairies standard de R, est la nécessité d’installer le compilateur C gcc. Par conséquent, la librairie ne fonctionne pas sous Windows (ce qui, évidemment, n’est un inconvénient que si vous utilisez Windows !). L’aspect positif et la raison pour laquelle nous incluons amcmc dans ce livre est qu’il fournit un algorithme MCMC adaptatif correct qui s’applique à n’importe quelle cible π et qui, de plus, donne un aperçu des possibilités sous-exploitées d’interface entre R et C et offre ainsi un gain de plusieurs ordres de magnitude en temps de calcul.
240
Méthodes de Monte-Carlo avec R
Evidemment, l’adaptation implantée dans amcmc ne résout pas tous les problèmes de convergence des algorithmes MCMC, comme le montre ci-dessous le cas du modèle AR bruité de l’Exemple 8.3. Exemple 8.11 (Suite de l’Exemple 8.8) Quand on utilise amcmc sur la distribution a posteriori ef > ef=function(x){ + -.5*((xm*rho-x)^2+(x*rho-xp)^2+(yc-x^2)^2/tau^2 + } > amcmc(dens="eef",function="firstcoord",init=sqrt(yc),log=T) [1] 2.900830 l’estimation finale de xt est 2.9, située dans le mode secondaire de l’a posteriori, alors que la valeur simulée est xt = −2.896 (avec yt = 8.49, xt−1 = −3.795, xt+1 = −2.603).
8.6
Exercices supplémentaires
Exercice 8.5 La distribution en “chapeau de sorcière" " # 2 2 π(θ|y) ∝ (1 − δ) σ −d e− y−θ /(2σ ) + δ IC (θ),
y ∈ Rd ,
où θ est restreint à l’hypercube C = [0, 1]d , a été proposée par Matthews (1993) comme test de calibration des algorithmes MCMC. a. Construire un algorithme qui simule correctement selon la distribution en chapeau de sorcière. (Suggestion : montrer qu’une simulation directe est possible.) b. Le choix de δ, σ et d peut induire des probabilités arbitrairement petites soit d’échapper à l’attraction du mode soit de l’atteindre. Trouver des ensembles de paramètres (δ, σ, y) pour lesquels ces deux phénomènes se produisent. c. Dans chaque cas, tester les différents outils de convergence proposés par coda pour vérifier s’ils parviennent à identifier cette difficulté. Exercice 8.6 Soit un générateur associé à la chaîne de Markov (X (t) ) tel que X
(t+1)
=
Y ∼ Be(α + 1, 1) x(t)
avec probabilité x(t) sinon
a. Montrer que la chaîne de Markov est associée à la distribution stationnaire f (x) ∝ xα+1−1 /{1 − (1 − x)} I(0,1) (x) = xα−1 I(0,1) (x) , c’est-à-dire à une distribution bêta Be(α, 1).
(8.3)
Chapitre 8. Contrôle et adaptation des algorithmes MCMC
241
b. Appliquer l’ensemble des diagnostics de convergence proposés dans ce chapitre aux 104 premières valeurs de la chaîne de Markov pour α = .2. Comparer avec le résultat fondé sur les 106 premières valeurs. c. Recommencer l’analyse en considérant un algorithme de Metropolis–Hastings fondé sur la même proposition bêta Be(α + 1, 1). (Suggestion : montrer que y est alors accepté avec la probabilité x(t) /y.) Exercice 8.7 Reproduire l’analyse de convergence de l’Exemple 8.1 en remplaçant la structure de dépendance logit par une dépendance probit dans un modèle linéaire généralisé. Utiliser les variables latentes normales inhérentes au modèle probit pour comparer les propriétés de convergence de l’algorithme inspiré par l’Exemple 8.1 à celles d’un échantillonneur de Gibbs fondé sur les variables latentes normales. Exercice 8.8 Considérer la distribution a posteriori associée au modèle probit standard n
Φ(ri β/σ)di Φ(−ri β/σ)1−di × π(β, σ 2 ) ,
i=1
où π(β, σ 2 ) = σ −4 exp{−1/σ 2 } exp{−β 2 /50) , et les paires (ri , di ) sont les observations, tirées de Pima.tr via Pima.tr$ped pour ri et Pima.tr$type pour di . a. Ecrire un programme R qui simule suivant cette distribution a posteriori grâce à un simple échantillonneur de Gibbs où β et σ 2 sont alternativement simulés par des propositions à marche aléatoire respectivement normale et log-normale et acceptés par une étape de Metropolis–Hastings unidimensionnelle. b. Evaluer la convergence de cet algorithme en utilisant plusieurs chaînes et gelman.diag. c. Comparer la convergence de cet algorithme à celle d’un échantillonneur de Gibbs traditionnel fondé sur la complétion du modèle par les variables latentes normales associées à la fonction de répartition normale. Exercice 8.9 Soit la densité cible f (x) =
exp −x2 /2 4(x − .3)2 + .01 √ . 4(1 + (.3)2 ) + .01 2π
a. Montrer (analytiquement ou numériquement) que l’intégrale de f vaut bien 1 et que c’est une densité bimodale. b. Implanter pour cette cible un algorithme de Metropolis–Hastings à marche aléatoire normale avec une variance petite comme 0.04 et utiliser plot.mcmc, cumuplot et heidel.diag pour évaluer la convergence en prenant pour valeurs initiales x = −2 et x = 2. c. Comparer ces évaluations avec une évaluation en ligne de l’intégrale f (x) dx fondée sur l’échantillon MCMC ainsi produit.
242
Méthodes de Monte-Carlo avec R
Exercice 8.10 Dans le cadre de l’Exemple 8.2, trouver une taille G assez grande pour que la distribution des p-values de Kolmogorov–Smirnov ne présente pas de motifs visibles. Exercice 8.11 Evaluer l’impact de la paramétrisation sur gelman.diag pour le modèle de l’Exemple 8.2 en utilisant le même échantillon MCMC dans chaque cas. Exercice 8.12 (Tanner 1996) Montrer que si θ(t) ∼ πt et si la distribution stationnaire est la densité a posteriori associée à f (x|θ) et π(θ), le poids f (x|θ(t) )π(θ (t) ) ωt = π t (θ (t) ) converge vers la marginale m(x). Exercice 8.13 Comme exercice de synthèse : a. Construire une fonction R qui prend en entrée une matrice (T, p) représentant la sortie d’une exécution MCMC avec T itérations et p composantes, et qui produit en sortie p fichiers (un pour chaque composante) présentant des tracés bruts, des estimations de densité, des fonctions d’autocorrélation, des tests de Kolmogorov–Smirnov, des graphes de Geweke et des sorties de la fonction cumuplot, sur une seule page par fichier. b. Paramétriser la fonction pour que ces fichiers soient automatiquement sauvegardés dans un format ouvert (pdf, eps etc.). Exercice 8.14 En réutilisant les exemples de ce chapitre, étudier si la représentation graphique de l’évolution de la taille effective d’échantillon au cours des itérations est un outil fiable d’évaluation de convergence. Exercice 8.15 Puisque la cible dans l’exercice 8.6 est connue, étudier le comportement de convergence d’un algorithme de Metropolis–Hastings adaptatif ayant pour proposition une distribution bêta Be(αt + 1, 1) dont le paramètre αt est mis à jour en prenant à chaque étape la moyenne des itérations précédentes.
Bibliographie Albert J. (2009). Bayesian Computation with R, second edition. Springer–Verlag, New York. Beaumont M., Zhang W. & Balding D. (2002). Approximate Bayesian computation in population genetics. Genetics, 162, 2025–2035. Berger J., Philippe A. & Robert C. (1998). Estimation of quadratic functions : reference priors for non-centrality parameters. Statist. Sinica, 8. Besag J. & Clifford P. (1989). Generalized Monte Carlo significance tests. Biometrika, 76, 633–642. Booth J. & Hobert J. (1999). Maximizing generalized linear mixed model likelihoods with an automated Monte Carlo EM algorithm. J. R. Stat. Soc. Ser. B, 61, 265–285. Boyles R. (1983). On the convergence of the EM algorithm. J. R. Stat. Soc. Ser. B, 45, 47–50. Brooks S. & Roberts G. (1998). Assessing convergence of Markov chain Monte Carlo algorithms. Statistics and Computing, 8, 319–335. Cappé O., Douc R., Guillin A., Marin J.M. & Robert C. (2008). Adaptive importance sampling in general mixture classes. Statist. Comput., 18, 447–459. Casella G. (1996). Statistical theory and Monte Carlo algorithms (with discussion). TEST, 5, 249–344. Casella G. & George E. (1992). An introduction to Gibbs sampling. The American Statistician, 46, 167–174. Casella G. & Robert C. (1996). Rao-Blackwellisation of sampling schemes. Biometrika, 83. Casella G. & Robert C. (1998). Post-processing accept–reject samples : recycling and rescaling. J. Comput. Graph. Statist., 7.
244
Méthodes de Monte-Carlo avec R
Chen M., Shao Q. & Ibrahim J. (2000). Monte Carlo Methods in Bayesian Computation. Springer–Verlag, New York. Chib S. (1995). Marginal likelihood from the Gibbs output. J. Amer. Statist. Assoc., 90, 1313–1321. Cowles M. & Carlin B. (1996). Markov chain Monte Carlo convergence diagnostics : a comparative study. J. Amer. Statist. Assoc., 91, 883–904. Crawley M. (2007). The R Book. Wiley, New York. Dalgaard P. (2002). Introductory Statistics with R. Springer–Verlag, New York. Del Moral P. & Miclo L. ( ? ? ? ?). On the convergence and applications of generalized simulated annealing. SIAM Journal on Control and Optimization, 37. Dempster A., Laird N. & Rubin D. (1977). Maximum likelihood from incomplete data via the EM algorithm (with discussion). J. R. Stat. Soc. Ser. B, 39, 1–38. Dickey J. (1968). Three multidimensional integral identities with Bayesian applications. Ann. Math. Statist., 39, 1615–1627. Doucet A., Godsill S. & Robert C. (2002). Marginal maximum a posteriori estimation using Markov chain Monte Carlo. Statistics and Computing, 12, 77–84. Efron B. & Morris C. (1975). Data analysis using Stein’s estimator and its generalizations. J. Amer. Statist. Assoc., 70, 311–319. Efron B. & Tibshirani R. (1993). An Introduction to the Bootstrap. Chapman and Hall, New York. Evans M. & Swartz T. (2000). Approximating Integrals via Monte Carlo and Deterministic Methods. Oxford University Press, Oxford. Feller W. (1971). An Introduction to Probability Theory and its Applications, vol. 2. Wiley, New York. Flegal J., Haran M. & Jones G. (2008). Markov chain Monte Carlo : can we trust the third significant figure ? Statist. Sci., 23. Gaetan C. & Yao J.F. (2003). A multiple-imputation Metropolis version of the EM algorithm. Biometrika, 90, 643–654. Gaver D. & O’Muircheartaigh I. (1987). Robust empirical Bayes analysis of event rates. Technometrics, 29, 1–15. Gelfand A. & Dey D. (1994). Bayesian model choice : asymptotics and exact calculations. J. R. Stat. Soc. Ser. B, 56, 501–514.
Bibliographie
245
Gelfand A. & Smith A. (1990). Sampling based approaches to calculating marginal densities. J. Amer. Statist. Assoc., 85, 398–409. Gelman A. & Rubin D. (1992). Inference from iterative simulation using multiple sequences (with discussion). Statist. Sci., 7, 457–511. Geman S. & Geman D. (1984). Stochastic relaxation, Gibbs distributions and the Bayesian restoration of images. IEEE Trans. Pat. Anal. Machine Intell., 6, 721–741. Gentle J.E. (2002). Elements of Computational Statistics. Springer–Verlag, New York, New York. Genz A. & Azzalini A. (2009). mnormt : The multivariate normal and t distributions. R package version 1.3-3. Geweke J. (1992). Evaluating the accuracy of sampling-based approaches to the calculation of posterior moments (with discussion). Dans Bayesian Statistics 4, réd. J. Bernardo, J. Berger, A. Dawid & A. Smith, pp. 169–193. Oxford University Press, Oxford. Geyer C. & Thompson E. (1992). Constrained Monte Carlo maximum likelihood for dependent data (with discussion). J. R. Stat. Soc. Ser. B, 54, 657–699. Glynn P.W. & Whitt W. (1992). The asymptotic validity of sequential stopping rules for stochastic simulations. Ann. Appl. Probab., 2, 180–198. Haario H. & Sacksman E. (1991). Simulated annealing in general state space. Adv. in Appl. Probab., 23, 866–893. Haario H., Saksman E. & Tamminen J. (1999). Adaptive proposal distribution for random walk Metropolis algorithm. Comput. Statist., 14(3), 375–395. Hàjek B. (1988). Cooling schedules for optimal annealing. Math. Oper. Res., 13, 311–329. Hastings W. (1970). Monte Carlo sampling methods using Markov chains and their application. Biometrika, 57, 97–109. Heidelberger P. & Welch P. (1983). A spectral method for confidence interval generation and run length control in simulations. Communications of the Association for Computing Machinery, 24, 233–245. Hesterberg T. (1995). Weighted average importance sampling and defensive mixture distributions. Technometrics, 37, 185–194. Jacquier E., Johannes M. & Polson N. (2007). MCMC maximum likelihood for latent state models. J. Econometrics, 137.
246
Méthodes de Monte-Carlo avec R
Jeffreys H. (1939). Theory of Probability. The Clarendon Press, Oxford. Jelinek F. (1999). Statistical Methods for Speech Recognition. The MIT Press, Cambridge, MA. Johnson R. & Wichern D. (1988). Applied Multivariate Statistical Analysis, second Edition. Prentice-Hall, Englewood Cliffs, NJ. Jones G., Haran M., Caffo B. & Neath R. (2006). Fixed-width output analysis for Markov Chain Monte Carlo. J. Amer. Statist. Assoc., 101. Kallenberg O. (2002). Foundations of Modern Probability. Springer–Verlag, New York. Kendall W., Marin J.M. & Robert C. ( ? ? ? ?). Confidence bands for Brownian motion and applications to Monte Carlo simulations. Statist. Comput., 17. Kirkpatrick S., Gelatt C. & Vecchi M. (1983). Optimization by simulated annealing. Science, 220, 671–680. Kong A., McCullagh P., Meng X.L., Nicolae D. & Tan Z. (2003). A theory of statistical models for Monte Carlo integration (with discussion). J. R. Stat. Soc. Ser. B, 65. Lehmann E. & Casella G. (1998). Theory of Point Estimation, revised edition. Springer–Verlag, New York. Lele S., Dennis B. & Lutscher F. (2007). Data cloning : easy maximum likelihood estimation for complex ecological models using Bayesian Markov chain Monte Carlo methods. Ecology Letters, 10, 551–563. Liu J. (1996). Metropolized independent sampling with comparisons to rejection sampling and importance sampling. Statist. Comput., 6, 113–119. Liu J., Wong W. & Kong A. (1994). Covariance structure of the Gibbs sampler with applications to the comparisons of estimators and sampling schemes. Biometrika, 81, 27–40. Lunn D., Thomas A., Best N. & Spiegelhalter D. (2000). WinBUGS – a Bayesian modelling framework : concepts, structure, and extensibility. Statist. Comput., 10, 325–337. Marin J.M. & Robert C. (2007). Bayesian Core. Springer–Verlag, New York. Matthews P. (1993). A slowly mixing Markov chain with implications for Gibbs sampling. Statist. Probab. Lett., 17, 231–236. McCulloch C. (1997). Maximum likelihood algorithms for generalized linear mixed models. J. Amer. Statist. Assoc., 92, 162–170.
Bibliographie
247
Metropolis N., Rosenbluth A., Rosenbluth M., Teller A. & Teller E. (1953). Equations of state calculations by fast computing machines. J. Chem. Phys. Meyn S. & Tweedie R. (1993). Markov Chains and Stochastic Stability. Springer– Verlag, New York. Neal R. (1999). Bayesian Learning for Neural Networks, vol. 118 de Lecture Notes in Statistics. Springer–Verlag, New York, New York. Neal R. (2003). Slice sampling (with discussion). Ann. Statist., 31, 705–767. Newton M. & Raftery A. (1994). Approximate Bayesian inference by the weighted likelihood bootstrap (with discussion). J. R. Stat. Soc. Ser. B, 56, 1–48. Ó Ruanaidh J. & Fitzgerald W. (1996). Numerical Bayesian Methods Applied to Signal Processing. Springer–Verlag, New York. Owen A. & Zhou Y. (2000). Safe and effective importance sampling. J. Amer. Statist. Assoc., 95, 135–143. Peskun P. (1973). Optimum Monte Carlo sampling using Markov chains. Biometrika, 60, 607–612. Plummer M., Best N., Cowles K. & Vines K. (2006). CODA : convergence diagnosis and output analysis for MCMC. R News, 6. Pritchard J., Seielstad M., Perez-Lezaun A. & Feldman M. (1999). Population growth of human Y chromosomes : a study of Y chromosome microsatellites. Molecular Biology and Evolution, 16, 1791–1798. Raftery A. & Lewis S. (1992). How many iterations in the Gibbs sampler ? Dans Bayesian Statistics 4, réd. J. Bernardo, J. Berger, A. Dawid & A. Smith, pp. 763–773. Oxford University Press, Oxford. Robert C. (1993). Prior feedback : a Bayesian approach to maximum likelihood estimation. J. Comput. Statist., 8, 279–294. Robert C. (1995a). Convergence control techniques for MCMC algorithms. Statist. Sci., 10. Robert C. (1995b). Simulation of truncated Normal variables. Statist. Comput., 5, 121–125. Robert C. (2001). The Bayesian Choice, second edition. Springer–Verlag, New York. Robert C. (2006). Le Choix Bayésien. Springer, Paris. Robert C. & Casella G. (2004). Monte Carlo Statistical Methods, second edition. Springer–Verlag, New York.
248
Méthodes de Monte-Carlo avec R
Robert C. & Casella G. (2009). Introducing Monte Carlo Methods in R. Use R ! Springer–Verlag, New York. Roberts G., Gelman A. & Gilks W. (1997). Weak convergence and optimal scaling of random walk Metropolis algorithms. Ann. Appl. Probab., 7, 110–120. Roberts G. & Rosenthal J. (1998). Markov chain Monte Carlo : some practical implications of theoretical results (with discussion). Canad. J. Statist., 26, 5–32. Roberts G. & Rosenthal J. (2009). Examples of adaptive mcmc. J. Comput. Graph. Statist., 18(2), 349–367. Rosenthal J. (2007). Amcm : an R interface for adaptive MCMC. Comput. Statist. Data Anal., 51, 5467–5470. Rubinstein R. (1981). Simulation and the Monte Carlo Method. Wiley, New York. Smith A. & Gelfand A. (1992). Bayesian statistics without tears : a samplingresampling perspective. The American Statistician, 46, 84–88. Spall J.C. (2003). Introduction to Stochastic Search and Optimization. Wiley, New York. Spector P. (2009). Data Manipulation with R. Springer–Verlag, New York. Stigler S. (1986). The History of Statistics. Belknap, Cambridge, MA. Strawderman R. (1996). Discussion of Casella’s article. TEST, 5, 325–329. Tanner M. (1996). Tools for Statistical Inference : Observed Data and Data Augmentation Methods, third edition. Springer–Verlag, New York. Tanner M. & Wong W. (1987). The calculation of posterior distributions by data augmentation. J. Amer. Statist. Assoc., 82, 528–550. Thisted R. (1988). Elements of Statistical Computing : Numerical Computation. Chapman and Hall, New York. Van Laarhoven P. & Aarts E. (1987). Simulated Annealing : Theory and Applications, CWI Tract 51. Reidel, Amsterdam. Wei G. & Tanner M. (1990). A Monte Carlo implementation of the EM algorithm and the poor man’s data augmentation algorithm. J. Amer. Statist. Assoc., 85, 699–704. Wu C. (1983). On the convergence properties of the EM algorithm. Ann. Statist., 11, 95–103. Zellner A. (1986). On assessing prior distributions and Bayesian regression analysis with g-prior distribution regression using Bayesian variable selection. Dans Bayesian Inference and Decision Techniques : Essays in Honor of Bruno de Finetti, pp. 233–243. North-Holland/Elsevier, Amsterdam.
Index a priori impropre, 206 réactualisé, 114 acceptation, probabilité, 25 acceptation–rejet, 87, 89, 150 borne exacte, 26 critique, 28 et recyclage, 97 ADN, suite, 118 algorithme à adaptation décroissante, 237 accélération, 84 adaptatif, 233 comparaison d’, 84 de Box–Muller, 17 de Langevin, 160 du recuit simulé, 114 EM, 125, 189 gourmand, 65 marche aléatoire (Metropolis–Hastings), 156 MCEM, 131 MCMC, voir MCMC, algorithme Metropolis–Hastings, voir Metropolis– Hastings, algorithme optimisation, 26, 84 analyse de Fourier, voir spectrale analyse de la variance, 227 analyse spectrale, 222, 223 approximate Bayesian computation (ABC), 27 approximation normale, 229 augmentation de données, 131
Boltzman–Gibbs, transformation de, 114 bootstrap, 6, 51, 64, 65 Box-Muller, algorithme, 17 brownien, mouvement, 76 calcul, temps, 27 calibration, 240 chaîne de Markov, 110, 141 algorithmes adaptatifs, 233 chaînes parallèles, 213 exploration locale, 156 fonction de répartition empirique, 218 loi limite, 143 loi stationnaire, 143 noyau de transition, 143 théorème ergodique, 144 chaînes parallèles, 213 Challenger, 170 Chib’s approximation, 203 choix de modèle, 163 complète, loi conditionnelle, 180 Comprehensive R Archive Network (CRAN), 237 condition d’équilibre ponctuel, 146 conditionnement, 80, 82, 200 constante de normalisation, 67, 149 continuité, 68 contrôle, 89 contrôle des méthodes MCCM, voir MCMC, contrôle contrôle, variable de, 94 convergence
250
Méthodes de Monte-Carlo avec R
accélération de la, 107 contrôle de, 64 évaluation, 212 graphique, 216 multivariée, 71 lente, 53 suivi de, 38 test, 37 vers la distribution stationnaire, 213 évaluation, 84 évalution de la variabilité, 65 corrélation, 84, 87 covariance matrix, 46 critère d’arrêt, 227 démarginalisation, 125 densité cible, 22 instrumentale, 22 spectrale, 222 distribution bêta-binomiale, 95, 177 chapeau de sorcière, 240 conditionnelle, 206 conjuguée, 92 discrète, 19 empirique, 6 gamma, 29 gamma inverse, 177 Gumbel, 61 instrumentale, 22, 27, 44 normale, 17, 86 Pareto, 53 t, 53 uniforme, 12, 89 distribution initiale chaînes parallèles, 213 division par zéro, 72 données augmentation, 131 censurées, 127 complètes, 125
manquantes, 121, 125, 183 dyadique suite, 87 symétrie, 87 décomposition de Dickey, 81 défaillance de pompes nucléaires, 196 démarginalisation, 121 échantillon indépendant, 84 taille effective, voir taille effective uniforme, 85 échantillonnage de Gibbs, 174 défensif, 53, 82 par lots, 215 taille de lot, 219 préférentiel, 123, 227 auto-normalisé, 48, 67, 72 distribution instrumentale, 41 par des mélanges défensifs, 54 efficacité, 53 identité, 42 multiple, 55 poids, 48 poids, normalisé, 72 précision, 43 principe, 41 variance, 69 stratifié, 83 échantillonneur par tranches, 191 échantillonneur de Gibbs, 179, 206, 208 complétion, 183 définition, 179 à deux étapes, 174–179 effets aléatoires, 207 EM (algorithme), 125 étapes, 126 monotonie, 127 par Monte-Carlo, 130, 132
Index EMV (estimateur du maximum de vraisemblance), 58 ergodicité, 143 estimateur convergent, 121 de Bayes, 34, 39 de James–Stein tronqué, 86 et paradygme, 34 par chemin, 69 probabilité de queue, 43 préférentiel, 42, 43 auto-normalisé, 48 Rao–Blackwellisé, 96 à variance infinie, 51 évaluation de convergence coda, 212 exponentiel générateur, 16 générateur aléatoire, 15 facteur de Bayes calcul, 60, 68, 203 facteur de réduction, 228 famille exponentielle, 93 fonction de coût, 84 de répartition empirique, 218 log-cumulante, 93 génétique liaison, 131 générateur, pseudo-aléatoire, 12 générateur normal, 17 Gibbs champ aléatoire, 174 échantillonnage, voir échantillonneur gradient, 102, 111 stochastique, 111, 156 graine de départ, 13 graphe de la moyenne cumulée, 75 Hessienne, 102
251
indicatrice d’allocation, 137 indépendance, 215 inférence asymptotique, 34 bayésienne et théorie de la décision, 34 statistique, 34 intégration, 34 approximative, 37 bornes numériques, 34 Monte-Carlo, 37, 38 numérique, 34 irréductibilité, 143 Kullback–Leibler, divergence, 73 liaison génétique, 131 Linux, 215 local maxima, 107 log-cumulante, fonction, 93 loi cible, 145 conditionnelle complète, 209 de proposition, 146 gaussienne inverse, 167 instrumentale, 150 invariante, 143 normale, 157 normale tronquée, 31 Loi des Grands Nombres extension, 144 forte, 37 loi stationnaire, 143 comme loi limite, 143 mélange exponentiel, 137 gaussien, 129 marche aléatoire, 143, 167 marginalisation, 54 Monte-Carlo, 61 masse manquante, 214 maximum, local, 111
252
Méthodes de Monte-Carlo avec R
MCEM (algorithme), 131, 136 MCMC, algorithme adaptatif, 233 contrôle de, 212 convergence d’, 212 Metropolis–Hastings, algorithme indépendant, 150 indépendent, 150 marche aléatoire, 167 probabilité d’acceptation, 146 mélange indicateur, 188 mesurabilité, 68 méthode de Monte-Carlo, voir Monte-Carlo de Newton–Raphson, 102 numérique, 100 Metropolis dans Gibbs, 204 Metropolis–Hastings, algorithme, 115, 206 mode, 107 modèle à effets aléatoires, 207 ARMA, 222 augmenté, 131 choix, 67 complété, 189 de données censurées, 184 de données manquantes, 184 de mélange, 188 hiérarchique, 175, 195 linéaire, 5 logistique, 93, 193 multinomial, 185 probit, 57, 121, 160 monotonie de la covariance, 215 Monte-Carlo, 12, 41, 42, 53, 85 approximation, 121 EM, 130, 132 hybride, 205 marginalisation, 54, 61 validation, 85 mouvement brownien, 76 moyenne
cumulée, 75 empirique, 37, 81, 89, 95, 166, 177, 201, 202, 229 convergence, 214 et Rao–Blackwellisation, 210 mélange défensif, 54 pour la simulation, 21, 53, 81 stabilisation par, 53 méthode d’acceptation–rejet, 22, 27 de Newton–Raphson, 111 du gradient, 111 noyaux, 222 ∇ (gradient), 102 navette Challenger, 170 Newton–Raphson, 101 non stationnarité, 216 noyau, 143 noyau de transition, 143 O-ring, 170 optimisation, 27, 34 partie entière, 59 perplexité, 73 point col, 111 point fixe, 127 probabilité d’acceptation, voir acceptation, probabilité distributions de, en R, 5 transformation intégrale, 14 problème du voyageur de commerce, 118 processus de Poisson, 196 proposition, 146 R, 2 Box–Muller, générateur, 17 lois de probabilité, 5 récurrence, 143 randu, 28
Index Rao–Blackwellisation, 80–84, 95, 200 implantation, 82 terme à terme, 96 recuit simulé courbe des températures, 114 pente des températures, 107 recyclage, 200 rééchantillonnage dégénérescence, 50 et bootstrap, 66 multinomial, 48 sans biais, 61 régression linéaire, 229 logistique, 93, 193 régénération, 65 SAME, algorithme, 114 simulation, 34, 206 contre méthodes numériques, 100 en parallèle, 66 univariée, 180 sous-échantillonnage, 215, 219 et indépendance, 219 et évaluation de convergence, 215 stabilité d’un chemin, 53 stationnarité, 213, 214, 216–226 statistique de Kolmogorov–Smirnov, 219 stochastique approximation, 104 exploration, 104 optimisation, 148 stratégie hybride, 205 Student génération de la loi, 21 sudoku, 9 support, 22, 37, 149 taille effective d’échantillon, 51, 59, 73, 93, 168, 229, 230 taux d’acceptation, 141, 146, 157, 167 optimal, 168 temps d’arrêt, 212
253
temps de calcul, 65, 150, 168, 206, 239 températures, courbe, 114 test, 41 Cramer–von Mises, 219 de Student, 222 halfwidth, 223 Kolmogorov–Smirnov, 147, 219 non paramétrique, 219 puissance d’un, 41 rapport de vraisemblance, 41 stationnarité, 213 théorie de la décision, 34 théorème de Donsker, 76 de Hammersley–Clifford, 207 de la Limite Centrale, 34, 37, 64 de Rao–Blackwell, 80 Ergodique, 144, 214 fondamental, simulation, 23 tracé brut, 226 trajectoire, 213 uniforme génération, 15 variable antithétique, 84, 87 auxiliaire, 183 de contrôle, 94 latente, 189 variable aléatoire antithétique, 87 binomiale négative, 21 bêta, 29 de Cauchy, 16 de Pareto, 28 discrète, 19 du chi-deux non-centrée, 30 exponentielle, 15, 16 gamma, 29 logistique, 16 mélange, 21 normale, 17
254
Méthodes de Monte-Carlo avec R
multivariée, 18 tronquée, 209 normale tronquée, 31 uniforme, 12, 15, 28 variable de contrôle, 89, 92 variance d’un rapport, 67 finie, 51 inter- et intra-chaînes, 227 réduction et acceptation–rejet, 89 réduction, 80, 81, 85, 97 et variables antithétiques, 96 et variables de contrôle, 90, 92 optimale, 84 vitesse de convergence, 168 vous n’avez vu que ce que vous avez parcouru, 214, 221, 223 voyageur de commerce, problème, 100 Z-score, 222 zone de confiance, 63
Index des commandes %%, 88
expression, 49
abline, 43 acf, 13, 151 acfplot(coda), 216 amcmc, 237–240 apply, 105 area(MASS), 34 as.matrix, 35 as.numeric, 40, 134 assign, 9 attach, 9
format, 40, 120
bayesm, 31 bw.nrd0, 236
heidel.diag(coda), 223 heidel.diag, 222 help, 2 help.search, 2 help.start, 2
cars, 154 cbind, 58 chol, 46 coda, 212, 215, 222, 226, 229 coda.options(coda), 216 codamenu(coda), 216 contour, 45, 102 cummax, 105 cumsum, 38, 39 curve, 38, 108
gamma, 35 gcc, 237 gelman.diag(coda), 227 gelman.plot(coda), 227 geweke.diag(coda), 222 geweke.plot(coda), 222 glm, 58 binomial, 57, 93
ifelse, 171 image, 45 Inf, 35, 36 install.package, 3 integrate, 34, 38, 56, 88 is.na, 9, 235 ks.test, 150, 219
dbeta, 24 density, 226 dnbinom, 21 dnorm, 5 download.package, 3 effectiveSize(coda), 229 Energy, 178
levelplot(coda), 216 lgamma, 35 lm, 91 MASS, 29, 57 mcmc(coda), 216 mcmc.list(coda), 216, 226
256
Méthodes de Monte-Carlo avec R
mcsm, 2 mnormt, 18 multimenu(coda), 216
rpois, 20 rt, 21 rtnorm, 209 rtrun, 31 runif, 12
NA, 72 nlm, 102
sadmnv(mnormt), 18 set.seed, 13 summary, 91 summary.mcmc(coda), 226 swiss, 163, 164 switch, 205 system.time, 9, 16
optimise, 24, 101, 105, 106 outer, 45, 108, 109 pbinom, 19 persp, 109, 167 Pima, 57, 93 Pima.tr, 160 plot.mcmc(coda), 226 pnorm, 5 points, 45 polygon, 49, 64 ppois, 20 prod, 57, 58
title, 120 unique, 117 uniroot, 133, 135 var, 70 while, 25
qnorm, 5, 17 qqmath(coda), 216 quantile, 65 R, 2 help, 2 interface avec autre langage, 2, 237 randu, 13 range, 71 rbeta, 24 rcauchy, 16 rchisq, 16, 81 .RData, 9 read.coda(coda), 216 rexp, 15 rgamma, 12 rlogis, 16 rmnorm(mnormt), 18, 233 rmvnorm(mvtnorm), 233 rnbinom, 21 rnegbin, 29 RNG, 12, 17 rnorm, 5
!