估计马尔可夫链概率

机器算法验证 马尔科夫过程
2022-03-11 23:55:07

给定时间序列,估计 MC 转换矩阵的常用方法是什么?

是否有 R 函数可以做到这一点?

3个回答

由于时间序列是离散值的,您可以通过样本比例估计转移概率。Yt成为当时的过程状态t,P那么是转移矩阵

Pij=P(Yt=j|Yt1=i)

由于这是一个马尔可夫链,这个概率只取决于Yt1,所以可以通过样本比例来估计。nik是进程从状态移动的次数ik. 然后,

P^ij=nijk=1mnik

在哪里m是可能的状态数(m=5在你的情况下)。分母,k=1mnik, 是离开状态的总次数i. 以这种方式估计条目实际上对应于转移矩阵的最大似然估计量,将结果视为多项式,条件为Yt1.

编辑:这确实假设您以均匀间隔观察到时间序列。否则,转移概率也将取决于时间滞后(即使它们仍然是马尔可夫)。

假设您的时间序列是固定的,这非常好:

简化宏的优秀答案

在这里,您有 5 个状态的时间序列:A、B、C、D、E

AAAEDDDCBEEEDBADBECADAAAACCCDDE

您只需要先计算转换: - 离开 A:9 个转换在这 9 个转换中,5 个是 A->A,0 个 A->B,1 个 A->C,2 个 A->D,1 个 A->E所以你的转移概率矩阵的第一行是 [5/9 0 1/9 2/9 1/9]

您对每个状态进行计数,然后获得 5x5 矩阵。

markovchain 包中的函数 markovchainFit 处理您的问题。