Quick Links: |
#include <bdlsta_moment.h>
Public Types | |
enum | { e_SUCCESS = 0, e_INADEQUATE_DATA = -1 } |
Public Member Functions | |
void | add (double value) |
int | count () const |
double | kurtosis () const |
int | kurtosisIfValid (double *result) const |
double | mean () const |
int | meanIfValid (double *result) const |
double | skew () const |
int | skewIfValid (double *result) const |
double | variance () const |
int | varianceIfValid (double *result) const |
This class provides efficient and accurate online algorithms for calculating mean, variance, skew, and kurtosis. The class provides template specializations, so that no unnecessary data members will be kept or unnecessary calculations done. The online algorithms used are Welford for variance, and the stable M3 and M4 are taken from: https://en.wikipedia.org/wiki/Algorithms_for_calculating_variance#Higher-order_statistics
The formula for sample skewness is taken from: http://www.macroption.com/skewness-formula/
The formula for sample excess kurtosis is taken from: http://www.macroption.com/kurtosis-formula/
void bdlsta::Moment< ML >::add | ( | double | value | ) |
Add the specified value
to the data set.
int bdlsta::Moment< ML >::count | ( | ) | const |
Returns the number of elements in the data set.
double bdlsta::Moment< ML >::kurtosis | ( | ) | const |
Return the kurtosis of the data set. The behavior is undefined unless 4 <= count
and the variance is not zero.
int bdlsta::Moment< ML >::kurtosisIfValid | ( | double * | result | ) | const |
Load into the specified result
, the kurtosis of the data set. Return 0 on success, and a non-zero value otherwise. Specifically, e_INADEQUATE_DATA
is returned if 4 > count
or the variance is zero.
double bdlsta::Moment< ML >::mean | ( | ) | const |
Return the mean of the data set. The behavior is undefined unless 1 <= count
.
int bdlsta::Moment< ML >::meanIfValid | ( | double * | result | ) | const |
Load into the specified result
, the mean of the data set. Return 0 on success, and a non-zero value otherwise. Specifically, e_INADEQUATE_DATA
is returned if 1 > count
.
double bdlsta::Moment< ML >::skew | ( | ) | const |
Return skew of the data set. The behavior is undefined unless 3 <= count
or the variance is zero.
int bdlsta::Moment< ML >::skewIfValid | ( | double * | result | ) | const |
Load into the specified result
, the skew of the data set. Return 0 on success, and a non-zero value otherwise. Specifically, e_INADEQUATE_DATA
is returned if 3 > count
or the variance is zero.
double bdlsta::Moment< ML >::variance | ( | ) | const |
Return the variance of the data set. The behavior is undefined unless 2 <= count
.
int bdlsta::Moment< ML >::varianceIfValid | ( | double * | result | ) | const |
Load into the specified result
, the variance of the data set. Return 0 on success, and a non-zero value otherwise. Specifically, e_INADEQUATE_DATA
is returned if 2 > count
.