EmrysFilter 0.1.0
State estimation utilities in C++23 using Eigen
Loading...
Searching...
No Matches
Categorical.h File Reference

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)

Detailed Description

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.