2014-01-30 28 views
0

有人告诉我的预期停留时间,为了计算预期的停留时间为一组状态,我可以用下面的办法:求解方程系统找到一个马尔可夫链

  1. 构建具有索引i的马尔可夫链,j是从状态i过渡到状态j的概率。
  2. 转置矩阵,以便每列包含该状态的入站概率。
  3. 反转对角线,使得值p变为(1-p)。
  4. 在底部添加一行,含有1的
  5. 构造具有0的一个系数向量和最后一个元素1
  6. 解决它。所产生的载体应包含的预期停留时间的各种状态

让我举一个例子:

我最初的马尔可夫链:

0.25 ; 0.25 ; 0.25 ; 0.25 
    0.00 ; 0.50 ; 0.50 ; 0.00 
    0.33 ; 0.33 ; 0.33 ; 0.00 
    0.00 ; 0.00 ; 0.50 ; 0.50 

1-3步之后,它看起来像这样:

0.75 ; 0.00 ; 0.33 ; 0.00 
    0.25 ; 0.50 ; 0.33 ; 0.00 
    0.25 ; 0.50 ; 0.67 ; 0.50 
    0.25 ; 0.00 ; 0.00 ; 0.50 

我添加的最后一行:

0.75 ; 0.00 ; 0.33 ; 0.00 
    0.25 ; 0.50 ; 0.33 ; 0.00 
    0.25 ; 0.50 ; 0.67 ; 0.50 
    0.25 ; 0.00 ; 0.00 ; 0.50 
    1.00 ; 1.00 ; 1.00 ; 1.00 

系数将是以下矢量:

0 ; 0 ; 0 ; 0 ; 1 

1的的添加行应执行,该解决方案总和为1。然而,我的解决方案是一组:

{0.42; 0.84; -0.79; 0.32} 

其中总和为0.79,所以显然有些错误。 我还注意到,状态3的预期停留时间是负的,这在我看来应该是不可能的。

我已经用Java实现了它,我使用Commons.Math来处理矩阵计算。我尝试了documentation中描述的各种算法,但我得到了相同的结果。

我也尝试用1的行替换其中一行,以使矩阵为正方形。当我这样做,我得到以下一组的解决方案:

{0.79; 0.79; -1.79; 1.2} 

即使概率之和为1,他们仍然必须是错误的,因为他们应该在范围0..1,总结为1

这是一个完全错误的方法来解决这个问题吗?我在哪里? 不幸的是,我不是很数学,但我希望我已经提供了足够的信息来看你的问题。

回答

0

我找到了答案:

让所有的概率p,但对角线是在步骤3 -p:

0.75 ; -0.00 ; -0.33 ; -0.00 
-0.25 ; 0.50 ; -0.33 ; -0.00 
-0.25 ; -0.50 ; 0.67 ; -0.50 
-0.25 ; -0.00 ; -0.00 ; 0.50