% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/random.R
\name{random_tna_mmm}
\alias{random_tna_mmm}
\title{Build a Random Mixture Markov Model Object}
\usage{
random_tna_mmm(
  n_clusters = NULL,
  n_states = NULL,
  states = NULL,
  category = NULL,
  alpha = NULL,
  diag_boost = NULL,
  n_sequences = NULL,
  seq_length = NULL,
  n_covariates = 1L,
  seed = NULL
)
}
\arguments{
\item{n_clusters}{An \code{integer} giving the number of mixture clusters.
If \code{NULL} (the default), drawn from \code{2:4} on each call.}

\item{n_states}{An \code{integer} >= 2 giving the number of states. If \code{NULL}
(the default), a value is drawn from \code{7:11} on each call.}

\item{states}{An optional \code{character} vector of state labels of length
at least \code{n_states}. The first \code{n_states} are used. If \code{NULL} (the
default), labels are taken from \code{category} or auto-picked from a
built-in pool that fits \code{n_states}.}

\item{category}{An optional \code{character} string naming a built-in label
pool. Available pools are returned by \code{list_random_state_pools()}.
When \code{NULL} (the default), a pool whose size is at least \code{n_states}
is sampled at random. Ignored when \code{states} is supplied.}

\item{alpha}{A positive \code{numeric} Dirichlet concentration parameter.
Small values (e.g. \code{0.3}) produce sparse, peaked transitions; large
values (e.g. \code{5}) produce near-uniform transitions. If \code{NULL} (the
default), a value is drawn from \code{Uniform(0.5, 1.0)} on each call.}

\item{diag_boost}{A non-negative \code{numeric} added to the diagonal of the
transition matrix before re-normalising rows. Larger values make
states "stickier" (more self-transitions). If \code{NULL} (the default),
a value is drawn from \code{Uniform(1.5, 3.0)} on each call.}

\item{n_sequences}{An \code{integer} giving the number of sequences to
simulate from the true parameters. If \code{NULL} (the default), a value
is drawn from \code{500:800} on each call.}

\item{seq_length}{An \code{integer} giving the length of each simulated
sequence. If \code{NULL} (the default), a value is drawn from \code{6:20} on
each call.}

\item{n_covariates}{An \code{integer} >= 1 giving the number of regression
variables (including the intercept) used to predict cluster membership.
Default is 1 (intercept only). When > 1, additional rows are added to
the coefficient matrix.}

\item{seed}{An \code{integer} random seed for reproducibility, or \code{NULL}
(the default) for fresh randomness on every call.}
}
\value{
An object of class \code{tna_mmm} containing fields
\code{observations}, \code{transition_probs}, \code{initial_probs}, \code{coefficients},
\code{vcov}, \code{most_probable_cluster}, \code{cluster_names}, \code{state_names},
\code{n_clusters}, \code{n_states}, \code{n_sequences}, \code{n_covariates}.
}
\description{
Construct a synthetic \code{tna_mmm} object that mirrors the \emph{structure} a
fitted seqHMM mixed Markov model exposes to \link{tna} without depending on
seqHMM at runtime. The returned object can be passed to
\code{\link[=group_model]{group_model()}} (dispatching via \code{group_model.tna_mmm}) and to
\code{\link[=mmm_stats]{mmm_stats()}} (dispatching via \code{mmm_stats.tna_mmm}).

Real seqHMM \code{mhmm} objects continue to dispatch via the original
\verb{*.mhmm} methods.
}
\examples{
model <- random_tna_mmm(seed = 1)
mmm_stats(model)
grp <- group_model(model)

}
\seealso{
Other data: 
\code{\link{import_data}()},
\code{\link{import_onehot}()},
\code{\link{list_random_state_pools}()},
\code{\link{prepare_data}()},
\code{\link{print.tna_data}()},
\code{\link{random_group_tna}()},
\code{\link{random_tna}()},
\code{\link{simulate.group_tna}()},
\code{\link{simulate.tna}()}
}
\concept{data}
