【问题标题】:Markov Transition Probability Matrix Implementation in PythonPython中的马尔可夫转移概率矩阵实现
【发布时间】:2019-02-08 03:29:03
【问题描述】:

我正在尝试计算一个序列的一步、两步转换概率矩阵,如下所示:

sample = [1,1,2,2,1,3,2,1,2,3,1,2,3,1,2,3,1,2,1,2]
import numpy as np

def onestep_transition_matrix(transitions):
    n = 3 #number of states

    M = [[0]*n for _ in range(n)]

    for (i,j) in zip(transitions,transitions[1:]):
        M[i-1][j-1] += 1

    #now convert to probabilities:
    for row in M:
        s = sum(row)
        if s > 0:
            row[:] = [f/s for f in row]
    return M

one_step_array = np.array(onestep_transition_matrix(sample))

我的问题,我们如何计算两步转换矩阵。因为当我手动计算矩阵时,如下所示:

two_step_array = array([[1/7,3/7,3/7],
                       [4/7,2/7,1/7],
                       [1/4,3/4,0]])

但是。 np.dot(one_step_array,one_step_arrary) 给了我一个不同的结果,如下所示:

array([[0.43080357, 0.23214286, 0.33705357],
   [0.43622449, 0.44897959, 0.11479592],
   [0.20089286, 0.59821429, 0.20089286]])

请告诉我哪个是正确的。

【问题讨论】:

    标签: python numpy matrix scipy markov


    【解决方案1】:

    您只需要更改 for 循环中的转换索引:

    def twostep_transition_matrix(transitions):
        n = 3 #number of states
    
        M = [[0]*n for _ in range(n)]
    
        for (i,j) in zip(transitions,transitions[2:]):
            M[i-1][j-1] += 1
    
        #now convert to probabilities:
        for row in M:
            s = sum(row)
            if s > 0:
                row[:] = [f/s for f in row]
        return M
    

    【讨论】:

    • 这意味着两步转换矩阵与矩阵Power 2不同。我的理解是否正确?
    • 是的,两者都不一样
    • 不同的是上面是实际的两步传递矩阵,而幂是在一步传递矩阵的基础上对两步传递矩阵的估计 .在如此小的样本量下,即使您的马尔可夫过程是无记忆的,估计值和实际情况也不太可能相同。
    • @ErnestSKirubakaran,这行row[:] = [f/s for f in row] 的原因是什么?为什么我们不能直接分配给row?对不起,我是python的新手。
    • @Mark 在 for 循环中,row 是指向矩阵 M 中特定行的对象。如果我们给出 row[:] = [f/s for f in row] ,该行的引用将从M中的对应行变为新行[f/s for f in row]。但是 M 中的原始行不会改变。如果我们想改变M中的行,我们需要给row[:] = [f/s for f in row]
    猜你喜欢
    • 2018-04-01
    • 2023-03-14
    • 2013-01-02
    • 1970-01-01
    • 2019-02-07
    • 1970-01-01
    • 2018-03-21
    • 2021-03-16
    • 1970-01-01
    相关资源
    最近更新 更多