Chaines Markov
Chaines Markov
Chaines Markov
Pré-requis : je vous invite à consulter les chapitres de cours correspondants sur ma page (support
informatique). Pour ce TP, on pourra en particulier se reporter à la section « Tracés d’histogrammes »
du CH 8.
I Dans votre dossier Info_2a, créer le dossier TP_8.
D (2)
0.7 0.3
0.3 0.5
0.3
M (1) R (3)
0.5
1
ECE2-B 2019-2020
0 1
0 0.3 0.5
A = @ 0.7 0.4 0.5 A
0.3 0.3 0
En Scilab : A = [0, 0.3, 0.5 ; 0.7, 0.4, 0.5 ; 0.3, 0.3, 0]
I Déterminer P[X0 =j] ([X1 = i]). À quel cœfficient de la matrice A cela correspond-il ?
On a :
P[X0 =j] ([X1 = i]) = P[Xn =j] ([Xn+1 = i])
Ceci permet de démontrer que la matrice de transition est indépendante de n.
Cette propriété est appelée homogénéité.
I Soit (i0 , . . . , in , in+1 ) 2 J1, 3Kn+2 . Que vaut P[X0 =i0 ]\...\[Xn =in ] ([Xn+1 = in+1 ]) ?
On a :
P[X0 =i0 ]\...\[Xn =in ] ([Xn+1 = in+1 ]) = P[Xn =in ] ([Xn+1 = in+1 ])
Cette propriété est appelée propriété de Markov.
On la retient souvent par la phrase :
Le futur (la position Xn+1 à l’instant n + 1) ne dépend du passé (positions X0 , . . . , Xn )
que par le présent (la position Xn à l’instant n).
Remarque
• Il est classique de faire l’étude d’une grandeur aléatoire qui varie dans le temps discret. Par exemple,
on peut étudier :
⇥ l’évolution du prix d’une action jour après jour,
⇥ l’évolution du gain d’un joueur après chaque partie d’un jeu,
⇥ le déplacement d’un mobile (d’une puce) sur les sommets d’un carré (ou sur un axe gradué),
(c’était le cas du sujet EDHEC 2017)
⇥ ...
Lorsque l’évolution se fait de sorte que l’état à un instant ne dépend que de l’état à l’instant précédent,
on est dans le cadre de la chaîne de Markov.
• Même si le mot chaîne de Markov n’apparaît que dans le programme d’informatique (et donc pas
dans celui de maths), il est fréquent de voir ce type d’étude aux concours. Comme on va le voir,
cela permet de faire un sujet qui mêle les résultats des chapitres Probabilités (FPT, sce) et algèbre
linéaire (étude d’une matrice et des ses puissances).
2
ECE2-B 2019-2020
P
3
P([Xn+1 = 1]) = P([Xn = k] \ [Xn+1 = 1])
k=1
P3
= P([Xn = k]) ⇥ P[Xn =k] ([Xn+1 = 1])
k=1
= P([Xn = 1]) ⇥ P[Xn =1] ([Xn+1 = 1])
+ P([Xn = 2]) ⇥ P[Xn =2] ([Xn+1 = 1])
+ P([Xn = 3]) ⇥ P[Xn =3] ([Xn+1 = 1])
On remarque que la suite des puissances itérées (An ) semble converger vers une matrice
proche de : 0 1
0.27 0.27 0.27
@ 0.5 0.5 0.5 A
0.23 0.23 0.23
3
ECE2-B 2019-2020
0 1 0 1
0 0.3
Dans ce cas, on a U0 = @1A et U1 = A ⇥ U0 = @0.4A
0 0.3
I Rappeler l’ensemble image de X1 . Décrire le comportement que doit avoir une fonction simulant
X1 .
I Écrire, à l’aide de la fonction rand, une fonction simuX1 (sans paramètre d’entrée et dont la sortie
est stocké dans une variable x1) permettant de simuler la v.a.r. X1 dans le cas où x0 = 2.
On testera la fonction une dizaine de fois et on commentera le résultat obtenu.
4
ECE2-B 2019-2020
1 function x1 = simuX1(x0, A)
2 r = rand()
On peut faire le même
3 if r < A(1,x0) then
commentaire que dans
4 x1 = 1
le cas de la fonction
5 elseif r < A(1,x0) + A(2,x0) then
précédente. On gardera
6 x1 = 2
en tête le lien fort lien
7 else // r < A(1,x0) + A(2,x0) + A(3,x0)
simulation informatique
8 x1 = 3
et LfGN.
9 end
10 endfunction
5
ECE2-B 2019-2020
II.2. Parenthèse : simulation d’une v.a.r. suivant une loi finie quelconque
Dans la section précédente, on a codé une fonction permettant de simuler la v.a.r. X1 . On cherche ici
à écrire une fonction permettant de simuler une v.a.r. Y discrète finie quelconque.
On note Y (⌦) = {y1 , . . . , yn } et pour tout k 2 J1, nK, pn = P([Y = k]).
I Que vaut p1 + . . . + pn ?
• [0, p1 ] ]p1 + p2 , p1 + p2 + p3 ]
•
(cela se produit avec probabilité p1 ),(cela se produit avec probabilité p3 ),
• ]p1 , p1 + p2 ] • ...
(cela se produit avec probabilité p2 ),
• ]p1 + . . . + pn 1 , p1 + . . . + pn ]
(cela se produit avec probabilité pn ).
On rappelle que l’appel cumsum(P) permet d’obtenir [p1 , p1 + p2 , . . . , p1 + . . . + pn ].
I Coder la fonction simuY qui prend en paramètre une matrice ligne Y contenant les valeurs de Y (⌦)
et une matrice ligne P contenant les probabilités associées.
Cette fonction doit mettre en œuvre la stratégie précédente.
I Écrire une fonction simuMarkovEtape qui prend en paramètre l’état initial x0 du hamster et la
matrice A et renvoie un état possible du hamster (avec la bonne probabilité) au bout d’une heure.
1 function x = simuMarkovEtape(x0, A)
2 x = simuY(1:3, A(:,x0))
3 endfunction
6
ECE2-B 2019-2020
1 function x = simuMarkov(x0, A, n)
2 x = x0
3 for i = 1:n
4 x = simuMarkovEtape(x, A)
5 end
6 endfunction
Fonctionnalité Scilab
La simulation d’une trajectoire de taille n est implémentée dans Scilab.
Plus précisément, la commande grand(n,'markov', P',x0)
I Par quel appel utilisant la fonction grand peut-on obtenir le même type de simulation que l’appel
simuTrajectoire(x0, P, n) ?
[x0, grand(n,'markov',P',x0)]
7
ECE2-B 2019-2020
I Écrire un programme :
⇥ qui demande à l’utilisateur d’entrer la taille des trajectoires à simuler et stocke cette information
dans une variable tailleTraj,
⇥ qui demande à l’utilisateur d’entrer l’état initial et le stocke dans une variable x0,
⇥ qui calcule une trajectoire de longueur tailleTraj partant de l’état initial x0,
⇥ qui représente cette trajectoire à l’aide de la commande plot2d.
8
ECE2-B 2019-2020
6 // Distribution théorique
7 B = A^n
8 P = B(:,x0)
9
10 // Valeurs observées
11 Obs = zeros(1, N)
12 for i = 1:N
13 Obs(i) = simuMarkov(x0, A, n)
14 end
15
19 clf()
20 // Diagramme des fréquences observées
21 bar(v(:, 1) + 0.5, v(:,2)/N, width = 0.4, 'red')
22 // Diagramme de la distribution théorique
23 bar(1:3, P, width = 0.4)
9
ECE2-B 2019-2020
À terme, le hamster mange avec une probabilité d’environ 0.27, dort avec une probabilité
d’environ 0.5 et tourne dans sa roue avec une probabilité d’environ 0.23.
I Si l’on est capable de démontrer que la suite (Un ) converge vers une limite notée U1 , quelle relation
peut-on établir entre U1 et A ?
Si l’on est capable de montrer que Un converge (i.e. si tous ses cœfficients convergent) et si
on note U1 sa limite, l’égalité Un+1 = A ⇥ Un nous fournit, par passage à la limite :
U1 = A ⇥ U1
10
ECE2-B 2019-2020
• Lorsque le mobile est à un instant donné sur un sommet, il se déplace à l’instant suivant sur l’un
quelconque des trois autres sommets, et ceci de façon équiprobable.
Pour tout n 2 N, on note Xn la variable aléatoire égale au numéro du sommet sur lequel se situe le
mobile à l’instant n. D’après le premier des deux points précédents, on a donc X0 = 1.
I Expliquer comment choisir la position du mobile au départ pour trouver les trois autres lignes de
la matrice An .
11
ECE2-B 2019-2020
1 1
On écrivait alors A sous la forme : A = I + J avec les matrices I et J suivantes :
3 3
0 1 0 1
1 0 0 0 1 1 1 1
B0 1 0 0C B1 1 1 1C
I=B
@0
C et J =B C
0 1 0A @1 1 1 1A
0 0 0 1 1 1 1 1
✓ ◆n
1 1
et on déterminait An = I+ J par la formule du binôme de Newton.
3 3
1 A = [–––] /3
2 x = grand(100,'markov',A,1)
3 n = –––
4 disp(x)
5 disp(n)
1 A = [0, 1, 1, 1; 1, 0, 1, 1; 1, 1, 0, 1; 1, 1, 1, 0] /3
2 x = grand(100,'markov',A,1)
3 n = sum(x==1)
4 disp(x)
5 disp(n)
I Après avoir exécuté cinq fois ce script, les réponses concernant le nombre de fois où le mobile est
revenu sur le sommet 1 sont : n = 23, n = 28, n = 23, n = 25, n = 26.
En quoi est-ce normal ?
À chaque fois que 100 déplacements sont effectués, on note environ 25 retours en position
1. Cela correspond à la formule obtenue précédemment :
✓ ◆m
1 3 1
P([Xm = 1]) = +
4 4 3
✓ ◆m
1
avec qui se rapproche rapidement de 0.
3
12