假设是的泊松转移速率,其中矩阵为表示的速率状态转变到状态,和给出的速率在哪个状态下,过渡到所有其他状态。每一行总和为0。Bn×nBij≥0i≠jijBii≤0iB
然后,如果表示时间处的概率分布,则根据的定义,我们有ODE
我们知道这种ODE的解是什么样的:其中,是矩阵指数的。所以,如果我们想生成马尔科夫转移矩阵后,,我们需要有。p(t)tB
p˙(t)=Bp(t)
p(t)=eBtp(0)eBtBtBAt=1eB=A
原则上,获得,我们需要反转的矩阵指数,采取矩阵对数的。问题在于每个矩阵都有许多矩阵对数-一维复空间中的对数具有无限多个分支,当我们讨论维空间中的矩阵时,这是复杂的。这些对数中的大多数都不是令人满意的泊松转换矩阵:也许它们不是真实的,或者条目没有正确的符号。然而,可能会有不止一个的情况:在某些情况下,对应于马尔可夫泊松超过一个,就像在某些情况下没有泊松BAnBAB对应于。太乱了A
幸运的是,有一种情况是生活相对简单,几乎可以肯定包括您自己的情况:当所有特征值都是正的,不同的实数时A。在这种情况下,只有对数是实数,并且很容易计算:您只需将矩阵对角化为并取特征值的实对数,得到,其中。事实上,你并不需要这样做自己:如果你使用命令在Matlab(大概是Python的太),它会给你正是这种。AA=VΣV−1B=VΩV−1ωii=log(σii)logm(A)B
给定这个,您要做的就是验证它实际上是泊松矩阵。第一个要求是所有行的总和为零,这是由于的构造而自动满足的。**第二个要求是对角元素为负,非对角元素为正,这并不总是成立的(我认为),但您可以轻松进行检查。BB
为了了解这一点,我将为类似于离散化AR(1)的三态马尔可夫过程
考虑一个
现在,如果我在Matlab中输入,得到
这确实是有效的泊松转换矩阵,因为我们可以轻松地检查一下行的总和为零并具有正确的符号-所以这就是我们的答案。A
A=⎛⎝⎜0.50.20.10.40.60.40.10.20.5⎞⎠⎟
B=logm(A)B=⎛⎝⎜−0.860.400.060.80−0.800.800.060.40−0.86⎞⎠⎟
特征值为正的情况非常重要,因为它涵盖了所有在马尔可夫链中没有某种振荡行为(需要负或复杂的特征值)的情况,大概包括离散化的AR(1)。
更一般地,在Matlab上的命令将为我们提供主矩阵对数,这是一个主标量对数的类似物,该标量对数采用所有特征值在和之间具有虚部。问题是,这并不一定是我们想要的对数,并看着它,我们可能会错过一个泊松,做产生。(这就是为什么我们不必担心这一点的正特征值情况是如此之好。)尽管如此,即使在其他情况下,尝试查看它是否有效也无济于事。logm−ππBA
顺便说一下,关于是否存在一个生成马尔可夫矩阵已得到广泛研究。这就是所谓的可嵌入性问题:请参阅Davies在这篇出色的调查文章中的概述和参考。不过,我不是问题的技术方面的专家;这个答案更多地基于我自己的骇客经验和直觉。BA
我要结束对ecksc的评论,并说可能会有更好,更直接的方法将离散拟合的AR(1)转换为有限状态连续时间过程,而不是仅仅采用通过Tauchen方法获得的矩阵和使它连续。但是我个人不知道更好的方法是什么!
**说明(尽管我很生疏):具有唯一的Perron-Frobenius特征值1,并且由于是随机的,因此该特征值的右特征向量就是单位向量。当我们采用矩阵对数时,这仍然是正确的特征向量,现在特征值为0。AAe