首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >模拟马尔可夫链的概率数不正确

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

Stack Overflow用户
提问于 2013-04-27 23:17:47
回答 1查看 631关注 0票数 2

我的转移概率矩阵如下

代码语言:javascript
运行
复制
             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的代码是

代码语言:javascript
运行
复制
  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)
  } 

但由于这是一个非方阵,我得到了一个概率不匹配的错误,有没有办法解决这个问题

EN

回答 1

Stack Overflow用户

发布于 2013-04-27 23:42:30

您在错误的方向上使用了转换矩阵:尝试使用

代码语言:javascript
运行
复制
trans[ paste( mysequence[c(i-2,i-1)], collapse="" ), ]

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16253725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档