hmm.discnp (version 0.2-0)

viterbi: Most probable state sequence.

Description

Calculates ``the'' most probable state sequence underlying each of one or more replicate observation sequences.

Usage

viterbi(y, object = NULL, tpm, Rho, ispd=NULL)

Arguments

y
The observations for which the underlying most probable hidden states are required. May be a sequence of observations, or a list each entry of which constitutes an independent sequence of observations. If y is missing (and if ob
object
An object describing a hidden Markov model, as fitted to the data set y by hmm().
tpm
The transition probability matrix for a hidden Markov model; ignored if object is non-null.
Rho
A matrix specifying the probability distributions of the observations for a hidden Markov model; ignored if object is non-null. Should bear some reasonable relationship to y. If Rho has row names then these mu
ispd
The initial state probability distribution for a hidden Markov model; ignored if object is non-null. Should bear some reasonable relationship to y. If object and ispd are both NULL the

Value

  • If y consists of a single observation sequence, the value is the underlying most probable observation sequence, or a matrix whose columns consist of such sequences if there is more than one (equally) most probable sequence.

    If y consists of a list of observation sequences, the value is a list each entry of which is of the form described above.

Warning

There may be more than one equally most probable state sequence underlying a given observation sequence. This phenomenon appears to be unlikely to occur in practice.

Details

Applies the Viterbi algorithm to calculate ``the'' most probable robable state sequence underlying each observation sequences.

References

Rabiner, L. R., "A tutorial on hidden Markov models and selected applications in speech recognition," Proc. IEEE vol. 77, pp. 257 -- 286, 1989.

See Also

hmm(), sim.hmm(), mps(), pr()

Examples

Run this code
# See the help for sim.hmm() for how to generate y.num and y.let.
fit.num <- hmm(y.num,K=2,verb=TRUE)
v.1 <- viterbi(object=fit.num)
v.2 <- viterbi(y.num,tpm=P,Rho=R) # P and R as in the
                                  # help for sim.hmm().
# The order of the states has gotten swapped; 3-v.1[[1]] is much
# more similar to v.2[[1]] than is v.1[[1]].

fit.let <- hmm(y.let,K=2,verb=TRUE)
v.3 <- viterbi(object=fit.let)    # Works.
v.4 <- viterbi(y.let,tpm=P,Rho=R) # Throws an error (R has no row names.)

Run the code above in your browser using DataLab