为马尔可夫链生成向量的转移矩阵?

时间:2017-01-23 23:39:56

标签: matrix

Y = C(5,5,5,5,4,5,3,5,3,3,4,2,5,5,3,1,1,3,3,4,1,5 ,1,1,3,3,2,5,1,5,1,5,5,5,5,2,1,4,1,1,1,2,4,5,5,1,4 ,2,4,1,3,4,2,2,5,2,2,5,5)

P< - 矩阵(nrow = 5,NcoI位= 5,0) for(t in 1:(length(x)-1))p [x [t],x [t + 1]]< -p [x [t],x [t + 1]] + 1 for(i in 1:5)p [i,]< -p [i,] / sum(p [i,])

我正与5个州合作。

我一直收到这个错误,我不知道如何解决它 p [x [t],x [t + 1]]:下标超出范围

时出错

另外,有没有人使用打包的markovchain成功生成转换矩阵?

1 个答案:

答案 0 :(得分:0)

我认为warning: large integer implicitly truncated to unsigned type [-Woverflow] 是每个时间步的状态向量。

我要做的是创建一个y,其中每一行对应一个像这样的状态转换:

data.frame

然后按每个可能的过渡进行汇总:

df <- data.frame(
    t.one = y[-length(y)],
    t.next = y[-1],
    p = 1 / (length(y) - 1)  # 1 / <number of transitions>
)

然后创建一个矩阵并用汇总数据填充它:

pr.df <- aggregate(p ~ t.one + t.next, data=df, FUN=sum)

并验证您的概率总和为1.0:mat <- matrix(nrow=5, ncol=5, 0) for (k in 1:nrow(pr.df)) { i <- pr.df$t.one[k] j <- pr.df$t.next[k] mat[i,j] <- pr.df$p[k] }