2012-05-20 72 views
2

我需要一些關於此錯誤的幫助。我正嘗試在R中使用HMM包構建一個HMM模塊。我無法理解我的代碼出了什麼問題。錯誤在訓練使用Baum-Welch算法的HMMR中的HMM包中的錯誤

lathmm = initHMM(c("S","M1","M2","M3","M4","E"),c("m","i"),c(1,0,0,0,0,0), 
+ matrix(c( 0,0,0,0,0,0, 
+    1,0,0,0,0,0, 
+    0,1,0,0,0,0, 
+    0,0,1,0,0,0, 
+    0,0,0,1,0,0, 
+    0,0,0,0,1,1 
+   ),6,6), 
+ matrix(c(0,.5,.5,.5,.5,.5, 
+   0,.5,.5,.5,.5,.5 
+   ),6,2)) 
> 
> print(lathmm) 
$States 
[1] "S" "M1" "M2" "M3" "M4" "E" 

$Symbols 
[1] "m" "i" 

$startProbs 
S M1 M2 M3 M4 E 
1 0 0 0 0 0 

$transProbs 
    to 
from S M1 M2 M3 M4 E 
    S 0 1 0 0 0 0 
    M1 0 0 1 0 0 0 
    M2 0 0 0 1 0 0 
    M3 0 0 0 0 1 0 
    M4 0 0 0 0 0 1 
    E 0 0 0 0 0 1 

$emissionProbs 
     symbols 
states m i 
    S 0.0 0.0 
    M1 0.5 0.5 
    M2 0.5 0.5 
    M3 0.5 0.5 
    M4 0.5 0.5 
    E 0.5 0.5 

- >在初始化HMM時沒有問題。

鮑姆 - 韋爾奇培訓:

> prot = sample(c(rep("m",100),rep("m",300))) 
> bw = baumWelch(lathmm,prot,10) 
Error in if (d < delta) { : missing value where TRUE/FALSE needed 

- >這是錯誤。

任何人都可以幫助我解決這個問題。我不確定這個模塊有什麼問題。

+0

你解決了嗎?下面的答案似乎不適用於所需的解決方案。我也遇到了與我的數據相同的問題。 – areyoujokingme

回答

1

試試看看你的初始化部分爲obs。概率。矩陣。如果將前兩個probs(狀態「S」)更改爲零以外的值,baumwelch算法就可以正常工作。我使用RStudio來運行它。

0

當'initHMM'中定義的一個或多個符號未出現在觀察值中時,會發生這種情況。

在你的情況下,你定義符號「我」和「米」,但你的觀察只包含「米」。

在調用'baumWelch'之前添加一些「i」或刪除調用'initHMM'中的符號。