从数据序列构建一阶马尔可夫链转移矩阵(Java,Matlab)

时间:2013-11-19 11:35:57

标签: java matlab transitions markov-chains

我想从给定的一组数据序列(即点击流数据)估计一阶马尔可夫链的转移概率矩阵。可能在java中,否则Matlab没问题。

我将每个序列放在不同的文件中(当然我可以将所有序列合并到一个文件中),其中一个问题是我没有序列的标准长度。 我知道状态空间,我只对状态转换感兴趣。

我读过这个:Estimate Markov Chain Transition Matrix in MATLAB With Different State Sequence Lengths但我不确定它是否符合我的问题。 我也想知道是否有Java库来处理这个问题。如果是这样,我无法找到它们。

1 个答案:

答案 0 :(得分:2)

您必须创建一个计算过渡的矩阵。

对于行1,4,4,6,7

你必须设置

M(1,4)=M(1,4)+1
M(4,4)=M(4,4)+1
M(4,6)=M(4,6)+1
M(6,7)=M(4,7)+1

最后将每一行标准化为1。

更新:使用char索引。 Matlab可以使用double('A')将每个字符转换为数字,因此它是简单的索引移位。

char2index=@(x)(double(x)-'A'+1)
index2char=@(x)(char(x+'A'-1))
M(char2index('A'),char2index('B'))=M(char2index('A'),char2index('B'))+1

第二个函数index2char将索引转换回字符。