Create and Modify Markov Chain Model Objects
A state transition matrixPcharacterizes a discrete-time, time-homogeneous Markov chain. For details on supported forms ofP, seeDiscrete-Time Markov Chain Object Framework Overview. If you have a theoretical or empirical state transition matrix, create a Markov chain model object by usingdtmc
. Otherwise, you can create a Markov chain from a randomly generated transition matrix of a specified structure, such as the number of infeasible transitions, by usingmcmix
.
Create Markov Chain from Stochastic Transition Matrix
This example shows how to create a Markov chain object to model a hypothetical economic cycle using a stochastic transition matrix.
Suppose that the dynamic behavior of the real US gross domestic product (GDP) switches between four models:
Regime 1: An autoregressive model with a low mean and low volatility
Regime 2: An autoregressive model with a low mean and high volatility
Regime 3: An autoregressive model with a high mean and low volatility
Regime 4: An autoregressive model with a high mean and high volatility
Consider this right-stochastic transition matrix containing the probabilities of state transitions between time stepstandt+ 1, for allt.
For example, means the probability that real GDP transitions from Regime 2 to Regime 3 in the next time step is 0.5.
Set the transition matrix to a variable.
P = [0.5 0.5 0.0 0.0; 0.5 0.0 0.5 0.0; 0.0 0.0 0.0 1.0; 0.0 0.0 1.0 0.0];
Create a Markov chain object characterized by the transition matrixP.
mc = dtmc(P)
mc = dtmc with properties: P: [4x4 double] StateNames: ["1" "2" "3" "4"] NumStates: 4
mc
is adtmc
object. MATLAB® displays properties and corresponding values ofmc
at the command line.
The association of names to the states enhances displays of function output and plots of the chain. When you create the Markov chain object, you can associate names to the states by using the'StateNames'
name-value pair argument. After you create the object, you can associate names to the states by setting theStateNames
property using dot notation.
助理的名字to the states inmc
by using dot notation. Elements of the string vector containing the names correspond to the rows and columns ofP
.
stateNames = ["Regime 1""Regime 2""Regime 3""Regime 4"]; mc.StateNames = stateNames;
Plot a digraph of the Markov chain.
figure; graphplot(mc);
After creating and plotting the Markov chain, you can determine characteristics of the chain, such as its stationary distribution by usingasymptotics
or its state distribution evolution by using再分配
.
Create Markov Chain from Random Transition Matrix
This example shows how to create a Markov chain object from a right-stochastic transition matrix that is randomly generated. Such a Markov chain is convenient for exploration and testing.
Create a random Markov chain object containing five arbitrary states.
rng(1);% For reproducibilitynumStates = 5; mc = mcmix(numStates)
mc = dtmc with properties: P: [5x5 double] StateNames: ["1" "2" "3" "4" "5"] NumStates: 5
mc
is adtmc
object.
Display the transition matrix and verify that the sum of every row is 1.
mc.P
ans =5×50.3259 0.0358 0.1149 0.3602 0.1632 0.0298 0.1478 0.2409 0.2626 0.3189 0.0162 0.3982 0.3469 0.1166 0.1221 0.0944 0.2965 0.0102 0.4389 0.1600 0.3439 0.2710 0.2938 0.0404 0.0509
sum(mc.P,2)
ans =5×11.0000 1.0000 1.0000 1.0000 1.0000
Plot a digraph of the Markov chain. Indicate probabilities of transition by using edge colors.
figure; graphplot(mc,'ColorEdges',真正的);
Specify Structure for Random Markov Chain
This example shows how to specify certain infeasible transitions and randomly distribute others within a transition matrix for a Markov chain.
Create a six-state Markov chain from a random transition matrix. Plot its digraph and indicate transition probabilities by using edge colors.
rng(1);% For reproducibilitynumStates = 6; mc1 = mcmix(numStates); figure; graphplot(mc1,'ColorEdges',真正的)
mcmix
produces a Markov chain such that all states are persistent and all states are reachable from any other state.
Create another six-state Markov chain, but without any persistent states and with 12 other infeasible transitions in random locations in the transition matrix.
Fix = ones(numStates) - eye(numStates); Fix(Fix == 1) = NaN; zeros = 12; mc2 = mcmix(numStates,'Zeros',zeros,'Fix',Fix);
Display the transition matrix ofmc2
. Plot a digraph ofmc2
and indicate transition probabilities by using edge colors.
mc2.P
ans =6×60 0.4845 0 0.0344 0 0.4811 0.5107 0 0.0791 0 0 0.4102 0.1397 0.2701 0 0.2954 0.2948 0 0.4767 0.5233 0 0 0 0 0.3710 0 0.5550 0 0 0.0740 0.0179 0.1947 0.7874 0 0 0
figure; graphplot(mc2,'ColorEdges',真正的)