计算矩阵中多个序列的转移矩阵

时间:2017-04-18 12:08:46

标签: r matrix transition markov-chains markov

大家好我正在尝试计算矩阵中每行所呈现的每个序列的转移矩阵。例如,我有一个矩阵:

    dat<-matrix(c('a','b','c','a','a','a','b','b','a','c','a','a','c','c','a'),nrow = 3)

   > `
        [,1] [,2] [,3] [,4] [,5]
    [1,] "a"  "a"  "b"  "c"  "c" 
    [2,] "b"  "a"  "b"  "a"  "c" 
    [3,] "c"  "a"  "a"  "a"  "a" `

我可以使用

轻松计算单行的转换矩阵
    > `mylistMc<-markovchainFit(data=dat[1,])`

我得到了正确的结果

    > `      
     a   b  c
        a 0.5 0.5 0
        b 0.0 0.0 1
        c 0.0 0.0 1`

然后我尝试使用

    > `mc<-markovchainListFit(data=dat[1,])`

但是结果很奇怪,它给出了4个矩阵而不是3个(我想它可能需要列而不是行),我相信MarkovChainListFit用于多个序列,我只是不知道如何使用它。 有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:0)

尝试一下:

mc <- apply(t(dat),2,function(x) markovchainFit(x))
trans_mat <- list(mc[[1]][[1]],mc[[2]][[1]],mc[[3]][[1]])