Comment simuler une chaîne de Markov et observer son état stable en Python ?
Approfondissement — Simuler la trajectoire aléatoire d'une chaîne de Markov sur un graphe fini et estimer empiriquement sa loi stationnaire.
Météo simple : trois états (Soleil, Nuageux, Pluie) avec matrice de transition . Estimer la loi stationnaire par simulation sur jours.
Approfondissement — Simuler la trajectoire aléatoire d'une chaîne de Markov sur un graphe fini et estimer empiriquement sa loi stationnaire.
Si est la matrice de transition (ligne = loi conditionnelle sachant l'état ), alors numpy.random.choice(range(r), p=M[i]) tire l'état suivant avec la bonne probabilité ; pour une chaîne irréductible apériodique, la fréquence empirique des états converge vers l'unique état stable vérifiant .
Météo simple : trois états (Soleil, Nuageux, Pluie) avec matrice de transition . Estimer la loi stationnaire par simulation sur jours.
Je code la matrice :
import numpy as np
M = np.array([[0.7, 0.2, 0.1],
[0.3, 0.4, 0.3],
[0.2, 0.3, 0.5]])
assert np.allclose(M.sum(axis=1), 1)
Je fixe l'état initial et la longueur :
N = 10_000
etat = 0 # on part de Soleil
traj = np.zeros(N+1, dtype=int)
traj[0] = etat
Je simule la chaîne :
for n in range(N):
etat = np.random.choice(3, p=M[etat])
traj[n+1] = etat
Je calcule les fréquences empiriques :
freq = np.array([(traj == k).mean() for k in range(3)])
print(freq) # ex: [0.45, 0.27, 0.28]
Les fréquences sont proches de l'état stable théorique .
L'état stable empirique vaut environ , en accord avec le calcul théorique de tel que .
Modèle de mobilité sociale à deux classes (A et B) : . Estimer la proportion stationnaire d'individus en classe A.
Mini PageRank sur trois pages avec . Estimer le score de chaque page.
Chaîne de Markov à deux états de matrice . Estimer la loi stationnaire en Python par simulation sur étapes.
Chaîne de Markov à trois états de matrice . Estimer en Python la proportion de temps dans chaque état sur étapes.
Crée ton compte pour accéder à la fiche et aux exercices