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"
)
```

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")
```