Viterbi algorithm for state decoding in inhomogeneous HMMs
viterbi_g.Rd
The Viterbi algorithm allows one to decode the most probable state sequence of an HMM.
Arguments
- delta
initial distribution of length N, or matrix of dimension c(k,N) for k independent tracks, if
trackID
is provided- Gamma
array of transition probability matrices of dimension c(N,N,n-1), as in a time series of length n, there are only n-1 transitions
If an array of dimension c(N,N,n) is provided for a single track, the first slice will be ignored.
If
trackID
is provided,Gamma
needs to be an array of dimension c(N,N,n), where n is the number of rows inallprobs
. Then for each track the first transition matrix will be ignored.- allprobs
matrix of state-dependent probabilities/ density values of dimension c(n, N)
- trackID
optional vector of k track IDs, if multiple tracks need to be decoded separately
See also
Other decoding functions:
stateprobs()
,
stateprobs_g()
,
stateprobs_p()
,
viterbi()
,
viterbi_p()
Examples
delta = c(0.5, 0.5)
Gamma = array(dim = c(2,2,99))
for(t in 1:99){
gammas = rbeta(2, shape1 = 0.4, shape2 = 1)
Gamma[,,t] = matrix(c(1-gammas[1], gammas[1],
gammas[2], 1-gammas[2]), nrow = 2, byrow = TRUE)
}
allprobs = matrix(runif(200), nrow = 100, ncol = 2)
states = viterbi_g(delta, Gamma, allprobs)