Skip to contents

Decode hidden states from a fitted HMM

Usage

decode_sequence_states(
  model,
  data = NULL,
  sequence_id_col = "sequence_id",
  order_col = "sequence_order",
  state_col = "state",
  method = c("viterbi", "posterior"),
  component = NULL
)

Arguments

model

A fitted single HMM or HMM mixture.

data

Optional new long-format data. Training sequences are used when omitted.

sequence_id_col, order_col, state_col

Sequence columns for new data.

method

"viterbi" or "posterior".

component

Mixture component to decode. When omitted for a mixture, each sequence uses its highest-responsibility component.

Value

A long data frame containing decoded latent states and posterior probabilities where available.

Examples

sequences <- data.frame(
  sequence_id = rep(c("s1", "s2", "s3", "s4"), each = 4L),
  sequence_order = rep(1:4, times = 4L),
  state = c("A", "B", "C", "D", "A", "B", "C", "C",
            "D", "C", "B", "A", "D", "C", "A", "A"),
  group = rep(c("g1", "g2"), each = 8L),
  stringsAsFactors = FALSE
)
model <- fit_sequence_hmm(sequences, 2L, max_iter = 5L)
decode_sequence_states(model)
#>    sequence_id sequence_order observed_state component latent_state
#> 1           s1              1              A         1     latent_2
#> 2           s1              2              B         1     latent_2
#> 3           s1              3              C         1     latent_2
#> 4           s1              4              D         1     latent_2
#> 5           s2              1              A         1     latent_2
#> 6           s2              2              B         1     latent_2
#> 7           s2              3              C         1     latent_2
#> 8           s2              4              C         1     latent_2
#> 9           s3              1              D         1     latent_2
#> 10          s3              2              C         1     latent_2
#> 11          s3              3              B         1     latent_2
#> 12          s3              4              A         1     latent_2
#> 13          s4              1              D         1     latent_2
#> 14          s4              2              C         1     latent_2
#> 15          s4              3              A         1     latent_1
#> 16          s4              4              A         1     latent_1
#>    posterior_probability decoding_method
#> 1              0.3886041         viterbi
#> 2              0.5192414         viterbi
#> 3              0.7541149         viterbi
#> 4              0.8003439         viterbi
#> 5              0.3878089         viterbi
#> 6              0.5168003         viterbi
#> 7              0.7469419         viterbi
#> 8              0.7769495         viterbi
#> 9              0.7677778         viterbi
#> 10             0.7480491         viterbi
#> 11             0.5322671         viterbi
#> 12             0.4357436         viterbi
#> 13             0.7612516         viterbi
#> 14             0.7253806         viterbi
#> 15             0.5550215         viterbi
#> 16             0.5938073         viterbi