2012-05-20 8 views
2

이 오류에 대한 도움이 필요합니다. 나는 R에서 HMM 패키지를 사용하여 HMM 모듈을 만들려고 노력하고있다. 나는 코드에 무엇이 잘못되었는지를 이해할 수 없다.HMM 패키지 R의 오류

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 초기화에 문제가 없습니다. 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

ob32에 대해 초기화 부분을보십시오. prob. 매트릭스. 처음 두 개의 probes (상태 "S")를 0 이외의 값으로 변경하면 baumwelch algo는 정상적으로 작동합니다. RStudio를 사용하여 실행합니다.

0

'initHMM'에 정의 된 하나 이상의 기호가 관측치에 나타나지 않을 때 발생합니다.

귀하의 경우에는 "i"와 "m"기호를 정의하지만 귀하의 관찰은 "m"만 포함합니다.

'baumWelch'를 호출하거나 'initHMM'호출에서 심볼을 삭제하기 전에 'i'를 일부 추가하십시오.