UPMC-X Méthodes de Monte Carlo Master M2 Probabilités et Finance 2016/2017 Mini-projet Monte Carlo à préparer pour le lundi 31 octobre Algorithme Ziggurat Partie 1 : Cas support compact Soit f une densité de probabilité continue unimodale de support compact [l, r]. On note m ∈ [l, r] le mode de la densité tel que f soit strictementR croissante sur [l, m] et strictement décroissante sur [m, r]. On note x f ∗ = f (m) = maxu∈[l,r] f (u) et F (x) = l f (u)du la fonction de répartition associée à f . −1 −1 Pour tout y ∈ [0, f ∗ [, la fonction f possède deux antécédents de y, f −1 ({y}) = {f− (y), f+ (y)} où l’on suppose −1 −1 conventionnellement que f− (y) < f+ (y). On note pour tout y ∈ [0, f ∗ [, −1 −1 d(y) = f+ (y) − f− (y). Dans tout l’exercice on supposera qu’on sait évaluer la densité f en tout point. Pour une fonction g : R → R on note E(g) l’épigraphe de la fonction g, i.e. 2 E(g) = {(x, y) ∈ R+ , 0 6 y 6 g(x)}. La mesure λ2 est la mesure de Lebesgue sur R2 . 1. Montrer que E(f ) ⊂ [l, r] × [0, f ∗ ]. En déduire une méthode de rejet pour simuler selon la densité f . 2. Quelle est la loi τ du rejet et l’efficacité de la méthode (en fonction de λ2 (E(g)), l, r et f ∗ ). 3. Soit n > 1 et des points 0 = y0 < y1 < · · · < yn−1 < yn = f ∗ vérifiant ∃ An > 0, ∀ k ∈ {1, . . . , n − 1}, yk = An k X j=1 1 . d(yj−1 ) −1 −1 Pour ces points fixés, on considère les n rectangles Rk = [f− (yk−1 ), f+ (yk−1 )] × [yk−1 , yk ], k = 1, . . . , n, n [ et l’on pose En = Rk . k=1 4. Montrer que pour tout k = 1, . . . , n, λ2 (Rk ) = An et en déduire que λ2 (En ) = nAn > 1. 5. Soit (X̄, Ȳ ) de loi uniforme sur En . Comment simuler efficacement (X̄, Ȳ ) ? Quelle est la loi de la première marginale X̄ ? Si cette loi est à densité, on pourra noter celle-ci fn . 6. Soit (X̄m , Ȳm )m>1 une suite i.i.d. uniforme sur En et τ = inf m > 1, (X̄m , Ȳm ) ∈ E(f ) . Donner la loi de τ et montrer que X̄τ a pour densité f . 7. Écrire l’algorithme de simulation de X̄τ à partir de lois uniformes sur [0, 1]. 8. Proposer un algorithme permettant de minimiser le nombre d’évaluations de la fonction f . 9. Montrer que pour tout n > 1 il existe une unique constuction possible i.e. qu’il existe un unique An ∈ ]0, f ∗ (r − l)[, et montrer que limn→+∞ nAn = 1. Partie 2 : Cas support non compact On étend la construction précédente à une densité f de support R. On suppose que pour tout n > 1, il existe −1 −1 An > 0 tel que y1 soit solution de F (f− (y1 )) + 1 − F (f+ (y1 )) + y1 d(y1 ) = An et pour tout k ∈ {2, . . . , n − 1}, k X 1 yk = An . d(yj−1 ) j=2 On modifie la construction précédente en considérant −1 −1 R̃1 = E(f 1]−∞,f −1 (y1 )] ) ∪ [f− (y1 ), f+ (y1 )] × [0, y1 ] ∪ E(f 1[f −1 (y1 ),+∞[ ), − + et en posant Ẽn = R̃1 ∪ R2 ∪ · · · ∪ Rn . 1 1. Déterminer la fonction g1 : R → [0, y1 ] telle que R̃1 = E(g1 ). 2. On suppose qu’on connaît explicitement F −1 . Comment simuler selon la loi de densité A1n g1 à partir d’une seule uniforme U ∈ U([0, 1]) ? Donner l’algorithme complet de simulation selon la loi de Laplace de densité f (x) = λ2 e−λ|x| en utilisant cette construction. 3. On suppose que f est la densité gaussienne centrée réduite. Proposer une méthode de rejet de la loi de densité proportionnelle à f 1[f −1 (y1 ),+∞[ par rapport à la queue d’une loi exponentielle à déterminer. + Préciser l’efficacité de la méthode (moyenne de l’inverse du temps de rejet). Donner l’algorithme de simulation de la loi de densité A1n g1 dans ce cas. Implémentation en C++ et C++11 1. Programmer l’algorithme Ziggurat pour la loi bêta de paramètres α > 1 et β > 1 de densité de support [0, 1] définie par f (x) = Cxα−1 (1 − x)β−1 , x ∈ [0, 1], où C est la constante de normalisation. Tester. 2. Programmer l’algorithme Ziggurat pour la loi normale centrée réduite. Tester. 3. Ecrire un algorithme Ziggurat générique qui permet de simuler efficacement étant donnés : — une densité f et son inverse f −1 , — la fonction de répartition F associée et son inverse F −1 , — si nécessaire une fonction permettant de simuler les queues de distribution. 2