r - 从 HMM 高斯混合分布中获取下一个观察结果

标签 r hidden-markov-models viterbi

我有一个长度为 1000 的连续单变量 xts 对象,我已将其转换为名为 x 的 data.frame,以供 RHmm 包使用。

我已经选择混合分布中有 5 个状态和 4 个高斯分布。

我想要的是下一次观察的预期平均值。我该如何获得它?

所以到目前为止我所拥有的是:

  1. 运行 HMMFit() 函数的转换矩阵
  2. 混合物中每个高斯分布的一组均值和方差以及它们各自的比例,所有这些也都是由 HMMFit() 函数生成
  3. 使用 HMMFit 函数的输出并将其放入 viterbi 函数时与输入数据相关的过去隐藏状态的列表

我将如何从我所获得的数据中获取下一个隐藏状态(即第 1001 个值),然后使用它从高斯分布中获取加权平均值。

我想我已经非常接近了,只是不太确定下一部分是什么...最后一个状态是状态 5,我是否以某种方式使用转换矩阵中的第 5 行来获取下一个状态?

我所追求的是下一次观察中预期的加权平均值,因此下一个隐藏状态甚至是不必要的。我是否要将第 5 行中的概率乘以每个均值,并根据每个州的比例进行加权?然后将它们加在一起?

这是我使用的代码。

# have used 2000 iterations to ensure convergence
a <- HMMFit(x, nStates=5, nMixt=4, dis="MIXTURE", control=list(iter=2000)
v <- viterbi(a,x)
a
v

一如既往,任何帮助将不胜感激!

最佳答案

下一个预测值使用最后一个隐藏状态 last(v$states) 从转换矩阵中获取概率权重 a$HMM$transMat[last(v$states),] 对于每个状态,分布均值 a$HMM$distribution$mean 按比例 a$HMM$distribution$proportion 进行加权,然后将其全部相乘并求和。因此,在上述情况下,结果如下:

sum(a$HMM$transMat[last(v$states),] * .colSums((matrix(unlist(a$HMM$distribution$mean), nrow=4,ncol=5)) * (matrix(unlist(a$HMM$distribution$proportion), nrow=4,ncol=5)), m=4,n=5))

关于r - 从 HMM 高斯混合分布中获取下一个观察结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11644522/

相关文章:

r - ggExtra绘图格式:不同绘图尺寸的相似边际绘图

r - R 中的多次重复(2 次、3 次、...)

java - Java中的维特比算法

r - 边界处估计的概率是什么意思?使用 depmixS4 包的 R 中的隐马尔可夫模型

nlp - 在实现用于词性标注的维特比算法时,HMM 中的开始和结束状态是否必要?

r - 如何根据\n位置拆分字符元素以创建向量

python - Sublime 编辑器2 : Key-bindings to send command to terminal

java - Mallet HMM 训练问题

python - 使用隐马尔可夫模型对数据流进行分类

algorithm - 如何找到用隐马尔可夫模型解决的问题示例?