Скрытые оценки параметров модели Маркова по выбросам и состояниям
[TRANS,EMIS] = hmmestimate(seq,states)
hmmestimate(...,'Symbols',SYMBOLS)
hmmestimate(...,'Statenames',STATENAMES)
hmmestimate(...,'Pseudoemissions',PSEUDOE)
hmmestimate(...,'Pseudotransitions',PSEUDOTR)
[TRANS,EMIS] = hmmestimate(seq,states) вычисляет оценку максимального правдоподобия перехода, TRANSи эмиссия, EMIS, вероятности скрытой модели Маркова для последовательности, seq, с известными состояниями, states.
hmmestimate(...,'Symbols',SYMBOLS) определяет символы, которые излучаются. SYMBOLS может быть числовым массивом, строковым массивом или массивом ячеек имен символов. Символами по умолчанию являются целые числа от 1 до N, где N - количество возможных излучений.
hmmestimate(...,'Statenames',STATENAMES) задает имена состояний. STATENAMES может быть числовым массивом, строковым массивом или массивом ячеек имен состояний. Имена состояний по умолчанию: от 1 до M, где M - количество состояний.
hmmestimate(...,'Pseudoemissions',PSEUDOE) задает значения выбросов псевдокоунта в матрице PSEUDOE. Используйте этот аргумент, чтобы избежать нулевых вероятностных оценок для выбросов с очень низкой вероятностью, которые могут не быть представлены в последовательности выборки. PSEUDOE должен быть матрицей размера m-by-n, где m - число состояний в скрытой марковской модели, а n - число возможных выбросов. Если выброс не происходит в seq, можно установить PSEUDOE(i,k) положительное число, представляющее оценку ожидаемого количества таких выбросов в последовательности seq.
hmmestimate(...,'Pseudotransitions',PSEUDOTR) задает значения перехода псевдокоунта. Этот аргумент можно использовать, чтобы избежать нулевых оценок вероятности для переходов с очень низкой вероятностью, которые могут не быть представлены в последовательности выборки. PSEUDOTR должен быть матрицей размера m-by-m, где m - число состояний в скрытой марковской модели. Если переход i→j не происходит в states, можно установить PSEUDOTR(i,j) положительное число, представляющее оценку ожидаемого числа таких переходов в последовательности states.
Если вероятность конкретного перехода или выброса очень мала, переход может никогда не произойти в последовательности states, или эмиссия может никогда не произойти в последовательности seq. В любом случае алгоритм возвращает вероятность 0 для данного перехода или излучения в TRANS или EMIS. Вы можете компенсировать отсутствие перехода с помощью 'Pseudotransitions' и 'Pseudoemissions' аргументы. Самый простой способ сделать это - установить соответствующую запись PSEUDOE или PSEUDOTR кому 1. Например, если перехода не происходит в states, комплект PSEUDOTR(i,j) = 1. Эти силы TRANS(i,j) быть позитивным. При наличии оценки для ожидаемого числа переходов в последовательности той же длины, что и statesи фактическое количество переходов, которые происходят в seq существенно меньше, чем вы ожидаете, вы можете установить PSEUDOTR(i,j) до ожидаемого числа. Это увеличивает значение TRANS(i,j). Для переходов, которые происходят в состояниях с ожидаемой частотой, установите соответствующую запись PSEUDOTR кому 0, что не увеличивает соответствующую запись TRANS.
Если последовательность состояний неизвестна, используйте hmmtrain для оценки параметров модели.
trans = [0.95,0.05; 0.10,0.90]; emis = [1/6 1/6 1/6 1/6 1/6 1/6; 1/10 1/10 1/10 1/10 1/10 1/2]; [seq,states] = hmmgenerate(1000,trans,emis); [estimateTR,estimateE] = hmmestimate(seq,states);
[1] Дурбин, Р., С. Эдди, А. Крог и Г. Митчисон. Анализ биологических последовательностей. Кембридж, Великобритания: Cambridge University Press, 1998.