Thesis docs
Loading...
Searching...
No Matches
DPW Class Reference

Dirichlet Process with spatial Weights class for spatially-aware Bayesian nonparametric clustering. More...

#include <DPW.hpp>

Inheritance diagram for DPW:
Process

Public Member Functions

 DPW (Data &d, Params &p)
 Constructor for the Dirichlet Process with spatial Weights.
 
void update_params () override
 Updates the parameters of the Dirichlet Process with spatial Weights.
 
Gibbs Sampling Methods
double gibbs_prior_existing_cluster (int cls_idx, int obs_idx) const override
 Computes the log prior probability of assigning a data point to an existing cluster.
 
Eigen::VectorXd gibbs_prior_existing_clusters (int obs_idx) const override
 Computes the log prior probabilities of assigning a data point to every existing cluster. This method is useful for Gibbs sampling over existing clusters. It returns a vector of log prior probabilities for all existing clusters.
 
double gibbs_prior_new_cluster () const override
 Computes the log prior probability of assigning a data point to a new cluster.
 
Split-Merge Algorithm Methods
double prior_ratio_split (int ci, int cj) const override
 Computes the prior ratio for a split operation in a spatially-aware split-merge MCMC algorithm.
 
double prior_ratio_merge (int size_old_ci, int size_old_cj) const override
 Computes the prior ratio for a merge operation in a spatially-aware split-merge MCMC algorithm.
 
double prior_ratio_shuffle (int size_old_ci, int size_old_cj, int ci, int cj) const override
 Computes the prior ratio for a shuffle operation in a spatially-aware split-merge MCMC algorithm.
 
Spatial Methods
int get_neighbors_obs (int obs_idx, int cls_idx) const
 Returns the number of neighbors for a given observation in a specific cluster.
 
Eigen::VectorXi get_neighbors_obs (int obs_idx) const
 Returns the number of neighbors for a given observation regardless of cluster membership. This method counts the total number of neighbors of an observation based on the adjacency matrix W.
 
int get_neighbors_cls (int cls_idx, bool old_allo=false) const
 Returns the total number of neighbors for all observations in a given cluster.
 
- Public Member Functions inherited from Process
 Process (Data &d, Params &p)
 Constructor initializing process with data and parameters.
 
void set_old_allocations (const Eigen::VectorXi &new_allocations)
 Store current allocations for potential rollback.
 
void set_idx_i (int i)
 Set index of first observation in split-merge pair.
 
void set_idx_j (int j)
 Set index of second observation in split-merge pair.
 
virtual ~Process ()
 Virtual destructor for proper cleanup of derived classes.
 

Additional Inherited Members

- Protected Attributes inherited from Process
Datadata
 Reference to the data object containing observations and allocations.
 
Paramsparams
 Reference to the parameters object containing process hyperparameters.
 
Eigen::VectorXi old_allocations
 Storage for previous allocations to enable rollback in case of rejection.
 
int idx_i
 Index of first observation involved in split-merge move.
 
int idx_j
 Index of second observation involved in split-merge move.
 
const double log_a = log(params.a)
 Precomputed logarithm of total mass parameter for efficiency.
 

Detailed Description

Dirichlet Process with spatial Weights class for spatially-aware Bayesian nonparametric clustering.

This class extends the Dirichlet Process to incorporate spatial information through an adjacency matrix W. It provides methods for Gibbs sampling and split-merge algorithms that account for spatial dependencies between observations in the clustering process.

Constructor & Destructor Documentation

◆ DPW()

DPW::DPW ( Data & d,
Params & p )
inline

Constructor for the Dirichlet Process with spatial Weights.

Parameters
dReference to the data object containing observations and cluster assignments.
pReference to the parameters object containing the adjacency matrix W and spatial coefficient.

Member Function Documentation

◆ get_neighbors_cls()

int DPW::get_neighbors_cls ( int cls_idx,
bool old_allo = false ) const

Returns the total number of neighbors for all observations in a given cluster.

This method computes the sum of all neighbor connections within a cluster, which is used in the spatial component of the prior calculations.

Parameters
cls_idxThe index of the cluster.
old_alloIf true, uses the old allocations for neighbor counting; otherwise, uses current allocations (default: false).
Returns
The total number of neighbors for the cluster.

Returns the total number of neighbors for all observations in a given cluster.

This method computes the sum of all neighbor connections within a cluster, which is used in the spatial component of the prior calculations.

Parameters
cls_idxThe index of the cluster.
old_alloIf true, uses the old allocations for neighbor counting; otherwise, uses current allocations.
Returns
The total number of neighbors for the cluster.

◆ get_neighbors_obs() [1/2]

Eigen::VectorXi DPW::get_neighbors_obs ( int obs_idx) const

Returns the number of neighbors for a given observation regardless of cluster membership. This method counts the total number of neighbors of an observation based on the adjacency matrix W.

Parameters
obs_idxThe index of the observation.
Returns
The total number of neighbors for the observation for all clusters.

Returns the number of neighbors for a given observation regardless of cluster membership. This method counts the total number of neighbors of an observation based on the adjacency matrix W.

Parameters
obs_idxThe index of the observation.
Returns
The total number of neighbors for the observation for all clusters.

◆ get_neighbors_obs() [2/2]

int DPW::get_neighbors_obs ( int obs_idx,
int cls_idx ) const

Returns the number of neighbors for a given observation in a specific cluster.

This method counts the neighbors of an observation based on the adjacency matrix W, considering only neighbors that belong to the specified cluster.

Parameters
obs_idxThe index of the observation.
cls_idxThe index of the cluster to consider for neighbor counting.
Returns
The number of neighbors for the observation in the specified cluster.

Returns the number of neighbors for a given observation in a specific cluster.

This method counts the neighbors of an observation based on the adjacency matrix W, considering only neighbors that belong to the specified cluster.

Parameters
obs_idxThe index of the observation.
cls_idxThe index of the cluster to consider for neighbor counting.
Returns
The number of neighbors for the observation in the specified cluster.

◆ gibbs_prior_existing_cluster()

double DPW::gibbs_prior_existing_cluster ( int cls_idx,
int obs_idx ) const
nodiscardoverridevirtual

Computes the log prior probability of assigning a data point to an existing cluster.

This method incorporates spatial information by considering the number of neighbors in the target cluster when computing the prior probability.

Parameters
cls_idxThe index of the cluster.
obs_idxThe index of the observation to assign.
Returns
The log prior probability of assigning the data point to the existing cluster.

Computes the log prior probability of assigning a data point to an existing cluster.

This method incorporates spatial information by considering the number of neighbors in the target cluster when computing the prior probability.

Parameters
cls_idxThe index of the cluster.
obs_idxThe index of the observation to assign.
Returns
The log prior probability of assigning the data point to the existing cluster.

Implements Process.

◆ gibbs_prior_existing_clusters()

Eigen::VectorXd DPW::gibbs_prior_existing_clusters ( int obs_idx) const
nodiscardoverridevirtual

Computes the log prior probabilities of assigning a data point to every existing cluster. This method is useful for Gibbs sampling over existing clusters. It returns a vector of log prior probabilities for all existing clusters.

Parameters
obs_idxThe index of the observation to assign.
Returns
A vector of log prior probabilities for assigning the data point to each existing cluster.

Computes the log prior probabilities of assigning a data point to all existing clusters.

This method incorporates spatial information by considering the number of neighbors in each target cluster when computing the prior probabilities.

Parameters
obs_idxThe index of the observation to assign.
Returns
A vector of log prior probabilities for assigning the data point to each existing cluster.

Implements Process.

◆ gibbs_prior_new_cluster()

double DPW::gibbs_prior_new_cluster ( ) const
nodiscardoverridevirtual

Computes the log prior probability of assigning a data point to a new cluster.

Returns
The log prior probability of assigning the data point to a new cluster.

Computes the log prior probability of assigning a data point to a new cluster.

Returns
The log prior probability of assigning the data point to a new cluster.

Implements Process.

◆ prior_ratio_merge()

double DPW::prior_ratio_merge ( int size_old_ci,
int size_old_cj ) const
nodiscardoverridevirtual

Computes the prior ratio for a merge operation in a spatially-aware split-merge MCMC algorithm.

This method accounts for both the Dirichlet Process prior and spatial dependencies when computing the acceptance ratio for merging clusters.

Parameters
size_old_ciThe size of the first cluster before the merge.
size_old_cjThe size of the second cluster before the merge.
Returns
The log prior ratio for the merge operation.

Computes the prior ratio for a merge operation in a spatially-aware split-merge MCMC algorithm.

This method accounts for both the Dirichlet Process prior and spatial dependencies when computing the acceptance ratio for merging clusters.

Parameters
size_old_ciThe size of the first cluster before the merge.
size_old_cjThe size of the second cluster before the merge.
Returns
The log prior ratio for the merge operation.

Implements Process.

◆ prior_ratio_shuffle()

double DPW::prior_ratio_shuffle ( int size_old_ci,
int size_old_cj,
int ci,
int cj ) const
nodiscardoverridevirtual

Computes the prior ratio for a shuffle operation in a spatially-aware split-merge MCMC algorithm.

This method accounts for both the Dirichlet Process prior and spatial dependencies when computing the acceptance ratio for shuffling observations between clusters.

Parameters
size_old_ciThe size of the first cluster before the shuffle.
size_old_cjThe size of the second cluster before the shuffle.
ciThe first cluster index involved in the shuffle.
cjThe second cluster index involved in the shuffle.
Returns
The log prior ratio for the shuffle operation.

Computes the prior ratio for a shuffle operation in a spatially-aware split-merge MCMC algorithm.

This method accounts for both the Dirichlet Process prior and spatial dependencies when computing the acceptance ratio for shuffling observations between clusters.

Parameters
size_old_ciThe size of the first cluster before the shuffle.
size_old_cjThe size of the second cluster before the shuffle.
ciThe first cluster index involved in the shuffle.
cjThe second cluster index involved in the shuffle.
Returns
The log prior ratio for the shuffle operation.

Implements Process.

◆ prior_ratio_split()

double DPW::prior_ratio_split ( int ci,
int cj ) const
nodiscardoverridevirtual

Computes the prior ratio for a split operation in a spatially-aware split-merge MCMC algorithm.

This method accounts for both the Dirichlet Process prior and spatial dependencies when computing the acceptance ratio for splitting clusters.

Parameters
ciThe first cluster index involved in the split.
cjThe second cluster index involved in the split.
Returns
The log prior ratio for the split operation.

Computes the prior ratio for a split operation in a spatially-aware split-merge MCMC algorithm.

This method accounts for both the Dirichlet Process prior and spatial dependencies when computing the acceptance ratio for splitting clusters.

Parameters
ciThe first cluster index involved in the split.
cjThe second cluster index involved in the split.
Returns
The log prior ratio for the split operation.

Implements Process.

◆ update_params()

void DPW::update_params ( )
inlineoverridevirtual

Updates the parameters of the Dirichlet Process with spatial Weights.

This is a null implementation as the DPW has no parameters to update beyond those handled by the base Process class.

Implements Process.


The documentation for this class was generated from the following files: