Check whether a Markov chain is stochastically monotone
Source:R/probabilistic.R
is.stochasticallyMonotone.RdA Markov chain on ordered states is stochastically monotone if starting from a higher state never makes the next state stochastically smaller: for every pair of consecutive states \(i\), \(i + 1\) and every \(j\), \(\sum_{l \le j} P_{i+1, l} \le \sum_{l \le j} P_{i, l}\).
Usage
is.stochasticallyMonotone(object)
# S4 method for class 'markovchain'
is.stochasticallyMonotone(object)
# S4 method for class 'matrix'
is.stochasticallyMonotone(object)
# S4 method for class 'ANY'
is.stochasticallyMonotone(object)Arguments
- object
A
markovchainobject, or a row-stochastic transition matrix.
Details
The states are taken in the order of the transition matrix, and the inequalities are checked up to a tolerance of \(10^{-10}\).
References
Keilson, J. and Kester, A. (1977). Monotone matrices and monotone Markov processes. Stochastic Processes and their Applications 5(3), 231-241.
Examples
# a birth-death chain is monotone
P <- matrix(c(0.7, 0.3, 0,
0.2, 0.5, 0.3,
0, 0.4, 0.6), nrow = 3, byrow = TRUE,
dimnames = list(c("low", "mid", "high"), c("low", "mid", "high")))
is.stochasticallyMonotone(new("markovchain", transitionMatrix = P))
#> [1] TRUE
# reversing the order of the rows breaks monotonicity
is.stochasticallyMonotone(P[3:1, ])
#> [1] FALSE