SedSat3 1.1.6
Sediment Source Apportionment Tool - Advanced statistical methods for environmental pollution research
Loading...
Searching...
No Matches
ConcentrationSet Class Reference

Manages a collection of concentration measurements with statistical analysis. More...

#include <concentrationset.h>

Inheritance diagram for ConcentrationSet:
Inheritance graph
Collaboration diagram for ConcentrationSet:
Collaboration graph

Public Member Functions

 ConcentrationSet ()
 
 ConcentrationSet (const ConcentrationSet &other)
 
 ConcentrationSet (int n)
 
ConcentrationSet & operator= (const ConcentrationSet &other)
 
void AppendValue (double value)
 Append a single concentration value.
 
void AppendSet (const ConcentrationSet &other)
 Append all values from another set.
 
void AppendSet (ConcentrationSet *other)
 
double CalculateMean () const
 Calculate arithmetic mean.
 
double CalculateStdDev (double mean_value=-999) const
 Calculate standard deviation.
 
double CalculateMeanLog () const
 Calculate mean of log-transformed values.
 
double CalculateStdDevLog (double mean_value=-999) const
 Calculate standard deviation of log-transformed values.
 
double CalculateSSE (double mean_value=-999) const
 Calculate sum of squared errors from mean.
 
double CalculateSSELog (double mean_value=-999) const
 Calculate sum of squared errors from log mean.
 
double CalculateNorm (double power=2.0) const
 Calculate sum of values raised to a power.
 
double CalculateNormLog (double power=2.0) const
 Calculate sum of log-transformed values raised to a power.
 
double GetMinimum () const
 Get minimum value.
 
double GetMaximum () const
 Get maximum value.
 
vector< double > EstimateDistributionParameters (distribution_type dist_type=distribution_type::none)
 Estimate distribution parameters from data.
 
double CalculateLogLikelihood (const vector< double > &params=vector< double >(), distribution_type dist_type=distribution_type::none) const
 Calculate log-likelihood of data given distribution parameters.
 
distribution_type SelectBestDistribution ()
 Select best-fitting distribution (normal vs lognormal)
 
Distribution * GetFittedDistribution ()
 Get fitted distribution (from data)
 
const Distribution * GetFittedDistribution () const
 
Distribution * GetEstimatedDistribution ()
 Get estimated distribution (for MCMC optimization)
 
const Distribution * GetEstimatedDistribution () const
 
double GetEstimatedMu () const
 Get/set estimated mu parameter.
 
void SetEstimatedMu (double value)
 
double GetEstimatedSigma () const
 Get/set estimated sigma parameter.
 
void SetEstimatedSigma (double value)
 
CMBTimeSeries CreateDataCDF () const
 Create empirical CDF from data.
 
CMBTimeSeriesSet CreateCDFComparison (distribution_type dist_type) const
 Create comparison of empirical vs fitted CDF.
 
CMBTimeSeriesSet CreateFittedDistribution (distribution_type dist_type) const
 Create fitted distribution visualization.
 
double CalculateKolmogorovSmirnovStatistic (distribution_type dist_type) const
 Calculate Kolmogorov-Smirnov statistic.
 
ConcentrationSet CreateLogTransformed () const
 Create log-transformed copy.
 
double CalculateBoxCoxLogLikelihood (double lambda) const
 Calculate Box-Cox log-likelihood for given lambda.
 
ConcentrationSet ApplyBoxCoxTransform (double lambda, bool normalize) const
 Apply Box-Cox transformation.
 
double FindOptimalBoxCoxParameter (double min_lambda, double max_lambda, int n_intervals) const
 Find optimal Box-Cox lambda parameter.
 
vector< unsigned int > CalculateRanks () const
 Calculate ranks of values (1 = smallest)
 

Private Attributes

Distribution fitted_distribution_
 Distribution fitted to observed data.
 
Distribution estimated_distribution_
 Distribution being optimized (e.g., in MCMC)
 

Detailed Description

Manages a collection of concentration measurements with statistical analysis.

Inherits from vector<double> to store concentration values and provides:

  • Statistical measures (mean, standard deviation, norms)
  • Distribution fitting (normal, lognormal)
  • Box-Cox transformations
  • Goodness-of-fit testing (Kolmogorov-Smirnov)

Definition at line 22 of file concentrationset.h.

Constructor & Destructor Documentation

◆ ConcentrationSet() [1/3]

ConcentrationSet::ConcentrationSet ( )

Definition at line 9 of file concentrationset.cpp.

References vector.

◆ ConcentrationSet() [2/3]

ConcentrationSet::ConcentrationSet ( const ConcentrationSet &  other)

Definition at line 16 of file concentrationset.cpp.

References vector.

◆ ConcentrationSet() [3/3]

ConcentrationSet::ConcentrationSet ( int  n)

Definition at line 23 of file concentrationset.cpp.

References vector.

Member Function Documentation

◆ AppendSet() [1/2]

void ConcentrationSet::AppendSet ( ConcentrationSet *  other)

Definition at line 55 of file concentrationset.cpp.

◆ AppendSet() [2/2]

void ConcentrationSet::AppendSet ( const ConcentrationSet &  other)

Append all values from another set.

Definition at line 50 of file concentrationset.cpp.

Referenced by SourceSinkData::DifferentiationPower_Percentage().

◆ AppendValue()

void ConcentrationSet::AppendValue ( double  value)

Append a single concentration value.

Definition at line 45 of file concentrationset.cpp.

Referenced by SourceSinkData::ExtractConcentrationSet().

◆ ApplyBoxCoxTransform()

ConcentrationSet ConcentrationSet::ApplyBoxCoxTransform ( double  lambda,
bool  normalize 
) const

Apply Box-Cox transformation.

Parameters
lambdaTransformation parameter
normalizeIf true, scale by standard deviation

Definition at line 389 of file concentrationset.cpp.

References CalculateStdDev(), GetMinimum(), and log.

Referenced by Elemental_Profile_Set::ApplyBoxCoxTransform(), CalculateBoxCoxLogLikelihood(), Elemental_Profile_Set::DetectOutliers(), and FindOptimalBoxCoxParameter().

◆ CalculateBoxCoxLogLikelihood()

double ConcentrationSet::CalculateBoxCoxLogLikelihood ( double  lambda) const

Calculate Box-Cox log-likelihood for given lambda.

Definition at line 370 of file concentrationset.cpp.

References ApplyBoxCoxTransform(), CalculateMean(), CalculateStdDev(), and log.

◆ CalculateKolmogorovSmirnovStatistic()

double ConcentrationSet::CalculateKolmogorovSmirnovStatistic ( distribution_type  dist_type) const

Calculate Kolmogorov-Smirnov statistic.

Definition at line 356 of file concentrationset.cpp.

References CreateCDFComparison().

Referenced by FindOptimalBoxCoxParameter().

◆ CalculateLogLikelihood()

double ConcentrationSet::CalculateLogLikelihood ( const vector< double > &  params = vector<double>(),
distribution_type  dist_type = distribution_type::none 
) const

Calculate log-likelihood of data given distribution parameters.

Parameters
paramsDistribution parameters (empty to use fitted_distribution_)
dist_typeDistribution type (none to use fitted_distribution_)
Returns
Log-likelihood value

Definition at line 233 of file concentrationset.cpp.

References Distribution::distribution, Distribution::Eval(), fitted_distribution_, log, none, and Distribution::parameters.

◆ CalculateMean()

◆ CalculateMeanLog()

double ConcentrationSet::CalculateMeanLog ( ) const

◆ CalculateNorm()

double ConcentrationSet::CalculateNorm ( double  power = 2.0) const

Calculate sum of values raised to a power.

Definition at line 156 of file concentrationset.cpp.

References power.

◆ CalculateNormLog()

double ConcentrationSet::CalculateNormLog ( double  power = 2.0) const

Calculate sum of log-transformed values raised to a power.

Definition at line 166 of file concentrationset.cpp.

References log, and power.

◆ CalculateRanks()

vector< unsigned int > ConcentrationSet::CalculateRanks ( ) const

Calculate ranks of values (1 = smallest)

Definition at line 478 of file concentrationset.cpp.

Referenced by SourceSinkData::DifferentiationPower_Percentage().

◆ CalculateSSE()

double ConcentrationSet::CalculateSSE ( double  mean_value = -999) const

Calculate sum of squared errors from mean.

Definition at line 114 of file concentrationset.cpp.

References CalculateMean().

Referenced by SourceSinkData::ANOVA().

◆ CalculateSSELog()

double ConcentrationSet::CalculateSSELog ( double  mean_value = -999) const

Calculate sum of squared errors from log mean.

Definition at line 128 of file concentrationset.cpp.

References CalculateMeanLog(), and log.

Referenced by SourceSinkData::ANOVA().

◆ CalculateStdDev()

double ConcentrationSet::CalculateStdDev ( double  mean_value = -999) const

Calculate standard deviation.

Parameters
mean_valuePre-calculated mean, or -999 to calculate automatically

Definition at line 78 of file concentrationset.cpp.

References CalculateMean().

Referenced by ApplyBoxCoxTransform(), CalculateBoxCoxLogLikelihood(), CreateCDFComparison(), CreateFittedDistribution(), Elemental_Profile_Set::DetectOutliers(), SourceSinkData::DifferentiationPower(), EstimateDistributionParameters(), and SourceSinkData::t_TestPValue().

◆ CalculateStdDevLog()

double ConcentrationSet::CalculateStdDevLog ( double  mean_value = -999) const

Calculate standard deviation of log-transformed values.

Parameters
mean_valuePre-calculated log mean, or -999 to calculate automatically

Definition at line 96 of file concentrationset.cpp.

References CalculateMeanLog(), and log.

Referenced by SourceSinkData::ANOVA(), CreateCDFComparison(), CreateFittedDistribution(), SourceSinkData::DifferentiationPower(), EstimateDistributionParameters(), and SourceSinkData::t_TestPValue().

◆ CreateCDFComparison()

CMBTimeSeriesSet ConcentrationSet::CreateCDFComparison ( distribution_type  dist_type) const

◆ CreateDataCDF()

CMBTimeSeries ConcentrationSet::CreateDataCDF ( ) const

Create empirical CDF from data.

Definition at line 272 of file concentrationset.cpp.

Referenced by CreateCDFComparison(), and CreateFittedDistribution().

◆ CreateFittedDistribution()

CMBTimeSeriesSet ConcentrationSet::CreateFittedDistribution ( distribution_type  dist_type) const

Create fitted distribution visualization.

Definition at line 321 of file concentrationset.cpp.

References CalculateMean(), CalculateMeanLog(), CalculateStdDev(), CalculateStdDevLog(), CreateDataCDF(), Distribution::Eval(), lognormal, normal, and x.

Referenced by Conductor::ExecuteDistributionFitting().

◆ CreateLogTransformed()

ConcentrationSet ConcentrationSet::CreateLogTransformed ( ) const

Create log-transformed copy.

Definition at line 176 of file concentrationset.cpp.

References log.

◆ EstimateDistributionParameters()

vector< double > ConcentrationSet::EstimateDistributionParameters ( distribution_type  dist_type = distribution_type::none)

Estimate distribution parameters from data.

Parameters
dist_typeDistribution type (normal or lognormal)
Returns
Vector of parameters [mean, std_dev] or [mu, sigma]

Definition at line 199 of file concentrationset.cpp.

References CalculateMean(), CalculateMeanLog(), CalculateStdDev(), CalculateStdDevLog(), Distribution::distribution, estimated_distribution_, fitted_distribution_, lognormal, none, normal, Distribution::parameters, Distribution::SetDataMean(), Distribution::SetDataSTDev(), and Distribution::SetType().

Referenced by SourceSinkData::AssignAllDistributions().

◆ FindOptimalBoxCoxParameter()

double ConcentrationSet::FindOptimalBoxCoxParameter ( double  min_lambda,
double  max_lambda,
int  n_intervals 
) const

Find optimal Box-Cox lambda parameter.

Parameters
min_lambdaLower bound for search
max_lambdaUpper bound for search
n_intervalsNumber of intervals for grid search
Returns
Optimal lambda value

Definition at line 430 of file concentrationset.cpp.

References ApplyBoxCoxTransform(), CalculateKolmogorovSmirnovStatistic(), FindOptimalBoxCoxParameter(), GetMaximum(), GetMinimum(), and normal.

Referenced by FindOptimalBoxCoxParameter().

◆ GetEstimatedDistribution() [1/2]

Distribution * ConcentrationSet::GetEstimatedDistribution ( )
inline

Get estimated distribution (for MCMC optimization)

Definition at line 136 of file concentrationset.h.

References estimated_distribution_.

Referenced by SourceSinkData::LogLikelihoodSourceElementalDistributions().

◆ GetEstimatedDistribution() [2/2]

const Distribution * ConcentrationSet::GetEstimatedDistribution ( ) const
inline

Definition at line 137 of file concentrationset.h.

References estimated_distribution_.

◆ GetEstimatedMu()

double ConcentrationSet::GetEstimatedMu ( ) const
inline

Get/set estimated mu parameter.

Definition at line 142 of file concentrationset.h.

References estimated_distribution_, and Distribution::parameters.

◆ GetEstimatedSigma()

double ConcentrationSet::GetEstimatedSigma ( ) const
inline

Get/set estimated sigma parameter.

Definition at line 151 of file concentrationset.h.

References estimated_distribution_, and Distribution::parameters.

◆ GetFittedDistribution() [1/2]

Distribution * ConcentrationSet::GetFittedDistribution ( )
inline

Get fitted distribution (from data)

Definition at line 130 of file concentrationset.h.

References fitted_distribution_.

Referenced by SourceSinkData::AssignAllDistributions().

◆ GetFittedDistribution() [2/2]

const Distribution * ConcentrationSet::GetFittedDistribution ( ) const
inline

Definition at line 131 of file concentrationset.h.

References fitted_distribution_.

◆ GetMaximum()

double ConcentrationSet::GetMaximum ( ) const

Get maximum value.

Definition at line 192 of file concentrationset.cpp.

Referenced by SourceSinkData::BracketTest(), and FindOptimalBoxCoxParameter().

◆ GetMinimum()

double ConcentrationSet::GetMinimum ( ) const

◆ operator=()

ConcentrationSet & ConcentrationSet::operator= ( const ConcentrationSet &  other)

Definition at line 30 of file concentrationset.cpp.

References estimated_distribution_, and fitted_distribution_.

◆ SelectBestDistribution()

distribution_type ConcentrationSet::SelectBestDistribution ( )

Select best-fitting distribution (normal vs lognormal)

Returns
Distribution type with higher log-likelihood

Definition at line 259 of file concentrationset.cpp.

References GetMinimum(), lognormal, and normal.

◆ SetEstimatedMu()

void ConcentrationSet::SetEstimatedMu ( double  value)
inline

◆ SetEstimatedSigma()

void ConcentrationSet::SetEstimatedSigma ( double  value)
inline

Member Data Documentation

◆ estimated_distribution_

Distribution ConcentrationSet::estimated_distribution_
private

◆ fitted_distribution_

Distribution ConcentrationSet::fitted_distribution_
private

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