Скрытые оценки параметров марковской модели от выбросов и состояний
[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)
задает значения перехода pseudocount. Можно использовать этот аргумент, чтобы избежать нулевых оценок вероятности для переходов с очень низкой вероятностью, которые могут не быть представлены в выборочной последовательности. PSEUDOTR
должна быть матрицей размера m -by - m, где m - количество состояний в скрытой модели Маркова. Если переход не происходит в 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.