我使用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))
。
有计算这个的功能吗?如果没有,那么我该如何手动计算呢?
答案 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
你的意思,我不确定是否有一些惯例或不这样做。您可以计算最终获得的完整序列的可能性(从1
到t+k
)。一般来说,作为最后一部分的序列最多t
的可能性是从模型本身真正生成的,因此在某些方面“完全”适合。