Quickly Generate a Markov Chain Model

R

A Markov Chain model can be very useful to understand a sequence of events. I usually extract the transition matrix from the model to understand, for example, the probability that the visitors of my website might do a certain action based on the previous action they performed. Here is a simple example using weather data:

Let’s install and load the markovchain library

install.packages("markovchain")
library(markovchain)

Generating a Dataset

Here I am creating a random sequence:

sequence = c("rainy", "rainy", "sunny", "cloudy", "rainy", "cloudy", "sunny", "cloudy", "rainy", "rainy", "rainy", "cloudy", "cloudy", "cloudy", "rainy", "sunny", "rainy")

Creating a Markov Chain Model

Let’s fit a Markov Chain Model to the sequence

mcFit = markovchainFit(data=sequence)
TrMat = mcFit$estimate

And plot the transition matrix

plot(TrMat, package = "diagram"
     , cex.txt = 0.6
     , box.size = 0.1
     , box.prop = 0.5
     , box.col = "light yellow"
     , box.lwd = 0.1
     , box.cex = 0.6
     , shadow.col = NULL
     , arr.width= 0.1
     , arr.length = 0.1
     , arr.lwd = 0.1
     , arr.type = "triangle"
     , arr.col = "gray"
     , arr.lcol = "gray"
     , self.cex = .6
     , main = "Markov Chain - Transition Matrix"
)

png

We can export the transition matrix as a dataframe and save it in a csv:

TrDf = as(TrMat, "data.frame")
write.csv(TrDf, file = "df - Markov Chain.csv")

Et voila!

Share this post: