236 double B_ = 1.0,
double v_ = 1.0,
double nu_ = 1.0,
double S0_ = 1.0,
237 const Eigen::VectorXi *old_alloc_provider =
nullptr,
238 const std::unordered_map<
int, std::vector<int>> *old_cluster_members_provider_ =
nullptr)
240 data(data_),
Module(old_alloc_provider, old_cluster_members_provider_), Bv(
B *
v),
log_B(std::log(
B)),
246 for (
int n = 0; n <= data_.
get_n(); ++n) {
251 for (
int n = 0; n <= data_.
get_n(); ++n) {
252 lgamma_nu_n.push_back(std::lgamma(
nu + 0.5 *
static_cast<double>(n)));
Data structure for managing point distances and cluster allocations.
Base class for modules used in processes.
const double m
Prior mean for covariate.
Definition continuos_covariate_module.hpp:44
const double const_term
Constant term in log likelihood.
Definition continuos_covariate_module.hpp:210
const double nu
Prior shape parameter for variance (NNIG).
Definition continuos_covariate_module.hpp:47
const double lgamma_nu
log Gamma(ν) for NNIG model (v ~ IG(ν, S₀))
Definition continuos_covariate_module.hpp:212
std::vector< double > log_v_plus_nB
Cache for log(v_plus_nB) for NN.
Definition continuos_covariate_module.hpp:215
const Data & data
Reference to data object with cluster assignments.
Definition continuos_covariate_module.hpp:34
double always_inline
Product of prior variance and observation variance.
Definition continuos_covariate_module.hpp:190
double compute_log_marginal_likelihood(const ClusterStats &stats) const __attribute__((hot))
Compute log marginal likelihood based on model type.
Definition continuos_covariate_module.hpp:172
double compute_predictive_NNIG(const ClusterStats &stats, double covariate_val) const
Compute log predictive density for a new observation (NNIG model).
Definition continuos_covariate_module.cpp:169
const double nu_logS0
ν log(S₀) for NNIG model (v ~ IG(ν, S₀))
Definition continuos_covariate_module.hpp:213
const Eigen::VectorXd continuos_covariate_data
Covariate values.
Definition continuos_covariate_module.hpp:42
const double log_B
Log of prior variance.
Definition continuos_covariate_module.hpp:207
double compute_similarity_cls(int cls_idx, bool old_allo=false) const override __attribute__((hot))
Compute covariate similarity contribution for a cluster.
Definition continuos_covariate_module.cpp:23
const double S0
Prior scale parameter for variance (NNIG).
Definition continuos_covariate_module.hpp:48
double compute_similarity_obs(int obs_idx, int cls_idx) const override __attribute__((hot))
Compute covariate similarity for a single observation in a cluster.
Definition continuos_covariate_module.cpp:38
double compute_log_marginal_likelihood_NNIG(const ClusterStats &stats) const __attribute__((hot))
Compute log marginal likelihood for cluster given covariates.
Definition continuos_covariate_module.cpp:79
const bool fixed_v
Whether observation variance is fixed (NN) or random (NNIG).
Definition continuos_covariate_module.hpp:43
const double v
Observation variance for covariate.
Definition continuos_covariate_module.hpp:46
ClusterStats compute_cluster_statistics(const Eigen::Ref< const Eigen::VectorXi > obs) const
Compute cluster statistics for covariate similarity.
Definition continuos_covariate_module.cpp:9
const double B
Prior variance for covariate.
Definition continuos_covariate_module.hpp:45
double compute_predictive_NN(const ClusterStats &stats, double covariate_val) const
Compute log predictive density for a new observation (Normal-Normal model).
Definition continuos_covariate_module.cpp:152
const double log_v
Log of observation variance.
Definition continuos_covariate_module.hpp:208
std::vector< double > lgamma_nu_n
Cache for lgamma(nu_n) for NNIG.
Definition continuos_covariate_module.hpp:216
double compute_log_marginal_likelihood_NN(const ClusterStats &stats) const __attribute__((hot))
Compute log marginal likelihood for cluster given covariates.
Definition continuos_covariate_module.cpp:116
double compute_log_predictive_likelihood(const ClusterStats &stats, double covariate_val) const __attribute__((hot
Compute log marginal likelihood based on model type.
ContinuosCovariatesModule(const Data &data_, const Eigen::VectorXd covariates_data_, bool fixed_v_, double m_=0, double B_=1.0, double v_=1.0, double nu_=1.0, double S0_=1.0, const Eigen::VectorXi *old_alloc_provider=nullptr, const std::unordered_map< int, std::vector< int > > *old_cluster_members_provider_=nullptr)
Constructor for ContinuosCovariatesModule.
Definition continuos_covariate_module.hpp:235
Manages distance matrices and cluster allocations for points.
Definition Data.hpp:27
int get_n() const
Gets the total number of points.
Definition Data.hpp:78
Module(const Eigen::VectorXi *old_allocations_provider_=nullptr, const std::unordered_map< int, std::vector< int > > *old_cluster_members_provider_=nullptr)
Definition Module.hpp:31
Sufficient statistics for covariate likelihood computations.
Definition continuos_covariate_module.hpp:60
double sumsq
Definition continuos_covariate_module.hpp:63
int n
Definition continuos_covariate_module.hpp:61
double sum
Definition continuos_covariate_module.hpp:62