预测拟合HMM模型的未来排放

时间:2017-07-22 19:20:10

标签: r hidden-markov-models

我使用R中的HMM包为我的数据拟合hmm.discnp模型,如下所示:

library(hmm.discnp)
zs <- hmm(y=lis,K=5)

现在我想预测该模型的未来K观测(排放)。但我只能通过Viterbi算法获得我已经拥有的观测结果的最可能状态序列。

我已经有t次排放,即(y(1),...,y(t)) 我希望来自拟合K对象的最可能的未来HMM发射,即(y(t+1),...y(t+k))

有计算这个的功能吗?如果没有,那么我该如何手动计算呢?

1 个答案:

答案 0 :(得分:0)

从HMM生成排放非常简单,可以手动完成。我对R不是很熟悉,但我在这里解释了生成数据的步骤。

要记住的第一件事是,由于它的马尔可夫性质,HMM没有记忆。在任何时候,只知道当前状态,之前发生的事情是“被遗忘”。这意味着,t+1时间样本的生成仅取决于样本t

如果你有序列,你可以做的第一件事就是像你一样拟合最可能的状态序列(使用维特比算法)。现在,您知道生成最后一次观察的状态(您表示y(t)的那个)。

现在,从这个状态,您知道由于转换矩阵而转换到模型的每个其他状态的概率。这是一个概率质量函数(pmf),你可以从这个pmf中绘制一个状态数字(不是手工绘制!R应该有一个内置函数从pmf中绘制一个样本)。您绘制的州号是您的系统在t+1时的状态。

有了这些信息,你现在可以从分配给这个新状态的概率函数中绘制一个样本观察(在这里,如果它是高斯分布,则使用应该存在于R中的高斯随机生成器)。

从此状态t+1开始,您现在可以应用相同的步骤在t+2时间到达某个州,依此类推。

请注意,如果您多次执行此完整程序(从时间t+1生成数据样本到t+k),您将得到不同的结果。这是由于模型的概率性质。我不确定most probable future emissions你的意思,我不确定是否有一些惯例或不这样做。您可以计算最终获得的完整序列的可能性(从1t+k)。一般来说,作为最后一部分的序列最多t的可能性是从模型本身真正生成的,因此在某些方面“完全”适合。