48 mutable std::mt19937
gen;
126 void step()
override;
Abstract base class for MCMC sampling algorithms.
Manages distance matrices and cluster allocations for points.
Definition Data.hpp:27
Abstract base class for likelihood computation.
Definition Likelihood.hpp:27
std::vector< double > weights
Definition neal.hpp:83
int sample_from_log_probs(int num_clusters)
Sample an index from log-probabilities using the log-sum-exp trick.
Definition neal.cpp:20
std::mt19937 gen
Mersenne Twister random number generator for sampling operations.
Definition neal.hpp:48
int n_data
Definition neal.hpp:84
void step() override
Perform one complete iteration of Neal's Algorithm 3.
Definition neal.cpp:80
void step_1_observation(int index)
Sample cluster assignment for a single observation.
Definition neal.cpp:46
std::vector< int > indices
Definition neal.hpp:81
Neal3(Data &d, Params &p, Likelihood &l, Process &pr)
Constructor for Neal's Algorithm 3 sampler.
Definition neal.hpp:101
std::vector< double > log_likelihoods
Definition neal.hpp:82
Abstract base class for Bayesian nonparametric processes.
Definition Process.hpp:41
Sampler(Data &d, const Params &p, const Likelihood &l, Process &pr)
Constructor initializing sampler with required components.
Definition Sampler.hpp:97
std::random_device rd
Random device for generating random numbers across sampling algorithms.
Definition Sampler.hpp:73
Structure containing all parameters needed for the NGGP (Normalized Generalized Gamma Process) and DP...
Definition Params.hpp:35