template<typename T = double, std::size_t WindowSize = 100>
liarsdice::statistics::StatisticalAccumulator class

Comprehensive statistical accumulator for running statistics.

Template parameters
WindowSize Size of rolling window for windowed statistics

Uses boost::accumulators to efficiently calculate various statistics in a single pass. Supports both complete and rolling window statistics.

Public types

struct Statistics
Get comprehensive statistics summary.
using value_type = T
using accumulator_set = acc::accumulator_set<T, acc::stats<acc::tag::count, acc::tag::mean, acc::tag::variance, acc::tag::min, acc::tag::max, acc::tag::median, acc::tag::skewness, acc::tag::kurtosis, acc::tag::moment<2>, acc::tag::moment<3>, acc::tag::moment<4>>>
using rolling_accumulator_set = acc::accumulator_set<T, acc::stats<acc::tag::rolling_mean, acc::tag::rolling_variance>>

Constructors, destructors, conversion operators

StatisticalAccumulator()
Default constructor.

Public functions

auto add(T value) -> void
Add a value to the accumulator.
template<typename InputIt>
auto add_range(InputIt first, InputIt last) -> void
Add multiple values.
auto count() const -> std::size_t
Get number of accumulated values.
auto mean() const -> T
Get mean of all values.
auto variance() const -> T
Get variance of all values.
auto standard_deviation() const -> T
Get standard deviation.
auto min() const -> T
Get minimum value.
auto max() const -> T
Get maximum value.
auto range() const -> T
Get range (max - min)
auto median() const -> T
Get median value.
auto skewness() const -> T
Get skewness.
auto kurtosis() const -> T
Get kurtosis.
auto coefficient_of_variation() const -> T
Get coefficient of variation (CV)
auto rms() const -> T
Get root mean square (RMS)
template<int N>
auto moment() const -> T
Get nth central moment.
auto rolling_mean() const -> T
Get rolling mean over window.
auto rolling_variance() const -> T
Get rolling variance over window.
auto rolling_std_dev() const -> T
Get rolling standard deviation.
auto get_statistics() const -> Statistics
auto is_normal_distributed(double alpha = 0.05) const -> bool
Check if distribution is approximately normal.
auto reset() -> void
Reset accumulator to initial state.

Function documentation

template<typename T _1, std::size_t WindowSize>
void liarsdice::statistics::StatisticalAccumulator<_1, WindowSize>::add(T value)

Add a value to the accumulator.

Parameters
value Value to accumulate

template<typename T _1, std::size_t WindowSize> template<typename InputIt>
void liarsdice::statistics::StatisticalAccumulator<_1, WindowSize>::add_range(InputIt first, InputIt last)

Add multiple values.

Parameters
first Beginning of range
last End of range

template<typename T _1, std::size_t WindowSize>
std::size_t liarsdice::statistics::StatisticalAccumulator<_1, WindowSize>::count() const

Get number of accumulated values.

Returns Count of values

template<typename T _1, std::size_t WindowSize>
T liarsdice::statistics::StatisticalAccumulator<_1, WindowSize>::mean() const

Get mean of all values.

Returns Mean value

template<typename T _1, std::size_t WindowSize>
T liarsdice::statistics::StatisticalAccumulator<_1, WindowSize>::variance() const

Get variance of all values.

Returns Variance

template<typename T _1, std::size_t WindowSize>
T liarsdice::statistics::StatisticalAccumulator<_1, WindowSize>::standard_deviation() const

Get standard deviation.

Returns Standard deviation

template<typename T _1, std::size_t WindowSize>
T liarsdice::statistics::StatisticalAccumulator<_1, WindowSize>::min() const

Get minimum value.

Returns Minimum value seen

template<typename T _1, std::size_t WindowSize>
T liarsdice::statistics::StatisticalAccumulator<_1, WindowSize>::max() const

Get maximum value.

Returns Maximum value seen

template<typename T _1, std::size_t WindowSize>
T liarsdice::statistics::StatisticalAccumulator<_1, WindowSize>::range() const

Get range (max - min)

Returns Range of values

template<typename T _1, std::size_t WindowSize>
T liarsdice::statistics::StatisticalAccumulator<_1, WindowSize>::median() const

Get median value.

Returns Median

template<typename T _1, std::size_t WindowSize>
T liarsdice::statistics::StatisticalAccumulator<_1, WindowSize>::skewness() const

Get skewness.

Returns Skewness measure

template<typename T _1, std::size_t WindowSize>
T liarsdice::statistics::StatisticalAccumulator<_1, WindowSize>::kurtosis() const

Get kurtosis.

Returns Kurtosis measure

template<typename T _1, std::size_t WindowSize>
T liarsdice::statistics::StatisticalAccumulator<_1, WindowSize>::coefficient_of_variation() const

Get coefficient of variation (CV)

Returns CV = std_dev / mean

template<typename T _1, std::size_t WindowSize>
T liarsdice::statistics::StatisticalAccumulator<_1, WindowSize>::rms() const

Get root mean square (RMS)

Returns RMS value

template<typename T _1, std::size_t WindowSize> template<int N>
T liarsdice::statistics::StatisticalAccumulator<_1, WindowSize>::moment() const

Get nth central moment.

Template parameters
N Moment order
Returns Nth central moment

template<typename T _1, std::size_t WindowSize>
T liarsdice::statistics::StatisticalAccumulator<_1, WindowSize>::rolling_mean() const

Get rolling mean over window.

Returns Mean of last WindowSize values

template<typename T _1, std::size_t WindowSize>
T liarsdice::statistics::StatisticalAccumulator<_1, WindowSize>::rolling_variance() const

Get rolling variance over window.

Returns Variance of last WindowSize values

template<typename T _1, std::size_t WindowSize>
T liarsdice::statistics::StatisticalAccumulator<_1, WindowSize>::rolling_std_dev() const

Get rolling standard deviation.

Returns Standard deviation of last WindowSize values

template<typename T _1, std::size_t WindowSize>
bool liarsdice::statistics::StatisticalAccumulator<_1, WindowSize>::is_normal_distributed(double alpha = 0.05) const

Check if distribution is approximately normal.

Parameters
alpha Significance level (default: 0.05)
Returns True if skewness and kurtosis suggest normality