Skip to content

fit_nhmm()

fit_nhmm() estimates NHMM coefficients that link covariates to initial, transition, and emission probabilities via softmax transformations.

Function Usage

python
fit_nhmm(
    model,
    n_iter=100,
    tol=1e-4,
    verbose=False
)

seqHMM Parameter Mapping

SequenzoseqHMM fit_nhmm()
modelnhmm object from build_nhmm()
n_iterOptimization iteration limit
tolConvergence tolerance
verboseProgress output

Entry Parameters

ParameterRequiredTypeDescription
modelNHMMModel from build_nhmm().
n_iterintMaximum optimization iterations. Default 100.
tolfloatConvergence tolerance. Default 1e-4.
verboseboolPrint progress. Default False.

Returns

The same NHMM object, modified in place:

AttributeMeaning
log_likelihoodFitted log-likelihood
eta_pi, eta_A, eta_BEstimated coefficient matrices
n_iter, convergedOptimization diagnostics

Example

python
import numpy as np
from sequenzo import SequenceData, load_dataset
from sequenzo.seqhmm import build_nhmm, fit_nhmm

df = load_dataset("mvad")
time_cols = list(df.columns[14:])
states = ["employment", "FE", "HE", "joblessness", "school", "training"]
seq = SequenceData(df, time=time_cols, states=states)

n_sequences = len(seq.sequences)
n_timepoints = max(len(s) for s in seq.sequences)
X = np.zeros((n_sequences, n_timepoints, 1))
for i in range(n_sequences):
    for t in range(len(seq.sequences[i])):
        X[i, t, 0] = t

nhmm = build_nhmm(seq, n_states=4, X=X, random_state=42)
nhmm = fit_nhmm(nhmm, n_iter=100, tol=1e-4, verbose=True)

print(nhmm.log_likelihood, nhmm.converged)

R Counterpart

  • Closest R function: seqHMM fit_nhmm()
  • Mapping note: R uses analytical gradients and specialized optimizers; Sequenzo uses numerical optimization with forward–backward likelihood evaluation.

Notes

  • NHMM fitting is more demanding than basic HMM EM; start with simpler specifications (few covariates, fewer states).
  • For difficult convergence, try fit_model_advanced() on an NHMM object.
  • Low-level likelihood and gradient helpers (forward_backward_nhmm, compute_gradient_nhmm) exist for advanced use but are not part of the standard user workflow.

See Also

Authors

Code: Yuqi Liang

Documentation: Yuqi Liang

References

Helske, S., & Helske, J. (2019). Mixture hidden Markov models for sequence data: The seqHMM package in R. Journal of Statistical Software, 88(3), 1–32.

Sequenzo is released under the BSD-3-Clause License; this documentation site source is licensed under MIT.