cluster_mmm: Cluster sequences using Mixed Markov Models

cluster_mmmR Documentation

Cluster sequences using Mixed Markov Models

Description

Convenience alias for build_mmm. Fits a mixture of Markov chains to sequence data and returns per-component transition networks with EM-fitted initial state probabilities.

Usage

cluster_mmm(
  data,
  k = 2L,
  n_starts = 50L,
  max_iter = 200L,
  tol = 1e-06,
  smooth = 0.01,
  seed = NULL,
  covariates = NULL
)

Arguments

data

A data.frame (wide format), netobject, or tna model. For tna objects, extracts the stored data.

k

Integer. Number of mixture components. Default: 2.

n_starts

Integer. Number of random restarts. Default: 50.

max_iter

Integer. Maximum EM iterations per start. Default: 200.

tol

Numeric. Convergence tolerance. Default: 1e-6.

smooth

Numeric. Laplace smoothing constant. Default: 0.01.

seed

Integer or NULL. Random seed.

covariates

Optional. Covariates integrated into the EM algorithm to model covariate-dependent mixing proportions. Accepts formula, character vector, string, or data.frame (same forms as build_clusters). Unlike the post-hoc analysis in build_clusters(), these covariates directly influence cluster membership during estimation. Requires the nnet package.

Details

Use build_network on the result to extract per-cluster networks with any estimation method, or use cluster_network for a one-shot clustering + network call.

Value

A net_mmm object. See build_mmm for details.

See Also

build_mmm, cluster_network

Examples

seqs <- data.frame(V1 = sample(c("A","B","C"), 30, TRUE),
                   V2 = sample(c("A","B","C"), 30, TRUE))
mmm <- cluster_mmm(seqs, k = 2, n_starts = 1, max_iter = 10, seed = 1)
mmm

seqs <- data.frame(
  V1 = sample(LETTERS[1:3], 40, TRUE),
  V2 = sample(LETTERS[1:3], 40, TRUE),
  V3 = sample(LETTERS[1:3], 40, TRUE)
)
mmm <- cluster_mmm(seqs, k = 2)
print(mmm)


Nestimate documentation built on April 20, 2026, 5:06 p.m.