2012-07-25 23 views
3

我有一個長度爲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 

與往常一樣,任何幫助將不勝感激!

回答

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))