% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/tpm_functions.R
\name{tpm_g}
\alias{tpm_g}
\title{Build all transition probability matrices of an inhomogeneous HMM}
\usage{
tpm_g(
  Z,
  beta,
  Eta = NULL,
  byrow = FALSE,
  ref = NULL,
  ad = NULL,
  report = TRUE,
  sparse = FALSE
)
}
\arguments{
\item{Z}{Covariate design matrix with or without intercept column, i.e. of dimension \code{c(nObs, p)} or \code{c(nObs, p+1)}.
If not provided, intercept column is added automatically.}

\item{beta}{Matrix of coefficients for the off-diagonal elements of the transition probability matrix 
of dimension \code{c(nStates * (nStates-1), p+1)}. First columns contains the intercepts.}

\item{Eta}{optional pre-calculated matrix of linear predictors of dimension \code{c(nObs, nStates * (nStates-1))}.
If provided, no \code{Z} and \code{beta} are necessary and will be ignored.}

\item{byrow}{logical indicating if each transition probability matrix should be filled by row.
Defaults to \code{FALSE}, but should be set to \code{TRUE} if one wants to work with a matrix of beta parameters returned by popular HMM packages like \code{moveHMM}, \code{momentuHMM}, or \code{hmmTMB}.}

\item{ref}{optional integer vector of length \code{nStates} giving, for each row, the column index of the reference state 
(its predictor is fixed to 0). Defaults to the diagonal (\code{ref = 1:nStates}).}

\item{ad}{logical; whether to use automatic differentiation. Determined automatically — for debugging only.}

\item{report}{logical; if \code{TRUE} (default), \code{delta}, \code{Gamma}, \code{allprobs}, and \code{trackID} are reported from the fitted model. Requires \code{ad = TRUE}.}

\item{sparse}{logical, indicating whether sparsity in the rows of \code{Z} should be exploited.}
}
\value{
array of transition probability matrices of dimension \code{c(nStates, nStates, nObs)}
}
\description{
In an HMM, we often model the influence of covariates on the state process by linking them to the transition probabiltiy matrix. 
Most commonly, this is done by specifying a linear predictor
\deqn{ \eta_{ij}^{(t)} = \beta^{(ij)}_0 + \beta^{(ij)}_1 z_{t1} + \dots + \beta^{(ij)}_p z_{tp} }
for each off-diagonal element (\eqn{i \neq j}) of the transition probability matrix and then applying the inverse multinomial logistic link (also known as softmax) to each row.
This function efficiently calculates all transition probabilty matrices for a given design matrix \code{Z} and parameter matrix \code{beta}.
}
\examples{
## inhomogeneous Markov chain
# t.p.m. depends on covariates
z1 <- runif(100); z2 <- runif(100) # 2 covariates
Z <- cbind(1, z1, z2) # design matrix
beta0 <- c(-2, -2); beta1 = c(1, -2); beta2 = c(2, -1) # coefficients for intercept and covariates
beta <- cbind(beta0, beta1, beta2) # coefficient matrix; with intercepts!
#' Gamma <- tpm(beta, Z) # array with 100 slices
}
\seealso{
Other transition probability matrix functions: 
\code{\link{generator}()},
\code{\link{generator_g}()},
\code{\link{tpm}()},
\code{\link{tpm_ct}()},
\code{\link{tpm_emb}()},
\code{\link{tpm_emb_g}()},
\code{\link{tpm_g2}()},
\code{\link{tpm_p}()}
}
\concept{transition probability matrix functions}
