- 如何在给定转移概率矩阵的情况下获得马尔可夫链的稳态分布阐述了什么是转移概率矩阵,并演示了通过使用该矩阵的幂来达到稳态分布;
- 如何找到矩阵何时收敛的循环使用R循环来确定矩阵幂何时收敛。
以上方法直接,但非常昂贵。如果我们有一个顺序为n
的转移矩阵,则每次迭代都要计算矩阵-矩阵乘法,其成本为O(n ^ 3)
。
有更有效的方法吗?我想到的一件事是使用特征值分解。已知马尔可夫矩阵:
- 可以在复数域中对角化:
A = E * D * E^{-1}
; - 具有实特征值为1和其他(复数)特征值的长度小于1。
稳态分布是与特征值1相关联的特征向量,即第一个特征向量。
好吧,理论很好,但我无法使其工作。将第一个链接问题中的矩阵P
取出:
P <- structure(c(0, 0.1, 0, 0, 0, 0, 0, 0.1, 0.2, 0, 0, 0, 0, 0, 0.2,
0.3, 0, 0, 0.5, 0.4, 0.3, 0.5, 0.4, 0, 0, 0, 0, 0, 0.6, 0.4,
0.5, 0.4, 0.3, 0.2, 0, 0.6), .Dim = c(6L, 6L))
如果我执行以下操作:
Re(eigen(P)$vectors[, 1])
# [1] 0.4082483 0.4082483 0.4082483 0.4082483 0.4082483 0.4082483
根据之前的问题,现在发生了什么?静态分布是:
# [1] 0.002590673 0.025906737 0.116580322 0.310880848 0.272020713 0.272020708