Automatic Differentiation
 
Loading...
Searching...
No Matches

◆ hmm_marginal()

template<typename T_omega , typename T_Gamma , typename T_rho , require_all_eigen_t< T_omega, T_Gamma > * = nullptr, require_eigen_col_vector_t< T_rho > * = nullptr>
auto stan::math::hmm_marginal ( const T_omega &  log_omegas,
const T_Gamma &  Gamma,
const T_rho &  rho 
)
inline

For a Hidden Markov Model with observation y, hidden state x, and parameters theta, return the log marginal density, log p(y | theta).

In this setting, the hidden states are discrete and take values over the finite space {1, ..., K}. The marginal lpdf is obtained via a forward pass, and the derivative is calculated with an adjoint method, e.g (Betancourt, Margossian, & Leos-Barajas, 2020). log_omegas is a matrix of observational densities, where the (i, j)th entry corresponds to the density of the jth observation, y_j, given x_j = i. The transition matrix Gamma is such that the (i, j)th entry is the probability that x_n = j given x_{n - 1} = i. The rows of Gamma are simplexes.

Template Parameters
T_omegatype of the log likelihood matrix
T_Gammatype of the transition matrix
T_rhotype of the initial guess vector
Parameters
[in]log_omegaslog matrix of observational densities.
[in]Gammatransition density between hidden states.
[in]rhoinitial state
Returns
log marginal density.
Exceptions
`std::invalid_argument`if Gamma is not square, when we have at least one transition, or if the size of rho is not the number of rows of log_omegas.
`std::domain_error`if rho is not a simplex and of the rows of Gamma are not a simplex (when there is at least one transition).

Definition at line 76 of file hmm_marginal.hpp.