Académique Documents
Professionnel Documents
Culture Documents
Département MIDO
Master 1 – Méthodes de Monte Carlo
stoehr@ceremade.dauphine.fr
Consignes.
À rendre avant le 08 janvier 2019
1. Justifiez que pour obtenir une réalisation suivant la loi de densité f , on peut appliquer l’algorithme
du rejet à f˜.
2. Proposer une constante M et une densité g telles que pour tout (x, y) ∈ R2 , f˜(x, y) ≤ M g (x, y).
1
Projet Méthodes de Monte Carlo
5. Comparer la distribution ainsi obtenue avec celle obtenue par la méthode du rejet.
Solution Exercice 1.
Méthode du rejet.
1. Il existe une constante c telle que f = c f˜. Supposons qu’il existe une densité g de R2 et une
constante M > 0 telles que pour tout (x 1 , x 2 ) ∈ R2 , f˜(x 1 , x 2 ) ≤ M g (x 1 , x 2 ). Alors
∀(x 1 , x 2 ) ∈ R2 , f (x 1 , x 2 ) ≤ c M g (x 1 , x 2 ).
Sous cette hypothèse, on sait simuler suivant f par rejet avec la constante c M et la densité g :
le critère d’arrêt dans l’algorithme du rejet s’écrit
avec (Y1,n , Y2,n ) ∼ g et Un ∼ U ([0 , 1]) (mutuellement indépendantes). Il suffit donc de domi-
ner f˜ par une densité pour obtenir une réalisation (Y1,T , Y2,T ) suivant f .
2
Projet Méthodes de Monte Carlo
p M = 6p2π,
{x − 2}2
µ ¶
˜ 2π 2 3
f (x, y) ≤ 3 × p exp − × 1{ y∈[0,2]} ⇒
2π 2 2 g ≡ N (2 , 1) ⊗ U ([0 , 2]).
3
3
Projet Méthodes de Monte Carlo
1 Xn N
cbn = Tk = .
nM k=1 nM
Le théorème central limite appliqué à la suite de variables aléatoires i.i.d. de carré intégrable
(Tn )n≥1 donne
p L
M N (cbn − c) −→ N (0 , cM (c M − 1)).
n→+∞
Par ailleurs, la loi faible des grands nombres pour la suite de variables aléatoires i.i.d. inté-
grables (Tn )n≥1 donne
P
cbn −→ c
n→+∞
4
Projet Méthodes de Monte Carlo
3. Code basique.
rejet.basic <- function(n, rgen, ratio, M) {
ans <- matrix(NA, n, 2)
N <- 0
for (i in 1:n) {
x <- rgen(1)
N <- N + 1
while (runif(1) > ratio(x)) {
x <- rgen(1)
N <- N + 1
}
ans[i, ] <- x
}
return(list(z = ans, c = N/(n * M), var.c = (N^2/n - 1)/(n * M)^2,
p = n/N, var.p = n * (1 - n/N)/N^2))
}
Code vectorisé.
rejet <- function(n, rgen, ratio, M) {
ans <- c()
m <- n
N <- 0
p <- 1
while (m > 0) {
n.simu <- m%/%((p == 0) + p) + 1
x <- rgen(n.simu)
a.r <- (runif(n.simu) <= ratio(x))
l <- which(a.r)
ans <- rbind(ans, x[l, ])
N <- N + n.simu
m <- n - nrow(ans)
p <- nrow(ans)/N
}
N_ <- N - (n.simu - max(l))
n_ = nrow(ans)
return(list(z = ans[1:n, ], c = N_/(n_ * M), var.c = (N_^2/n_ -
1)/(n_ * M)^2, p = p, var.p = p * (1 - p)/N))
}
# --- Simulation ---
set.seed(13)
n <- 10000
f1 <- rejet(n, rgen1, ratio1, M1)
f2 <- rejet(n, rgen2, ratio2, M2)
5
Projet Méthodes de Monte Carlo
6
Projet Méthodes de Monte Carlo
0.6
0.6
0.5
1.5
0.4
0.4
1.0
y
0.2
0.3
2.0
1.5
0.2
0.5
1 1.0
x2
2 0.1
x1 0.5
3
0.0
0.0
4
0 1 2 3 4
Distribution empirique de X = (X 1 , X 2 )
2.0
0.6
0.6
0.5
1.5
0.4
0.4
1.0
y
0.2
0.3
2.0
0.0
1.5
0.2
0.5
1 1.0
x2
2 0.1
x1 0.5
3
0.0
0.0
0.0
4
0 1 2 3 4
7
Projet Méthodes de Monte Carlo
Algorithme de Metropolis–Hastings. α x(t ) , ξ est calculée en échelle log pour éviter les pro-
¡ ¢
blèmes de dépassement d’entier : log.ratio désigne ln(g/f ). On utilise aussi que le rapport
g (x(t ) )/ f (x(t ) ) a déjà été calculé à l’itération t − 1 (utile lorsque le rapport est coûteux à calculer).
0.6
0.6
1.5
0.5
0.4
0.4
1.0
y
0.2
0.3
2.0
0.0
1.5 0.2
0.5
1 1.0
x2
2 0.1
x1 0.5
3
0.0
0.0
0.0
4
0 1 2 3 4
8
Projet Méthodes de Monte Carlo
Comme dans le cas indépendant, on retrouve bien des variables distribuées suivant la densité
f.
Exercice 2 (Méthodes de Monte Carlo). On considère le graphe G dont chaque arête est munie
d’un poids X 1 , . . . , X 5 . On note x = (X 1 , . . . , X 5 ) le vecteur des poids et on suppose que les poids sont
indépendants et distribués suivant des lois ν1 , . . . , νn précisées ultérieurement.
X4
∼ν
1 ∼ν
X1 4
X 3 ∼ ν3
A B
X2
∼ν
∼ν 5
2 X5
Un chemin simple entre A et B est défini par une suite d’arêtes consécutives de G reliant A à B , toutes les
arêtes de la suite étant distinctes. La longueur d’un chemin simple entre A et B correspond à la somme
des poids des arêtes constituant ce chemin. On note d (X) la longueur du chemin simple le plus court
entre A et B . Dans ce projet, on souhaite estimer par des méthodes de Monte Carlo
δ = P [X 1 + X 2 + X 3 ≥ t ] et p = P [d (X) ≥ t ] t ∈ R.
Les estimateurs doivent être donnés explicitement dans le rapport et les intervalles de confiance se-
ront donnés au niveau 95%
Partie I – Estimation de δ
1. On suppose que X 1 + X 2 + X 3 est distribuée suivant une loi de Weibull de paramètre d’échelle λ = 1
et de paramètre de forme k = 2. Pour les applications numériques, on prendra t = 2.
(a) Proposer une estimation δbn de δ par la méthode de Monte Carlo classique.
(b) Proposer une estimation δbn (q 1 , . . . , q K ) de δ par la méthode de stratification avec allocation pro-
portionnelle.
t t 1
µ ¶
F (t ) = 1{t ∈[0,1[} + + 1{t ∈[1,2]} + 1{t >2} .
4 4 2
(a) Proposer une estimation δbn de δ par la méthode de Monte Carlo classique.
9
Projet Méthodes de Monte Carlo
Partie II – Estimation de p
Echantillonage préférentiel.
1{d (x)≥t } f (x ; λ1 , . . . , λ5 )
g (x) =
p
Dans la suite, on choisit comme loi d’importance, la densité du vecteur (Y1 , . . . , Y5 ) := Y tel que les va-
riables Y1 , . . . , Y5 soient indépendantes et distribuées suivant les lois exponentielles de paramètres res-
pectifs α1 , . . . , α5 . On la notera h(y ; α1 , . . . , α5 ).
4. Donner l’estimateur d’échantillonnage préférentiel pbn (α1 , . . . , α5 ) de p basé sur la loi d’importance
h.
g (Z)
· ½ ¾¸
(α? ?
1 , . . . , α5 ) = arg min Eg ln ,
α1 ,...,α5 h(Z ; α1 , . . . , α5 )
5. Soient α01 , . . . , α05 les valeurs choisies initialement par l’utilisateur. Montrer que
" #
f (Y ; λ1 , . . . , λ5 )
(α? ?
1 , . . . , α5 ) = arg max Eα01 ,...,α05 1{d (Y)≥t } ln h(Y ; α1 , . . . , α5 ) ,
α1 ,...,α5 h(Y ; α01 , . . . , α05 )
où Eα0 ,...,α0 est l’espérance par rapport à la densité h(·; α01 , . . . , α05 ).
1 5
10
Projet Méthodes de Monte Carlo
n 5 λ
i
exp − λi − α0i Yk,i
X Y ¡ © ª ¢
1{d (Yk )≥t }
i =1 αi
0
k=1
b?j =
α , j = 1, . . . , 5.
n 5 λ
i
exp − λi − α0i Yk,i
X Y ¡ © ª ¢
1{d (Yk )≥t } Yk, j
i =1 αi
0
k=1
Réduction de variance. Soient U1,1 , . . . ,U1,5 , . . . ,Un,1 , . . . ,Un,5 des variables aléatoires indépendantes et
identiquement distribuées suivant la loi uniforme sur [0 , 1]. On pose, pour tout i = 1, . . . , n,
µ
1 1 1 1 1
ρ(Ui ,1 , . . . ,Ui ,5 ) = min − ? lnUi ,1 − ? lnUi ,4 ; − ? lnUi ,1 − ? lnUi ,3 − ? lnUi ,5 ;
α1 α4 α1 α3 α5
¶
1 1 1 1 1
− ? lnUi ,2 − ? lnUi ,5 ; − ? lnUi ,2 − ? lnUi ,3 − ? lnUi ,4 .
α2 α5 α2 α3 α4
n Y 5 λ
1X k λk /α?
k
−1
U
? i ,k 1{ρ(Ui ,1 ,...,Ui ,5 )≥t }
n i =1 k=1 αk
(c) Comparez les performances de l’estimateur pbn(1) avec celles des estimateurs pbn et pbn (α̂? ?
1 , . . . , α̂5 ).
11
Projet Méthodes de Monte Carlo
1 Xn
i.i.d.
δbn = Vk , V1 , . . . ,Vn ∼ ν,
n k=1
Partie I – Estimation de δ
1 Xn
i.i.d.
δbn = 1{Wk ≥t } , W1 , . . . ,Wn ∼ Weibull(2, 1).
n k=1
Il a pour variance
£ ¤ 1 ¤ 1 2
³ 2
´
Var δbn = Var 1{W1 ≥t } = e −t 1 − e −t .
£
n n
Pour la loi uniforme U ([0 , t ]), l’estimateur associé n’est pas nécessairement plus perfor-
mant en terme de variance. La variance de l’estimateur est donnée par
4t 2 π
µr ½ ¾ ¶
£ ¤ 1 1 −t 2 2 −2t 2
σ21,n 2
Var U exp(−U ) = Var δn + t Φ(2t ) −
£ ¤
= b +e −t e −1
n n 2 2
£ ¤ 1
= Var δbn + ²1 (t ).
n
4π £ ¤ 1³ n p o © p 2
´
σ22,n = Var Z 1{Z ≥t } = Var δbn + 2π 1 − Φ(t 2) + 2t π − 1 e −t
£ ¤ ª
n n
£ ¤ 1
= Var δn + ²2 (t ).
b
n
12
Projet Méthodes de Monte Carlo
Ainsi l’estimateur associé à loi uniforme n’est plus performant que pour des valeurs de
t ≤ 1.46 et pour t ≥ 1.46, la variance croît avec t (c.f. graphique). Pour la loi normale, pour
tout t ≥ 0, ²2 (t ) ≥ 0 et donc cet estimateur ne permet jamais de réduire la variance. Dans
la suite, on se contente donc d’étudier l’estimateur δbn .
2.0
ε1
1.0
ε2
0.0
0 1 2 3 4 5
On peut choisir n pour atteindre une précision ² au niveau de confiance α = 0.95 en uti-
lisant soit l’inégalité de Bienaymé-Tchebichev ou l’hypothèse du régime asymptotique,
en ayant conscience que les bornes obtenues sont mauvaises.
13
Projet Méthodes de Monte Carlo
Mis à part le cas du régime asymptotique avec variance connue qui conduit à une
sous-estimation du nombres de tirages nécessaires, la précision obtenue au niveau de
confiance 0.95 est au-delà de la précision souhaitée. On peut observer à quel point la
borne sur n se dégrade lorsque la variance δ(1 − δ) ≈ 0.018, est remplacée par la borne
supérieur de 0.25.
(b) Option n°1. La fonction de répartition de la loi de Weibull(2, 1) est inversible. Son in-
verse généralisée coïncide donc avec son inverse au sens de la bijection et est facile à
calculer. Pour U de loi uniforme sur [0 , 1], la méthode de la fonction inverse assure
p h i
F −1 (U ) = − lnU ∼ Weibull(2, 1) et δ = E 1{F −1 (U )≥t }
En prenant
K
G
• D k , avec D k = [k−1/N , k/N [ comme partition de [0 , 1],
k=1
• U comme variable de stratification,
on obtient, pour tout k ∈ {1, . . . , K },
1 U +k −1
P [U ∈ D k ] = et ∼ U | U ∈ Dk .
K K
1 XK Xn/K
i.i.d.
δbn (n 1 , . . . , n K ) = 1n ³ Ui +k−1 ´ o U1 , . . . ,Un ∼ U ([0 , 1]). (2)
n k=1 i =1 F −1 K ≥t
Option n°1 bis. On peut formuler l’option n°1 de la façon équivalente suivante. En pre-
nant W = X 1 + X 2 + X 3 comme variable de stratification, il faut construire une partition
de [0 , +∞[. La fonction de répartion F étant bijective, cela est équivalent à construire une
14
Projet Méthodes de Monte Carlo
K · µ
k −1
¶
k
µ ¶·
avec D k = F −1 , F −1
G
Dk , .
k=1 N N
On a ainsi
U +k −1
µ ¶
1
P [W ∈ D k ] = et F −1 ∼ W | W ∈ Dk .
K K
Var δbn
£ ¤
ρ(K ) = ¤.
Var δbn (n 1 , . . . , n K )
£
La théorie nous assure que l’estimateur stratifié avec allocation proportionnelle est au
moins aussi efficace que l’estimateur de Monte Carlo classique, i.e. ρ(K ) ≥ 1.
set.seed(31)
# --- Valeurs de K testées ---
K <- which(n%%(1:1000) == 0)
# ------ Application ------
result <- as.matrix(sapply(K, MC.strat, n = n))
var.strat <- as.numeric(result[3, ])
rho <- delta.hat$var[n]/(var.strat)
# ------ Résumé ------
summary(var.strat)
Min. 1st Qu. Median Mean 3rd Qu. Max.
9.687e-10 6.857e-09 2.441e-08 8.610e-08 1.809e-07 2.666e-07
summary(rho)
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.9583 1.4147 10.4845 26.6891 37.4484 263.7114
Le tableau ci-dessous présente les résultats obtenus pour des valeurs particulières de K .
15
Projet Méthodes de Monte Carlo
16
Projet Méthodes de Monte Carlo
E 1{X 1 +X 2 +X 3 ≥t } ¯ X 3 = g (X 3 ),
£ ¯ ¤
où pour tout x ∈ R,
X 2 , on obtient δ = E [1 − F (t − X 1 − X 2 )].
17
Projet Méthodes de Monte Carlo
(c) On en déduit
1 Xn
i.i.d.
δb(2) G t − F −1 (Uk ) , avec U1 , . . . ,Un ∼ U ([0 , 1]),
¡ ¢
n = 1−
n k=1
n Var δb(2)
n = Var[1 −G(t − X 3 )] = Var E 1{X 3 +Y ≥t } X 3
£ ¤ £ £ ¯ ¤¤
¯
h £ ¯ ¤2 i ¯ ¤¤2
= E E 1{X 3 +Y ≥t } ¯ X 3 − E E 1{X 3 +Y ≥t } ¯ X 3 .
£ £
Ce nouvelle estimateur est donc au moins aussi performant, voire plus performant, que
l’estimateur de Monte Carlo classique.
set.seed(45)
delta.hat.2 <- MC.estim(1 - pgamma(a - inv.F(runif(n)), 2))
delta.hat.2
value var IC.inf IC.sup level
1 0.9739746 3.810959e-08 0.9738116 0.9741377 0.95
# --- Gain en variance ---
delta.hat$var[n]/delta.hat.2$var
[1] 6.830707
On obtient que la variance de l’estimateur δb(2)
n est 6.831 fois plus petite que celle de l’esti-
mateur classique. Autrement dit, on obtiendrait la même précision que pour la méthode
classique pour 6.831 fois moins de tirages.
1 Xn
i.i.d.
δb(3) avec Y1 , . . . , Yn ∼ Γ(2, 1).
¡ ¢
n = 1− F t − Yk ,
n k=1
h i
On obtient de façon analogue par l’inégalité de Jensen conditionnelle que Var δb(3)
n ≤
Var δn .
£ ¤
b
18
Projet Méthodes de Monte Carlo
Partie II – Estimation de p
19
Projet Méthodes de Monte Carlo
Echantillonage préférentiel.
2. (a) La densité g permet bien de définir un estimateur d’échantillonnage préférentiel car le
support de x 7→ 1{d (x)≥t } f (x ; λ1 , . . . , λ5 ) est inclus dans le support de g . La variance de cet
estimateur d’échantillonnage préférentiel est
1{d (X)≥t } f (X ; λ1 , . . . , λ5 )
· ¸
Varg = Varg p = 0.
£ ¤
g (X)
1 Xn
p.s.
1{d (Yk )≥t } w(Yk ) −→ Eg 1{d (Y1 )≥t } w(Y1 ) = p,
£ ¤
n k=1 n→+∞
1 Xn Z
p.s.
w(Yk ) −→ Eg [w(Y1 )] = f (x ; λ1 , . . . , λ5 )dx = p.
n k=1 n→+∞ supp(g )
(b) Il n’est pas possible d’en déduire un estimateur de p. Pour que cet estimateur, dit estima-
teur d’échantillonnage préférentiel autonormalisée, converge vers p, il est nécessaire que
supp( f ) ⊂ supp(g ), pour que Eg [w(Y1 )] = 1. Dans l’exemple considéré, on a uniquement
que le support de x 7→ 1{d (x)≥t } f (x ; λ1 , . . . , λ5 ) est inclus dans le support de g .
4. Pour la loi d’importance h, on a supp( f ) ⊂ supp(h) donc l’estimateur d’échantillonnage pré-
férentiel associé est bien défini et s’écrit
1 Xn f (Yk ; λ1 , . . . , λ5 ) 1 X
n 5 λ
j
pbn (α1 , . . . , α5 ) = exp {α j − λ j }Yk, j ,
Y ¡ ¢
1{d (Yk )≥t } = 1{d (Yk )≥t }
n k=1 h(Yk ; α1 , . . . , α5 ) n k=1 j =1 α j
20
Projet Méthodes de Monte Carlo
1 Xn f (Yk ; λ1 , . . . , λ5 )
(α̂? ?
1 , . . . , α̂5 ) = arg max 1{d (Yk )≥t } ln h(Yk ; α1 , . . . , α5 )
α1 ,...,α5 n k=1 h(Yk ; α01 , . . . , α05 )
1 Xn f (Yk ; λ1 , . . . , λ5 )
1{d (Yk )≥t } ∇α1 ,...,α5 ln h(Yk ; α1 , . . . , α5 ) = 0.
n k=1 h(Yk ; α01 , . . . , α05 )
∂ 1
ln h(Yk ; α1 , . . . , α5 ) = − Yk, j .
∂α j αj
1 Xn f (Yk ; λ1 , . . . , λ5 ) α j X
n f (Yk ; λ1 , . . . , λ5 )
1{d (Yk )≥t } = 1{d (Yk )≥t } Yk, j .
n k=1 h(Yk ; α1 , . . . , α5 )
0 0 n k=1 h(Yk ; α01 , . . . , α05 )
n 5 λ
n f (Yk ; λ1 , . . . , λ5 ) i
exp α0i − λi Yk,i
X X Y ¡© ª ¢
1{d (Yk )≥t } 1{d (Yk )≥t }
h(Yk ; α01 , . . . , α05 ) k=1 i =1 i α0
α̂?j =
k=1
=
n
X f (Yk ; λ1 , . . . , λ5 ) n 5 λ
i
exp α0i − λi Yk,i
X Y
1{d (Yk )≥t }
¡© ª ¢
Yk, j 1{d (Yk )≥t } Yk, j
k=1 h(Yk ; α01 , . . . , α05 ) k=1 i =1 αi
0
n ³X 5 © ´
α0i − λi Yk,i
X ª
1{d (Yk )≥t } exp
k=1 i =1
=
n 5 ©
³X ´
α0i − λi Yk,i
X ª
1{d (Yk )≥t } Yk, j exp
k=1 i =1
21
Projet Méthodes de Monte Carlo
∂2 1 ∂2
ln h(Yk ; α1 , . . . , α5 ) = − 2 < 0 et ln h(Yk ; α1 , . . . , α5 ) = 0.
∂α j
2
αj ∂α j αi
L’opposé de la hessienne est donc définie positive. Ainsi la fonction à optimiser est strictement
concave et le point critique est un maximum.
7. # --- Optimisation des paramètres ---
alpha.star <- function(n, t, lambda = c(6, 7, 3, 2, 1), alpha) {
y <- rexp.multi(n, alpha)
z <- exp(y %*% (alpha - lambda)) * (d(y) >= t)
return(as.numeric(sum(z)/(t(z) %*% y)))
}
On peut observer que la procédure est très sensible au choix initial α01 , . . . , α0n .
N <- 1000
a.0 <- c(5, 6, 2, 1, 0.5)
alpha.star(N, 2, alpha = a.0)
[1] 5.2850636 6.4836824 2.2736502 0.4338430 0.3319539
a.0 <- rep(2, 5)
alpha.star(N, 2, alpha = a.0)
[1] 1.9839619 2.0281518 5.5810387 0.6676843 0.3354527
On va donc itérer le processus pour plus de robustesse.
# --- Calcul de alpha.star ---
set.seed(44)
L <- 100
a.0 <- c(5, 6, 2, 1, 2)
a.star <- alpha.star(N, 2, alpha = a.0)
for (i in 2:L) {
a.star <- alpha.star(N, 2, alpha = a.star)
}
# --- Estimateur d'échantillonage préférentiel correspondant ---
lambda <- c(6, 7, 3, 2, 1)
y <- rexp.multi(n, a.star)
z <- prod(lambda/a.star) * exp(y %*% (a.star - lambda)) * (d(y) >= 2)
p.hat.is <- MC.estim(z)
p.hat.is
value var IC.inf IC.sup level
1 0.003878579 1.843803e-10 0.003867238 0.00388992 0.95
# --- Gain en variance ---
p.hat$var[n]/p.hat.is$var
[1] 13.85496
On obtient ainsi un estimateur d’échantillonnage préférentiel plus efficace en terme de va-
riance.
22
Projet Méthodes de Monte Carlo
Réduction de variance.
8. (a) La méthode de la fonction inverse pour la loi exponentielle de paramètre α? donne que
pour U ∼ U ([0 , 1]),
1
− lnU ∼ E (α? ).
α?
loi
ρ(Uk,1 , . . . ,Uk,5 ) = min Yk,1 + Yk,4 , Yk,1 + Yk,3 + Yk,5 , Yk,2 + Yk,5 , Yk,2 + Yk,3 + Yk,4
© ª
loi
= d (Yk ),
1 n
X λj
5
Y −1+λ j /α?j
= 1{ρ(Uk,1 ,...,Uk,5 )≥t } ? Uk, j
n k=1 j =1 α j
1 Xn 5 λ −1+λ j /α?j
j
pbn(1) =
Y
1{ρ(Uk,1 ,...,Uk,5 )≥t } ? Uk, j
2n k=1 j =1 α j
5 λ
Y j −1+λ j /α?j
+ 1{ρ(1−Uk,1 ,...,1−Uk,5 )≥t } ? (1 −Uk, j ) .
j =1 α j
(c) On note
5 λ −1+λ j /α?j
j
Ψ : (x 1 , . . . , x 5 ) 7→ 1{ρ(x1 ,...,x5 )≥t }
Y
? xj
j =1 α j
23
Projet Méthodes de Monte Carlo
24