r - 模拟马尔可夫链的概率数不正确

标签 r markov-chains markov

我的转移概率矩阵是这样的

             BP          IP             SP 


BPBP     0.4586757     0.3772354     0.1640889

IPBP     0.3489484     0.4746654     0.1763862

SPBP     0.3756522     0.4162319     0.2081159

BPIP     0.3646061     0.4640000     0.1713939

IPIP     0.2666122     0.5654956     0.1678922

SPIP     0.3054187     0.4860427     0.2085386

BPSP     0.4125561     0.3974215     0.1900224

IPSP     0.2974337     0.5069415     0.1956247

SPSP     0.3576642     0.4333942     0.2089416

从中模拟一阶 MC 的代码是

  function(trans,initprob,N)
  {
  BrokerPosition <- c("BP", "IP", "SP")
  mysequence<-character()
  firstposition <- sample(BrokerPosition, 1, rep=TRUE, prob=initprob)
  mysequence[1]   <- firstposition
  for (i in 2:N){
   prevposition <- mysequence[i-1]
   probabilities  <- trans[,prevposition]
   BPosition<- sample(BrokerPosition, 1, rep=TRUE, prob=probabilities)
   mysequence[i]  <- BPosition
                }
  return(mysequence)
  } 

但由于这是一个非方阵,我收到概率不匹配的错误,知道如何解决这个问题

最佳答案

您以错误的方向使用转换矩阵: 尝试使用

trans[ paste( mysequence[c(i-2,i-1)], collapse="" ), ]

另一种方法是将二阶马尔可夫链转换为一阶马尔可夫链: 例如,之后的状态 IPBP 将是 BPIP、BPBP、BPSP(其他 IP* 和 SP* 的概率为零)。 那么转移矩阵是一个带有很多零的 9*9 矩阵。

关于r - 模拟马尔可夫链的概率数不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16253725/

相关文章:

algorithm - "Anagram solver"基于统计数据而不是字典/表?

machine-learning - 首次访问与每次访问 Monte Carlo

r - 以编程方式在变化的变量上调用group_by()

r - 检查逻辑回归中的线性

text - 用于生成随机但真实的文本的库或工具

用于 DTMC 稳态解决方案的 Java 库

python - 余弦波的贝叶斯拟合花费的时间比预期的要长

matlab - 遍历马尔可夫链平稳分布 : solving eqns

r - 单个列表中的近似字符串匹配 - r

r - 为什么我的 Shiny 应用程序没有发布