Last data update: 2014.03.03

R: Prediction for hsmmspec
predict.hsmmspecR Documentation

Prediction for hsmmspec

Description

Predicts the underlying state sequence for an observed sequence newdata given a hsmm model

Usage

## S3 method for class 'hsmmspec'
predict(object, newdata, method = "viterbi",M=NA, ...)

Arguments

object

An object of type hsmmspec

newdata

A vector or dataframe of observations

method

Prediction method (see details)

M

Maximum number of time spent in a state (truncates the waiting distribution)

...

further arguments passed to or from other methods.

Details

If method="viterbi", this technique applies the Viterbi algorithm for HSMMs, producing the most likely sequence of states given the observed data. If method="smoothed", then the individually most likely (or smoothed) state sequence is produced, along with a matrix with the respective probabilities for each state. This method is different to predict.hsmm in that it takes the output from hsmmspec as input ie. it is useful for people who already know their model parameters.

Value

Returns a hsmm.data object, suitable for plotting.

newdata

A vector or data.frame of observations

s

A vector containing the reconstructed state sequence

N

The lengths of each sequence

p

A matrix where the rows represent time steps and the columns are the probability for the respective state (only produced when method="smoothed")

Author(s)

Jared O'Connell jaredoconnell@gmail.com

References

Guedon, Y. (2003), Estimating hidden semi-Markov chains from discrete sequences, Journal of Computational and Graphical Statistics, Volume 12, Number 3, page 604-639 - 2003

See Also

hsmmspec, predict.hsmm

Examples

J <- 3
init <- c(0,0,1)
P <- matrix(c(0,.1,.4,.5,0,.6,.5,.9,0),nrow=J)
B <- list(mu=c(10,15,20),sigma=c(2,1,1.5))
d <- list(lambda=c(10,30,60),shift=c(10,100,30),type='poisson')
model <- hsmmspec(init,P,parms.emission=B,sojourn=d,dens.emission=dnorm.hsmm)
train <- simulate(model,r=rnorm.hsmm,nsim=100,seed=123456)
mean(predict(model,train,M=500)$s!=train$s) #error rate when true model is known

Results