Скрытый параметр модели Маркова оценивает от эмиссии и состояний
[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 является количеством состояний в скрытой модели Маркова. Если переход не происходит в 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] Durbin, R., С. Эдди, А. Крог и Г. Мичисон. Биологический анализ последовательности. Кембридж, Великобритания: Издательство Кембриджского университета, 1998.