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

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

问题描述:

我有一个长度为1000的连续单变量xts对象,我已将其转换为一个名为x的数据框,供包RHmm使用。从HMM高斯混合分布中获取下一个观察结果

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

我所追求的是下一次观察的预期平均值。我该如何着手解决这个问题?

那么我到目前为止是:

  1. 从运行HMMFit()功能
  2. 一组的均值和方差为每个在混合物中的高斯分布的,其各自沿着转移矩阵所有这些也都是从HMMFit()函数生成的
  3. 当使用HMMFit函数的输出并将其放入viterbi函数
  4. 时,与输入数据相关的过去隐藏状态的列表

我该如何去获得下一个隐藏状态(即,我得到的第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))