Note: This page has been translated by MathWorks. Click here to see

To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

Hidden Markov model parameter estimates from emissions and states

`[TRANS,EMIS] = hmmestimate(seq,states)`

hmmestimate(...,'Symbols',SYMBOLS)

hmmestimate(...,'Statenames',STATENAMES)

hmmestimate(...,'Pseudoemissions',PSEUDOE)

hmmestimate(...,'Pseudotransitions',PSEUDOTR)

`[TRANS,EMIS] = hmmestimate(seq,states)`

calculates
the maximum likelihood estimate of the transition, `TRANS`

,
and emission, `EMIS`

, probabilities of a hidden Markov
model for sequence, `seq`

, with known states, `states`

.

`hmmestimate(...,'Symbols',SYMBOLS)`

specifies the symbols that are
emitted. `SYMBOLS`

can be a numeric array, a string array or a cell array
of the names of the symbols. The default symbols are integers 1 through N, where N is the
number of possible emissions.

`hmmestimate(...,'Statenames',STATENAMES)`

specifies the names of the
states. `STATENAMES`

can be a numeric array, a string array, or a cell
array of the names of the states. The default state names are 1 through
`M`

, where `M`

is the number of states.

`hmmestimate(...,'Pseudoemissions',PSEUDOE)`

specifies
pseudocount emission values in the matrix `PSEUDOE`

.
Use this argument to avoid zero probability estimates for emissions
with very low probability that might not be represented in the sample
sequence. `PSEUDOE`

should be a matrix of size *m*-by-*n*,
where *m* is the number of states in the hidden Markov
model and *n* is the number of possible emissions.
If the $$i\to k$$ emission does not occur in `seq`

,
you can set `PSEUDOE(i,k)`

to be a positive number
representing an estimate of the expected number of such emissions
in the sequence `seq`

.

`hmmestimate(...,'Pseudotransitions',PSEUDOTR)`

specifies
pseudocount transition values. You can use this argument to avoid
zero probability estimates for transitions with very low probability
that might not be represented in the sample sequence. `PSEUDOTR`

should
be a matrix of size *m*-by-*m*,
where *m* is the number of states in the hidden Markov
model. If the $$i\to j$$ transition does
not occur in `states`

, you can set `PSEUDOTR(i,j)`

to
be a positive number representing an estimate of the expected number
of such transitions in the sequence `states`

.

If the probability of a specific transition or emission is very
low, the transition might never occur in the sequence `states`

,
or the emission might never occur in the sequence `seq`

.
In either case, the algorithm returns a probability of 0 for the given
transition or emission in `TRANS`

or `EMIS`

.
You can compensate for the absence of transition with the `'Pseudotransitions'`

and `'Pseudoemissions'`

arguments.
The simplest way to do this is to set the corresponding entry of `PSEUDOE`

or `PSEUDOTR`

to `1`

.
For example, if the transition $$i\to j$$ does
not occur in `states`

, set ```
PSEUDOTR(i,j)
= 1
```

. This forces `TRANS(i,j)`

to be positive.
If you have an estimate for the expected number of transitions $$i\to j$$ in a sequence of the same length
as `states`

, and the actual number of transitions $$i\to j$$ that occur in `seq`

is
substantially less than what you expect, you can set `PSEUDOTR(i,j)`

to
the expected number. This increases the value of `TRANS(i,j)`

.
For transitions that do occur in states with the frequency you expect,
set the corresponding entry of `PSEUDOTR`

to `0`

,
which does not increase the corresponding entry of `TRANS`

.

If you do not know the sequence of states, use `hmmtrain`

to
estimate the model parameters.

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., S. Eddy, A. Krogh, and
G. Mitchison. *Biological Sequence Analysis*.
Cambridge, UK: Cambridge University Press, 1998.