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)
 
ConcentrationSetoperator= (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)
 
DistributionGetFittedDistribution ()
 Get fitted distribution (from data)
 
const DistributionGetFittedDistribution () const
 
DistributionGetEstimatedDistribution ()
 Get estimated distribution (for MCMC optimization)
 
const DistributionGetEstimatedDistribution () 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: