我计算了具有四个亚稳态的马尔可夫状态模型的转移矩阵。我想知道亚稳态之间转变的概率,为此我认为我应该获得一个 4x4 矩阵。
我试图用这段代码获取所述矩阵,但事实证明,在该矩阵的某些条目中出现了大于1的值,这对我来说似乎很奇怪:
nstates = 4
transition_matrix_meta = np.zeros((nstates, nstates))
for i in range(nstates):
for j in range(nstates):
pi_i = msm.pi[msm.metastable_sets[i]].sum()
T_i_to_j = msm.transition_matrix[msm.metastable_sets[i]][:,
msm.metastable_sets[j]]
P_i_to_j = pi_i * T_i_to_j.sum()
transition_matrix_meta[i, j] = P_i_to_j
print(transition_matrix_meta)
我的代码正确吗?
您的代码似乎位于右侧,但可能存在规范化问题。
transition_matrix_meta 总和为 1
nstates = 4
transition_matrix_meta = np.zeros((nstates, nstates))
for i in range(nstates):
for j in range(nstates):
pi_i = msm.pi[msm.metastable_sets[i]].sum()
T_i_to_j = msm.transition_matrix[msm.metastable_sets[i]][:, msm.metastable_sets[j]]
P_i_to_j = pi_i * T_i_to_j.sum()
transition_matrix_meta[i, j] = P_i_to_j
# Normalize the rows
transition_matrix_meta = transition_matrix_meta / transition_matrix_meta.sum(axis=1, keepdims=True)
print(transition_matrix_meta)