|
EmrysFilter 0.1.0
State estimation utilities in C++23 using Eigen
|
The distribution over a discrete space (decisions.md [discrete-spaces], [params-and-density]): CategoricalParams, one weight per value, written freely and updated by Bayes' rule, with marginals and conditionals by axis; and Categorical, the view its toDensity() returns once the weights define a distribution, with probabilities by value and by named event. More...
#include <array>#include <concepts>#include <cstddef>#include <expected>#include <random>#include <utility>#include <vector>#include <EmrysFilter/Core/Forwarding.h>#include <EmrysFilter/Core/Macros.h>#include <EmrysFilter/Core/Math.h>#include <EmrysFilter/Core/Multiply.h>#include <EmrysFilter/Core/Print.h>#include <EmrysFilter/Core/Stamp.h>#include <EmrysFilter/Core/Weights.h>#include <EmrysFilter/Distributions/Params.h>#include <EmrysFilter/Spaces/Discrete.h>#include <EmrysFilter/Spaces/Space.h>Go to the source code of this file.
Classes | |
| class | Emrys::CategoricalParams< Space_, Scalar_ > |
| The parameters of a probability distribution over a discrete space: one weight per value. More... | |
| class | Emrys::Categorical< Space_, Scalar_ > |
| The probabilities of a CategoricalParams whose weights define a distribution: a read-only view. More... | |
| class | Emrys::MarkovChain< Space_, Scalar_ > |
| A Markov chain on a discrete space: the probability of moving from each value to each value in one step. More... | |
Enumerations | |
| enum class | Emrys::ChainError { ChainError::Reducible } |
| Reasons a Markov chain has no single stationary distribution. More... | |
Functions | |
| template<typename Scalar, typename Space> | |
| CategoricalParams< Space, Scalar > | Emrys::predict (CategoricalParams< Space, Scalar > const &prior, MarkovChain< Space, Scalar > const &chain) |
| template<typename Scalar, typename Space> | |
| std::expected< CategoricalParams< Space, Scalar >, ChainError > | Emrys::stationary (MarkovChain< Space, Scalar > const &chain) |
| template<typename Scalar, typename Space, std::uniform_random_bit_generator G> | |
| std::vector< Eigen::Index > | Emrys::drawSamples (Categorical< Space, Scalar > const &distribution, Eigen::Index n, G &rng) |
| template<typename Scalar, typename Space, std::uniform_random_bit_generator G> | |
| Eigen::Index | Emrys::drawSample (Categorical< Space, Scalar > const &distribution, G &rng) |
The distribution over a discrete space (decisions.md [discrete-spaces], [params-and-density]): CategoricalParams, one weight per value, written freely and updated by Bayes' rule, with marginals and conditionals by axis; and Categorical, the view its toDensity() returns once the weights define a distribution, with probabilities by value and by named event.
MarkovChain moves the parameters a step, built directly, from independent chains on the axes of a product, as persistent or memoryless, or from mean dwell times and exit weights; predict() moves them, stationary() gives the chain's stationary distribution as a prior, and drawSamples() draws from the density. Read ContinuousTimeMarkovChain.h next.