![]() |
Stan Math Library
5.2.0
Automatic Differentiation
|
|
inline |
For a latent Gaussian model with global parameters phi, latent variables theta, and observations y, this function computes an approximation of the log marginal density, p(y | phi).
This is done by marginalizing out theta, using a Laplace approximation. The latter is obtained by finding the mode, using a custom Newton method, and the Hessian of the likelihood.
The convergence criterion for the Newton/Wolfe loop is a small change in the optimization objective (not the final Laplace-corrected log marginal density). The user controls the tolerance (i.e. threshold under which the change is deemed small enough) and maximum number of steps.
Wrapper for when the hyperparameters are passed as a double.
| LLFun | Type with a valid operator(ThetaVec, InnerLLTupleArgs) where InnerLLTupleArgs are the elements of LLTupleArgs |
| LLTupleArgs | A tuple whose elements follow the types required for LLFun |
| CovarFun | A functor with an operator()(CovarArgsElements..., {TrainTupleElements...| PredTupleElements...}) method. The operator() method should accept as arguments the inner elements of CovarArgs. The return type of the operator() method should be a type inheriting from Eigen::EigenBase with dynamic sized rows and columns. |
| CovarArgs | A tuple of types to passed as the first arguments of CovarFun::operator() |
| OpsTuple | A tuple of laplace_options types |
| [in] | ll_fun | A log likelihood functor |
| [in] | ll_args | Tuple containing parameters for LLFun |
| [in] | covariance_function | a function which returns the prior covariance. |
| [in] | covar_args | arguments for the covariance function. |
| [in] | options | A set of options for tuning the solver |
| [in,out] | msgs | stream for messages from likelihood and covariance |
This is done by marginalizing out theta, using a Laplace approximation. The latter is obtained by finding the mode, using a custom Newton method, and the Hessian of the likelihood.
The convergence criterion for the Newton/Wolfe loop is a small change in the optimization objective (not the final Laplace-corrected log marginal density). The user controls the tolerance (i.e. threshold under which the change is deemed small enough) and maximum number of steps.
Wrapper for when the global parameter is passed as a double.
| LLFun | Type with a valid operator(ThetaVec, InnerLLTupleArgs) where InnerLLTupleArgs are the elements of LLTupleArgs |
| LLTupleArgs | A tuple whose elements follow the types required for LLFun |
| CovarFun | A functor with an operator()(CovarArgsElements..., {TrainTupleElements...| PredTupleElements...}) method. The operator() method should accept as arguments the inner elements of CovarArgs. The return type of the operator() method should be a type inheriting from Eigen::EigenBase with dynamic sized rows and columns. |
| CovarArgs | A tuple of types to passed as the first arguments of CovarFun::operator() |
| OpsTuple | A tuple of laplace_options types |
| [in] | ll_fun | A log likelihood functor |
| [in] | ll_args | Tuple containing parameters for LLFun |
| [in] | covariance_function | a function which returns the prior covariance. |
| [in] | covar_args | arguments for the covariance function. |
| [in] | options | A set of options for tuning the solver |
| [in,out] | msgs | stream for messages from likelihood and covariance |
Definition at line 57 of file laplace_marginal_density.hpp.