Build the transition probability matrix from unconstrained parameter vector
tpm.RdMarkov chains are parametrised in terms of a transition probability matrix \(\Gamma\), for which each row contains a conditional probability distribution of the next state given the current state. Hence, each row has entries between 0 and 1 that need to sum to one.
For numerical optimisation, we parameterise in terms of unconstrained parameters, thus this function computes said matrix from an unconstrained parameter vector via the inverse multinomial logistic link (also known as softmax) applied to each row.
Usage
tpm(
beta,
Z = NULL,
Eta = NULL,
byrow = FALSE,
ref = NULL,
ad = NULL,
report = TRUE,
param = NULL
)Arguments
- beta
parameters; either
a vector of length
nStates * (nStates-1), ora matrix of dimension
c(nStates * (nStates-1), p+1)if design matrixZis also provided.
- Z
optional covariate design matrix with or without intercept column, i.e. of dimension
c(nObs, p)orc(nObs, p+1). If provided,betaneeds to be a matrix of dimensionc(nStates * (nStates-1), p+1).- Eta
optional pre-calculated matrix of linear predictors of dimension
c(nObs, nStates * (nStates-1)). If provided,Zandbetawill be ignored.- byrow
logical indicating if each transition probability matrix should be filled by row. Defaults to
FALSE, but should be set toTRUEif one wants to work with a matrix of beta parameters returned by popular HMM packages likemoveHMM,momentuHMM, orhmmTMB.- ref
optional integer vector of length
nStatesgiving, for each row, the column index of the reference state (its predictor is fixed to 0). Defaults to the diagonal (ref = 1:nStates).- ad
logical; whether to use automatic differentiation. Determined automatically — for debugging only.
- report
logical; if
TRUE(default),delta,Gamma,allprobs, andtrackIDare reported from the fitted model. Requiresad = TRUE.- param
depricated, please use argument
betainstead.
Value
Transition probability matrix of dimension c(nStates, nStates) or array of such matrices of dimension c(nStates, nStates, nObs) if Z or Eta is provided.
See also
Other transition probability matrix functions:
generator(),
generator_g(),
tpm_ct(),
tpm_emb(),
tpm_emb_g(),
tpm_g(),
tpm_g2(),
tpm_p()
Examples
## homogeneous Markov chain
# 2 states: 2 = 2*(2-1) free off-diagonal elements
par <- rep(-2, 2)
Gamma <- tpm(par)
# 3 states: 6 = 3*(3-1) free off-diagonal elements
par <- rep(-3, 6)
Gamma <- tpm(par)
# 4 states: 12 = 4*(4-1) free off-diagonal elements
par <- rep(-4, 12)
Gamma <- tpm(par)
## 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