3

我有一个长度为 1000 的连续单变量 xts 对象,我已将其转换为名为 x 的 data.frame 以供 package 使用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

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

4

1 回答 1

3

下一个预测值使用最后一个隐藏状态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))
于 2012-07-26T05:27:57.653 回答