SedSat3 1.1.6
Sediment Source Apportionment Tool - Advanced statistical methods for environmental pollution research
Loading...
Searching...
No Matches
concentrationset.h
Go to the documentation of this file.
1#ifndef CONCENTRATIONSET_H
2#define CONCENTRATIONSET_H
3
4#include <vector>
5#include <string>
6#include "Distribution.h"
7#include "cmbtimeseries.h"
8#include "cmbtimeseriesset.h"
9
10using namespace std;
11
22class ConcentrationSet : public vector<double>
23{
24public:
25 // ========== Construction and Assignment ==========
26
29 ConcentrationSet(int n);
31
32 // ========== Data Management ==========
33
37 void AppendValue(double value);
38
42 void AppendSet(const ConcentrationSet& other);
43 void AppendSet(ConcentrationSet* other);
44
45 // ========== Basic Statistics ==========
46
50 double CalculateMean() const;
51
56 double CalculateStdDev(double mean_value = -999) const;
57
61 double CalculateMeanLog() const;
62
67 double CalculateStdDevLog(double mean_value = -999) const;
68
72 double CalculateSSE(double mean_value = -999) const;
73
77 double CalculateSSELog(double mean_value = -999) const;
78
82 double CalculateNorm(double power = 2.0) const;
83
87 double CalculateNormLog(double power = 2.0) const;
88
92 double GetMinimum() const;
93
97 double GetMaximum() const;
98
99 // ========== Distribution Fitting ==========
100
106 vector<double> EstimateDistributionParameters(
108 );
109
117 const vector<double>& params = vector<double>(),
119 ) const;
120
126
132
138
143 void SetEstimatedMu(double value) {
146 }
147
156
157 // ========== Goodness-of-Fit Testing ==========
158
163
168
173
178
179 // ========== Transformations ==========
180
185
189 double CalculateBoxCoxLogLikelihood(double lambda) const;
190
196 ConcentrationSet ApplyBoxCoxTransform(double lambda, bool normalize) const;
197
206 double min_lambda,
207 double max_lambda,
208 int n_intervals
209 ) const;
210
211 // ========== Utility Functions ==========
212
216 vector<unsigned int> CalculateRanks() const;
217
218private:
221};
222
223#endif // CONCENTRATIONSET_H
Collection of time series with labels and observed values.
Time series data container with Interface support.
Manages a collection of concentration measurements with statistical analysis.
double CalculateSSE(double mean_value=-999) const
Calculate sum of squared errors from mean.
ConcentrationSet CreateLogTransformed() const
Create log-transformed copy.
double CalculateMean() const
Calculate arithmetic mean.
double CalculateLogLikelihood(const vector< double > &params=vector< double >(), distribution_type dist_type=distribution_type::none) const
Calculate log-likelihood of data given distribution parameters.
CMBTimeSeriesSet CreateCDFComparison(distribution_type dist_type) const
Create comparison of empirical vs fitted CDF.
Distribution * GetEstimatedDistribution()
Get estimated distribution (for MCMC optimization)
void SetEstimatedSigma(double value)
double CalculateStdDevLog(double mean_value=-999) const
Calculate standard deviation of log-transformed values.
vector< double > EstimateDistributionParameters(distribution_type dist_type=distribution_type::none)
Estimate distribution parameters from data.
Distribution estimated_distribution_
Distribution being optimized (e.g., in MCMC)
CMBTimeSeries CreateDataCDF() const
Create empirical CDF from data.
double CalculateMeanLog() const
Calculate mean of log-transformed values.
void SetEstimatedMu(double value)
double CalculateBoxCoxLogLikelihood(double lambda) const
Calculate Box-Cox log-likelihood for given lambda.
double CalculateNormLog(double power=2.0) const
Calculate sum of log-transformed values raised to a power.
double CalculateKolmogorovSmirnovStatistic(distribution_type dist_type) const
Calculate Kolmogorov-Smirnov statistic.
vector< unsigned int > CalculateRanks() const
Calculate ranks of values (1 = smallest)
double GetEstimatedMu() const
Get/set estimated mu parameter.
double GetMaximum() const
Get maximum value.
distribution_type SelectBestDistribution()
Select best-fitting distribution (normal vs lognormal)
void AppendSet(const ConcentrationSet &other)
Append all values from another set.
double GetMinimum() const
Get minimum value.
double FindOptimalBoxCoxParameter(double min_lambda, double max_lambda, int n_intervals) const
Find optimal Box-Cox lambda parameter.
double GetEstimatedSigma() const
Get/set estimated sigma parameter.
ConcentrationSet ApplyBoxCoxTransform(double lambda, bool normalize) const
Apply Box-Cox transformation.
double CalculateNorm(double power=2.0) const
Calculate sum of values raised to a power.
Distribution * GetFittedDistribution()
Get fitted distribution (from data)
void AppendValue(double value)
Append a single concentration value.
CMBTimeSeriesSet CreateFittedDistribution(distribution_type dist_type) const
Create fitted distribution visualization.
const Distribution * GetEstimatedDistribution() const
ConcentrationSet & operator=(const ConcentrationSet &other)
const Distribution * GetFittedDistribution() const
double CalculateSSELog(double mean_value=-999) const
Calculate sum of squared errors from log mean.
double CalculateStdDev(double mean_value=-999) const
Calculate standard deviation.
Distribution fitted_distribution_
Distribution fitted to observed data.
Represents a parametric probability distribution for uncertainty quantification.
vector< double > parameters
Distribution parameters vector.
distribution_type
Enumeration of probability distribution types supported in SedSat3.
@ none
No distribution assigned (uninitialized state)