2017-07-22 81 views
1

未來的排放,我安裝使用hmm.discnpHMM模型我的數據在R作爲如下:預測從擬合HMM模型

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

現在我想預測從這個模型未來ķ意見(排放) 。但我只能通過Viterbi算法獲得最有可能的狀態序列。

我已經有t排放,即(y(1),...,y(t))
我希望最有可能的將來K排放來自裝配的HMM對象,即(y(t+1),...y(t+k))

有沒有函數來計算這個?如果不是那麼我該如何手動計算它?

回答

0

從手動生成HMM排放非常簡單。我對R並不十分熟悉,但我在這裏解釋如何根據您的要求生成數據的步驟。

首先要記住的是,由於其馬爾可夫性質,HMM沒有記憶。在任何時候,只有當前狀態是已知的,以前發生的事情是「被遺忘」的。這意味着在時間t+1處生成樣本僅取決於時間t處的樣本。

如果你有一個序列,你可以做的第一件事就是像你一樣使用最可能的狀態序列(用維特比算法)。現在,您知道產生最後一次觀察的狀態(您表示y(t))。

現在,從這種狀態,您知道由於轉換矩陣而轉移到模型的每個其他狀態的概率。這是一個概率質量函數(pmf),您可以從這個pmf中繪製一個狀態編號(不是手工的!R應該有一個內置函數來從pmf中繪製一個樣本)。您繪製的州編號是您的系統時間爲t+1的狀態。使用此信息,您現在可以從分配給此新狀態的概率函數(如果它是高斯分佈,使用應存在於R中的高斯隨機生成器,此處相同)繪製樣本觀察值。

從此狀態t+1,現在可以應用相同的過程來達到時間t+2等的狀態。請注意,如果您多次執行此完整過程(以生成從時間t+1t+k的數據樣本),您將得到不同的結果。這是由於模型的概率性質。我不確定你的意思是most probable future emissions,我不確定是否有一些例程或不這樣做。您可以計算最後獲得的完整序列的可能性(從1t+k)。通常情況下,作爲最後部分的序列可能性高達t真正由模型本身產生,因此「完全」符合某些方面。