Generate data using Markov Chain models in Python
2 min readNov 18, 2023
In this short blog post, you will see one way of producing data from a Discrete Time Markov chain in Python. I will not discuss what Markov chains are, so if you are unfamiliar with them, please take a quick look on the internet. The only library used in the code is numpy
.
Now, consider the following Markov chain {Xt, t = 0, 1, 2, . . .} with the transition probability matrix:
P = [[0.2, 0.3, 0.5],
[0 , 0.3, 0.7],
[0.5, 0.4, 0.1]]
on the state space {0, 1, 2} and transition diagram as depicted below:
The following code snippet is a python code to synthesize data using simulation for this Markov chain.
import numpy as np
# initialize your markov chain matrix
P = np.array([[0.2, 0.3, 0.5], [0, 0.3, 0.7], [0.5, 0.4, 0.1]])
# initialize your states
states = [0, 1, 2]
# select a random state to begin with
state_now = np.random.choice(states,1)
# initialize the previos state
state_prev = None
# number of travels in your markov chain diagram
iter = 10
for i in range(iter):
# get the vector of probabilities to go from the current state to all other states
prob = P[state_now]
# select the next satet based on the probability vector of above
next_state = np.random.choice(states,1, p=prob[0])
# update the current state and the previous state
state_prev = state_now
state_now = next_state
# print the transition
print(state_prev, ' -> ', state_now)