deeptime.markov.tools.estimation.transition_matrix¶
- deeptime.markov.tools.estimation.transition_matrix(C, reversible=False, mu=None, method='auto', maxiter: int = 1000000, maxerr: float = 1e-08, rev_pisym: bool = False, return_statdist: bool = False, warn_not_converged: bool = True)¶
Estimate the transition matrix from the given countmatrix. [1] [2] [3]
- Parameters:
C (numpy ndarray or scipy.sparse matrix) – Count matrix
reversible (bool (optional)) – If True restrict the ensemble of transition matrices to those having a detailed balance symmetry otherwise the likelihood optimization is carried out over the whole space of stochastic matrices.
mu (array_like) – The stationary distribution of the MLE transition matrix.
method (str) – Select which implementation to use for the estimation. One of ‘auto’, ‘dense’ and ‘sparse’, optional, default=’auto’. ‘dense’ always selects the dense implementation, ‘sparse’ always selects the sparse one. ‘auto’ selects the most efficient implementation according to the sparsity structure of the matrix: if the occupation of the C matrix is less then one third, select sparse. Else select dense. The type of the T matrix returned always matches the type of the C matrix, irrespective of the method that was used to compute it.
maxiter (int, optional, default=1000000) – Optional parameter with reversible = True. maximum number of iterations before the method exits
maxerr (float, optional, default=1e-8) – Optional parameter with reversible = True. convergence tolerance for transition matrix estimation. This specifies the maximum change of the Euclidean norm of relative stationary probabilities (). The relative stationary probability changes are used in order to track changes in small probabilities. The Euclidean norm of the change vector, , is compared to maxerr.
rev_pisym (bool, optional, default=False) – Fast computation of reversible transition matrix by normalizing . is the direct (nonreversible) estimate and is its stationary distribution. This estimator is asympotically unbiased but not maximum likelihood.
return_statdist (bool, optional, default=False) – Optional parameter with reversible = True. If set to true, the stationary distribution is also returned
return_conv (bool, optional, default=False) – Optional parameter with reversible = True. If set to true, the likelihood history and the pi_change history is returned.
warn_not_converged (bool, optional, default=True) – Prints a warning if not converged.
- Returns:
result – The MLE transition matrix and optionally the stationary distribution if return_statist=True. The transition matrix has the same data type (dense or sparse) as the input matrix C.
- Return type:
Union[array_like, Tuple[array_like, np.ndarray]]
Notes
The transition matrix is a maximum likelihood estimate (MLE) of the probability distribution of transition matrices with parameters given by the count matrix.
References
Examples
>>> import numpy as np >>> from deeptime.markov.tools.estimation import transition_matrix
>>> C = np.array([[10, 1, 1], [2, 0, 3], [0, 1, 4]])
Non-reversible estimate
>>> T_nrev = transition_matrix(C) >>> print(np.array_str(T_nrev, precision=3)) [[0.833 0.083 0.083] [0.4 0. 0.6 ] [0. 0.2 0.8 ]]
Reversible estimate
>>> T_rev = transition_matrix(C, reversible=True) >>> print(np.array_str(T_rev, precision=3)) [[0.833 0.104 0.063] [0.351 0. 0.649] [0.049 0.151 0.8 ]]
Reversible estimate with given stationary vector
>>> mu = np.array([0.7, 0.01, 0.29]) >>> T_mu = transition_matrix(C, reversible=True, mu=mu) >>> print(np.array_str(T_mu, precision=3)) [[0.948 0.006 0.046] [0.429 0. 0.571] [0.111 0.02 0.869]]