more ai generated doc with human review
This commit is contained in:
@@ -1,9 +1,13 @@
|
||||
/*! \file pistatistic.h
|
||||
* \ingroup Math
|
||||
* \~\brief
|
||||
* \~english Calculating math statistic of values array
|
||||
* \~russian Вычисление математической статистики у массива чисел
|
||||
*/
|
||||
//! \addtogroup Math
|
||||
//! \{
|
||||
//! \file pistatistic.h
|
||||
//! \brief
|
||||
//! \~english Calculating math statistic of values array
|
||||
//! \~russian Вычисление математической статистики у массива чисел
|
||||
//! \details
|
||||
//! \~english Template class for calculating statistical measures of a data set
|
||||
//! \~russian Шаблонный класс для вычисления статистических характеристик набора данных
|
||||
//! \}
|
||||
/*
|
||||
PIP - Platform Independent Primitives
|
||||
Class for calculacing math statistic in values array
|
||||
@@ -28,13 +32,20 @@
|
||||
|
||||
#include "pimathbase.h"
|
||||
|
||||
//! Statistical calculator template class
|
||||
//! \~english Template class for calculating statistical measures (mean, variance, skewness, kurtosis)
|
||||
//! \~russian Шаблонный класс для вычисления статистических показателей (среднее, дисперсия, асимметрия, эксцесс)
|
||||
template<typename T>
|
||||
class PIStatistic {
|
||||
static_assert(std::is_arithmetic<T>::value, "Type must be arithmetic");
|
||||
|
||||
public:
|
||||
//! Construct empty statistic calculator
|
||||
PIStatistic() { mean = variance = skewness = kurtosis = T(); }
|
||||
|
||||
//! Calculate arithmetic mean
|
||||
//! \~english Calculate arithmetic mean of values
|
||||
//! \~russian Вычислить среднее арифметическое значение
|
||||
static T calculateMean(const PIVector<T> & val) {
|
||||
T ret = T();
|
||||
int n = val.size();
|
||||
@@ -43,10 +54,13 @@ public:
|
||||
ret += val[i];
|
||||
return ret / n;
|
||||
}
|
||||
//! Calculate all statistics with given mean
|
||||
//! \~english Calculate variance, skewness and kurtosis using provided mean value
|
||||
//! \~russian Вычислить дисперсию, асимметрию и эксцесс с использованием заданного среднего значения
|
||||
bool calculate(const PIVector<T> & val, const T & given_mean) {
|
||||
T v = T(), v1 = T(), v2 = T(), stddev = T(), var = T();
|
||||
int i, n = val.size();
|
||||
mean = given_mean;
|
||||
mean = given_mean;
|
||||
if (n < 2) return false;
|
||||
variance = skewness = kurtosis = T();
|
||||
// Variance (using corrected two-pass algorithm)
|
||||
@@ -72,11 +86,18 @@ public:
|
||||
}
|
||||
return true;
|
||||
}
|
||||
//! Calculate all statistics
|
||||
//! \~english Calculate mean, variance, skewness and kurtosis
|
||||
//! \~russian Вычислить среднее, дисперсию, асимметрию и эксцесс
|
||||
bool calculate(const PIVector<T> & val) { return calculate(val, calculateMean(val)); }
|
||||
|
||||
//! Arithmetic mean
|
||||
T mean;
|
||||
//! Variance
|
||||
T variance;
|
||||
//! Skewness (third standardized moment)
|
||||
T skewness;
|
||||
//! Kurtosis (fourth standardized moment)
|
||||
T kurtosis;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user