hmmfit: fit a hidden Markov model

View source: R/hmm_functions.R

hmmfitR Documentation

fit a hidden Markov model

Description

Estimates parameters of a HMM using the EM algorithm.

Usage

hmmfit(x,start.val,mstep=mstep.norm,lock.transition=FALSE,tol=1e-08,maxit=1000) 

Arguments

x

A hsmm.data object (see Details)

start.val

Starting parameters for the model (see Details)

mstep

Re-estimates the parameters of density function on each iteration

lock.transition

If TRUE will not re-estimate the transition matrix

maxit

Maximum number of iterations

tol

Convergence tolerance

Value

start

A vector of the starting probabilities for each state

a

The transition matrix of the embedded Markov chain

emission

A list of the parameters of the emission distribution

Author(s)

Jared O'Connell jaredoconnell@gmail.com

References

Jared O'Connell, Soren Hojsgaard (2011). Hidden Semi Markov Models for Multiple Observation Sequences: The mhsmm Package for R., Journal of Statistical Software, 39(4), 1-22., URL http://www.jstatsoft.org/v39/i04/.

Rabiner, L. (1989), A tutorial on hidden Markov models and selected applications in speech recognition, Proceedings of the IEEE, 77, 257-286.

See Also

predict.hmm

Examples

J<-3
initial <- rep(1/J,J)
P <- matrix(c(.8,.5,.1,0.05,.2,.5,.15,.3,.4),nrow=J)
b <- list(mu=c(-3,0,2),sigma=c(2,1,.5))
model <- hmmspec(init=initial, trans=P, parms.emission=b,dens.emission=dnorm.hsmm)
model

train <- simulate(model, nsim=300, seed=1234, rand.emis=rnorm.hsmm)
plot(train,xlim=c(0,100))

init0 <- rep(1/J,J)
P0 <- matrix(1/J,nrow=J,ncol=J)
b0 <- list(mu=c(-3,1,3),sigma=c(1,1,1))
startval <- hmmspec(init=init0, trans=P0,parms.emission=b0,dens.emission=dnorm.hsmm) 
h1 = hmmfit(train,startval,mstep=mstep.norm)

plot(h1$loglik,type='b',ylab='Log-likelihood',xlab='Iteration')
summary(h1)

#proportion of incorrect states
mean(train$s!=predict(h1,train)$s)

#simulate a new test set 
test <- simulate(model, nsim=c(100,200,300), seed=1234,rand.emis=rnorm.hsmm)
mean(test$s!=predict(h1,test)$s)

mhsmm documentation built on Aug. 23, 2023, 9:06 a.m.