2

私の遷移確率行列はこのようなものです

             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)
  } 

しかし、これは非正方行列であるため、確率の不一致のエラーが発生しています。これを解決する方法はありますか

4

1 に答える 1

2

遷移行列を間違った方向に使用しています: 試してみてください

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

別の方法は、2 次マルコフ連鎖を 1 次マルコフ連鎖に変換することです。たとえば、IPBP の後の状態は BPIP、BPBP、BPSP になります (その他の IP* と SP* の確率はゼロになります)。遷移行列は、多数のゼロを含む 9*9 行列です。

于 2013-04-27T15:42:29.937 に答える