Q = rbind(
c(-1, 0.4, 0.6),
c(0.8 / 3, -1 / 3, 0.2 / 3),
c(0.9 / 5, 0.1 / 5, -1 / 5)
)Stationary Distributions and Long Run Behavior of CTMCs
Seagull
compute_stationary_distribution_ctmc <- function(Q){
s = nrow(Q)
Pi = rep(1,s) %*% solve(diag(s) - Q + matrix(rep(1, s * s) - diag(s), ncol = s))
return(Pi)
}pi_ctmc = compute_stationary_distribution_ctmc(Q)
pi_ctmc [,1] [,2] [,3]
[1,] 0.1701389 0.2395833 0.5902778
P = rbind(
c(0, 0.4, 0.6),
c(0.8, 0, 0.2),
c(0.9, 0.1, 0)
)pi_dtmc = compute_stationary_distribution(P)
pi_dtmc [,1] [,2] [,3]
[1,] 0.4622642 0.2169811 0.3207547
pi_ctmc = pi_dtmc * 1 / -diag(Q)
pi_ctmc = pi_ctmc / sum(pi_ctmc)Starting from stationary distribution
library(expm)pi_ctmc %*% expm(Q * 0.01) [,1] [,2] [,3]
[1,] 0.1701389 0.2395833 0.5902778
Q = [[-1, 0.4, 0.6],
[0.8 / 3, -1 / 3, 0.2 / 3],
[0.9 / 5, 0.1 / 5, -1 / 5]]
pi0 = [0.1701389, 0.2395833, 0.5902778]
states = [1, 2, 3]
X = ContinuousTimeMarkovChain(Q, pi0, states)
plt.figure();
X[0.1].sim(10000).plot()
plt.show();
pi_ctmc %*% expm(Q * 0.1) [,1] [,2] [,3]
[1,] 0.1701389 0.2395833 0.5902778
pi_ctmc %*% expm(Q * 1) [,1] [,2] [,3]
[1,] 0.1701389 0.2395833 0.5902778
pi_ctmc %*% expm(Q * 10) [,1] [,2] [,3]
[1,] 0.1701389 0.2395833 0.5902778
Starting from each of the 3 states
expm(Q * 0.01) [,1] [,2] [,3]
[1,] 0.990060488 0.0039740406 0.0059654717
[2,] 0.002649559 0.9966775877 0.0006728529
[3,] 0.001789509 0.0002030498 0.9980074414
expm(Q * 0.1) [,1] [,2] [,3]
[1,] 0.90583424 0.037497750 0.056668008
[2,] 0.02501751 0.967728516 0.007253975
[3,] 0.01698773 0.002290251 0.980722020
expm(Q * 1) [,1] [,2] [,3]
[1,] 0.4208177 0.22068969 0.3584926
[2,] 0.1483652 0.74940800 0.1022268
[3,] 0.1067220 0.03810031 0.8551777
expm(Q * 2) [,1] [,2] [,3]
[1,] 0.2480892 0.27191543 0.4799953
[2,] 0.1845306 0.59824988 0.2172195
[3,] 0.1418295 0.08468766 0.7734828
expm(Q * 5) [,1] [,2] [,3]
[1,] 0.1744734 0.2635399 0.5619867
[2,] 0.1832125 0.3755968 0.4411907
[3,] 0.1635832 0.1774727 0.6589441
expm(Q * 10) [,1] [,2] [,3]
[1,] 0.1706563 0.2447028 0.5846409
[2,] 0.1729511 0.2676561 0.5593928
[3,] 0.1688483 0.2267135 0.6044382
expm(Q * 20) [,1] [,2] [,3]
[1,] 0.1701608 0.2398022 0.5900369
[2,] 0.1702592 0.2407833 0.5889576
[3,] 0.1700838 0.2390332 0.5908831