Docs
Loading...
Searching...
No Matches
categorical_covariate_module.hpp
Go to the documentation of this file.
1#pragma once
2
7
10
20
22protected:
27
28 const std::vector<double> prior_alpha;
29
31 const Data &data;
32
33 const Eigen::VectorXi categorical_covariate_data;
34
36
41
42 const double alpha_0 = std::accumulate(prior_alpha.begin(), prior_alpha.end(), 0.0);
43 const double lgamma_alpha_0 = std::lgamma(alpha_0);
44
45 double prod_lgamma_prior = 0;
46
48
49public:
59 const Data &data_, const Eigen::VectorXi categorical_covariate, std::vector<double> prior_alpha_,
60 const Eigen::VectorXi *old_alloc_provider = nullptr,
61 const std::unordered_map<int, std::vector<int>> *old_cluster_members_provider_ = nullptr)
62 : prior_alpha(prior_alpha_), data(data_), categorical_covariate_data(categorical_covariate),
63 Module(old_alloc_provider, old_cluster_members_provider_) {
64
65 for (const double &alpha : prior_alpha)
66 prod_lgamma_prior += std::lgamma(alpha);
67 }
68
72
83 double compute_similarity_cls(int cls_idx, bool old_allo = false) const override __attribute__((hot));
84
98 double compute_similarity_obs(int obs_idx, int cls_idx) const override __attribute__((hot));
99
109 Eigen::VectorXd compute_similarity_obs(int obs_idx) const override __attribute__((hot));
110
112};
Data structure for managing point distances and cluster allocations.
Base class for modules used in processes.
const std::vector< double > prior_alpha
Definition categorical_covariate_module.hpp:28
double prod_lgamma_prior
Definition categorical_covariate_module.hpp:45
const Data & data
Reference to data object with cluster assignments.
Definition categorical_covariate_module.hpp:31
const double alpha_0
Definition categorical_covariate_module.hpp:42
const double lgamma_alpha_0
Definition categorical_covariate_module.hpp:43
CategoricalCovariatesModule(const Data &data_, const Eigen::VectorXi categorical_covariate, std::vector< double > prior_alpha_, const Eigen::VectorXi *old_alloc_provider=nullptr, const std::unordered_map< int, std::vector< int > > *old_cluster_members_provider_=nullptr)
Constructor for CategoricalCovariatesModule.
Definition categorical_covariate_module.hpp:58
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 categorical_covariate_module.cpp:46
const Eigen::VectorXi categorical_covariate_data
Definition categorical_covariate_module.hpp:33
double compute_similarity_cls(int cls_idx, bool old_allo=false) const override __attribute__((hot))
Compute covariate similarity contribution for a cluster.
Definition categorical_covariate_module.cpp:8
Manages distance matrices and cluster allocations for points.
Definition Data.hpp:27
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