首页 > 解决方案 > 计算观察的下一个状态

问题描述

我正在尝试根据从转换矩阵中提取的给定概率向量计算下一个状态。

probs <- structure(c(0.876896837675484, 0.101918293545303, 0.0189210190005101, 
0.00220982524291829, 5.40245357842536e-05), .Names = c("State 1", 
"State 2", "State 3", "State 4", "State 5"))

其中 probs 代表概率向量,下一步是计算给定二项分布的输出。

set.seed(1)
rbinom(n = 5,size = 1,prob = probs)

其中 n 是观察次数(在本例中为状态 1 --> 状态 5),size 是试验次数(1 次成功或 0 次失败),prob 是每次观察成功的概率,函数返回以下输出:

1,0,0,0,0

所以我假设更可能的输出是一步后的状态 1,但有时我会得到以下信息:

1,0,1,0,0

但那是不可能的,因为这个人应该只能从他的上一步进入某个状态。

任何人都知道如何解决这个问题?

谢谢你的时间

已解决:我应该使用 rmultinom 而不是 rbinom

标签: rmarkov-chainsbinomial-cdf

解决方案


rbinom函数不计算马尔可夫过程中的转换。它以特定概率从各种可能性中随机抽取。如果您想要单次运行 5 状态转换过程,其中一开始有 5 个项目处于状态 1,您将创建一个起始值 c(5,0,0,0,0) 的向量。然后,您将指定一个转换矩阵,其中指定了所有可能转换的概率。在这种情况下,它需要是一个 5x5 矩阵。您的概率向量可以是第一行,然后是在下一个时间间隔内从状态 1 到任何其他状态的概率。但是您还需要说明其他州可能是。如果它们正在吸收状态,那么它们的第 i 个元素将为 1,因此这可能是矩阵:

  trans <- matrix( c(0.876896837675484, 0.101918293545303, 0.0189210190005101, 0.00220982524291829, 5.40245357842536e-05,

                     0,1,0,0,0,
                     0,0,1,0,0,
                     0,0,0,1,0,
                     0,0,0,0,1), nrow=5, byrow=TRUE, dimnames= list( from=c("State 1", 
"State 2", "State 3", "State 4", "State 5") , to = c("State 1", 
"State 2", "State 3", "State 4", "State 5") ))

trans
         to
from        State 1   State 2    State 3     State 4      State 5
  State 1 0.8768968 0.1019183 0.01892102 0.002209825 5.402454e-05
  State 2 0.0000000 1.0000000 0.00000000 0.000000000 0.000000e+00
  State 3 0.0000000 0.0000000 1.00000000 0.000000000 0.000000e+00
  State 4 0.0000000 0.0000000 0.00000000 1.000000000 0.000000e+00
  State 5 0.0000000 0.0000000 0.00000000 0.000000000 1.000000e+00

现在您可以将其应用于计数的起始(或连续)向量。然后该结果将是序列中的下一个状态。它可以通过随机抽签的确定性方法来完成。


推荐阅读