Beruflich Dokumente
Kultur Dokumente
2006/2007
1.0
0.8
0.6
0.6
0.4
0.4
0.2
0.2
0.0
0.0
0 2 4 6 8 0 2 4 6 8
1
On commence par simuler deux variables aléatoires indépendantes suivant une loi normale
centrée réduite à l’aide de l’algorithme de Box-Müller. On transforme ensuite ces variables pour
obtenir une réalisation de Y .
p
L’algorithme de Box-Müller s’écrit de la façon suivante, en notant que X = (−2∗
log(U )) cos(2πV ) suit une loi N (0, 1) si U, V ∼ U[0, 1] indépendantes.
Pour générer une loi normale non-centrée réduite, on utilise le fait que si X ∼ N (0, 1), alors
Y = µ + σX ∼ N (µ, σ 2 ).
L’algorithme pour générer une variable N (µ, σ 2 ) est alors le suivant
BoxMuller <- function(moy,sigma,n){
(sigma*sqrt(-2*log(runif(n)))*cos(2*pi*runif(n))+moy) }
0.4
0.3
0.3
0.2
0.2
0.1
0.1
0.0
0.0
−2 0 2 4 −3 −2 −1 0 1 2 3
2
vecteur}
On peut simplifier l’écriture en codant directement en matriciel,
Norm2DBoxMuller <- function(n, mu, sigma){
A = t(chol(sigma))
mu0 = matrix(rep(mu),n),ncol=2,byrow=T)
t(A%*%matrix(BoxMuller(0,1,2*n),nrow=2))+mu0 }
Dans le cas qui nous intéresse on appelle alors
Norm2DBoxMuller(1000,c(1,3),matrix(c(3,1,1,1),ncol=2))
3
3
2
2
1
2eme compostante
2eme compostante
1
0
0
−1
−1
−2
−2
−3
−3
−4
−2 0 2 −3 −2 −1 0 1 2 3
3
Densité f(.) Vérification (graphique) de la minoration
2.0
2
1.5
1
1.0
0
0.5
−1
0.0
−2
0 5 10 15 −3 −2 −1 0 1 2 3
4
PointsSousLimite / n }
On peut alors approcher la fonction de répartition de X au point x en appelant tout simple-
ment Integration(1000,x).
Pour estimer un quantile, on peut utiliser une fonction comme suit,
Quantile=function(n,alpha){
Echantillon = AcceptationRejet(n)
EchantillonTrie = sort(Echantillon)
Limite = EchantillonTrie[n*alpha]
Limite }
On peut alors approcher un quantile de X au niveau p en appelant tout simplement
Quantile(1000,p) (la fonction quantile) (en minuscules) étant la fonction quantile de R.
5
(a) sachant Xk = xk , on pose Yk = xk + 1 avec probabilité 1/2, ou Yk = xk − 1 avec
probabilité 1/2,
(b) on calcule le ratio de Hasting Metropolis,
½ ¾ ½
π(yk ) xk !
α(xk , xk ) = min 1, = min 1, λyk −xk },
π(xk ) yk !
La factorielle peut être obtenue en utilisant la loi gamma, gamma() puisque n! = Γ(n + 1). On
pose alors
fact = function(n){gamma(n+1)}
L’algorithme d’Hastings-Métropolis s’écrit alors
PoissonHastingMetropolis = function(n,lambda, x0){
X = x0 ; xn = x0
for (i in 1 :n){
xnCandidat = xn + (2 * rbinom(1,1,0.5) - 1)
critere = min(1,lambdaˆ(xnCandidat-xn)*fact(xn)/fact(xnCandidat))
if ((runif(1)) < critere){ xn = xnCandidat }
X = c(X,xn)
}
X
}
On appelle Vect = PoissonHastingMetropolis(10000,10,3) puis ont visualize à l’aide de la
commande hist(Vect).
La figure 5 permet de visualiser l’évolution de cette chaîne sur un grand nombre de valeurs. On
peut voir l’impact du choix de la valeur d’initialisation de chaîne à droite.
2.2 Gibbs
On veut déterminer la prévalence1 d’un virus dans des dons de sang répartis sur plusieurs zones
géographiques, à l’aide d’un dosage ELISA. Le test n’étant pas parfait, la proportion θ de tests
ELISA positifs n’est pas la même que la proportion p d’échantillons effectivement contaminés.
On définit deux variables élatoires binaires D et T.
( (
1 si l’échantillon sanguin est infecté 1 si le Tets ELISA est positif
D: et T :
0 sinon 0 sinon
1
Probabilité qu’un échantillon sanguin soit infecté
6
Hasting Metropolis pour une loi de Poisson Hasting Metropolis pour une loi de Poisson
100
8
80
6
60
40
4
20
2
0
0 20 40 60 80 100 0 200 400 600 800 1000
0.10
0.08
8
Valeur en k+1
Probabilités
0.06
6
0.04
4
0.02
0.00
2
2 4 6 8 10 0 5 10 15 20
Valeur en k
Fig. 6 – Réalisation Xk .
7
Durant sa mise au point le test ELISA a été pratiqué sur des individus infectés et d’autres sains.
On a alors les informations suivantes :
Sensibilité h = P (T = 1|D = 1) = 99%
Spécificité q = P (T = 0|D = 0) = 97%
P(D = 1) = P(D = 1|T = 0)(P(T = 0|D = 0)P(D = 0) + P(T = 0|D = 1)P(D = 1))
+P(D = 1|T = 1)(P(T = 1|D = 0)P(D = 0) + P(T = 1|D = 1) ∗ P(D = 1))
P(D = 1) = P(D = 1|T = 0)(P(T = 0|D = 0)(1 − P(D = 1)) + P(T = 0|D = 1)P(D = 1))
+P(D = 1|T = 1)(P(T = 1|D = 0)(1 − P(D = 1)) + P(T = 1|D = 1)P(D = 1))
8
P(D = 1) = P(D = 1|T = 0)P(T = 0|D = 0) + P(D = 1|T = 1)P(T = 1|D = 0)
+P(D = 1)(P(D = 1|T = 0)(P(T = 0|D = 1) − P(T = 0|D = 0))
+P(D = 1|T = 1)(P(T = 1|D = 1) − P(T = 1|D = 0)))
d’où
(P(D = 1|T = 0)P(T = 0|D = 0) + P(D = 1|T = 1)P(T = 1|D = 0))
P(D = 1) =
(1 − P(D = 1|T = 0)(P(T = 0|D = 1) − P(T = 0|D = 0)) − P(D = 1|T = 1)(P(T = 1|D = 1) −
On peut aussi utiliser l’algorithme de Gibbs pour simuler un couple (X, Y ) de variables gaus-
siennes centrées réduits, de corrélation ρ.
En effet, on connaît alors les deux lois conditionnelles,
(
X|Y = y ∼ N (ρy, 1 − ρ2 ),
y|X = x ∼ N (ρx, 1 − ρ2 ).
On peut alors utiliser successivement le principe de Gibbs pour simuler une chaîne de Markov
(Xn , Yn ), où Yn+1 dépend de Xn+1 , qui dépendra lui même de Yn ,... etc.
Notons que, conditionnellement à X0 , la loi de Xn est une loi N (ρ2n X0 , 1 − ρ4n ). Aussi Xn →
n→∞
N (0, 1).
Aussi, on en déduit que
à !¯ Ãà ! à !!
Xn ¯¯ ρ2n x0 1 − ρ4n ρ(1 − ρ4n )
¯ X0 = x0 ∼ N , ,
Yn ¯ ρ2n+1 x0 ρ(1 − ρ4n ) 1 − ρ4n+2
et donc quand n → ∞
à !¯ Ãà ! à !!
Xn ¯ 0 1 ρ
¯
¯ X0 = x0 → N , .
Yn ¯ 0 ρ 1