| viterbi {tileHMM} | R Documentation |
The Viterbi algorithm computes the most likely sequence of states given an HMM and an observation sequence.
## S4 method for signature 'hmm': viterbi(hmm, obs, names=TRUE)
hmm |
Object of class hmm. |
obs |
A vector containing the observation sequence. |
names |
Logical indicating whether state names should be returned.
If TRUE (the default) the returned sequence consists of state names,
otherwise the state index is returned instead. |
A list with components
stateSeq |
Most likely state sequence. |
logProb |
The probability of stateSeq given hmm and obs. |
matrix |
The dynamic programming matrix. |
Peter Humburg
Viterbi, A. J. 1967 Error bounds for convolutional codes and an assymptotically optimal decoding algorithm. IEEE Transactions on Information Theory, 13, 2600–269.
## create two state HMM with t distributions
state.names <- c("one","two")
transition <- c(0.1, 0.02)
location <- c(1, 2)
scale <- c(1, 1)
df <- c(4, 6)
model <- getHMM(list(a=transition, mu=location, sigma=scale, nu=df),
state.names)
## obtain observation sequence from model
obs <- sampleSeq(model, 100, return.states=TRUE)
## compute most likely state sequence for obs
vit.res <- viterbi(model, obs$observation)
## how well did we do?
sum(vit.res$stateSeq == obs$states)/length(vit.res$stateSeq)