4

このエラーについて助けが必要です。R で HMM パッケージを使用して HMM モジュールをビルドしようとしています。コードの何が問題なのか理解できません。Baum-Welch アルゴリズムを使用した 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 の初期化に問題はありません。

Baum-Welch トレーニング:

> 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

→これがエラーです。

誰でもこれについて私を助けることができますか?このモジュールの何が問題なのかわかりません。

4

2 に答える 2

1

これは、'initHMM' で定義された 1 つ以上のシンボルが観測に現れない場合に発生します。

あなたの場合、シンボル「i」と「m」を定義しますが、観測には「m」しか含まれていません。

「baumWelch」を呼び出す前に「i」を追加するか、「initHMM」の呼び出しで記号を削除してください。

于 2015-11-10T16:59:59.137 に答える
1

obsの初期化部分を見てみてください。問題。マトリックス。最初の 2 つの確率 (状態 "S" の場合) をゼロ以外に変更すると、baumwelch アルゴは正常に機能します。RStudio を使用して実行します。

于 2012-06-13T03:01:16.647 に答える