Expand description
This crate provides estimators for statistics on a sequence of numbers. Thetypical workflow looks like this:
- If necessary, build your custom estimator using
concatenate
ordefine_moments
. - Initialize the estimator of your choice with
new()
. - Add some subset (called “sample”) of the sequence of numbers (called“population”) for which you want to estimate the statistic, using
add()
orcollect()
. - Calculate the statistic with
mean()
or similar.
You can run several estimators in parallel and merge them into one withmerge()
.
Everything is calculated iteratively in a single pass using constant memory,so the sequence of numbers can be an iterator. The used algorithms try toavoid numerical instabilities.
If you wantSerde support,include"serde"
in your list of features.
Note that deserializing does not currently check for all invalid inputs.For example, if you deserialize a corruptedVariance
it may returna negative value for variance, even though that is mathematically impossible.In a future minor release some of these checks may be added.
§Example
useaverage::{MeanWithError, Estimate};letmuta: MeanWithError = (1..6).map(f64::from).collect();a.add(42.);println!("The mean is {} ± {}.", a.mean(), a.error());
§Estimators
- Mean (
Mean
) and its error (MeanWithError
). - Weighted mean (
WeightedMean
) and its error(WeightedMeanWithError
). - Variance (
Variance
), skewness (Skewness
) and kurtosis(Kurtosis
). - Arbitrary higher moments (
define_moments
). - Quantiles (
Quantile
). - Minimum (
Min
) and maximum (Max
).
§Estimating several statistics at once
The estimators are designed to have minimal state. The recommended way tocalculate several of them at once is to create a struct with all theestimators you need. You can then implementadd
for your struct byforwarding to the underlying estimators. Everything is inlined, so thereshould be no overhead.
You can avoid the boilerplate code by using theconcatenate
macro.
Note that calculating moments requires calculating the lower moments, so youonly need to include the highest moment in your struct.
§Calculating histograms
Thedefine_histogram
macro can be used to define a histogram struct thatuses constant memory. SeeHistogram10
(defined usingdefine_histogram!(..., 10)
) and the extension traitHistogram
for the methods available to the generated struct.
Macros§
- assert_
almost_ eq - Assert that two numbers are almost equal to each other.
- concatenate
- Concatenate several iterative estimators into one.
- define_
histogram - Define a histogram with a number of bins known at compile time.
- define_
moments - Define an estimator of all moments up to a number given at compile time.
- impl_
extend - Implement
Extend<f64>
for an iterative estimator. - impl_
from_ iterator - Implement
FromIterator<f64>
for an iterative estimator. - impl_
from_ par_ iterator - Implement
FromParallelIterator<f64>
for an iterative estimator.
Structs§
- Covariance
- Estimate the arithmetic means and the covariance of a sequence of number pairs(“population”).
- Histogram10
- A histogram with a number of bins known at compile time.
- Kurtosis
std
orlibm
- Estimate the arithmetic mean, the variance, the skewness and the kurtosis ofa sequence of numbers (“population”).
- Max
- Estimate the maximum of a sequence of numbers (“population”).
- Mean
- Estimate the arithmetic mean of a sequence of numbers (“population”).
- Min
- Estimate the minimum of a sequence of numbers (“population”).
- Moments4
- Estimate the first N moments of a sequence of numbers (“population”).
- Quantile
std
orlibm
- Estimate the p-quantile of a sequence of numbers (“population”).
- Sample
OutOf Range Error - A sample is out of range of the histogram.
- Skewness
std
orlibm
- Estimate the arithmetic mean, the variance and the skewness of a sequence ofnumbers (“population”).
- Variance
- Estimate the arithmetic mean and the variance of a sequence of numbers(“population”).
- Weighted
Mean - Estimate the weighted and unweighted arithmetic mean of a sequence ofnumbers (“population”).
- Weighted
Mean With Error - Estimate the weighted and unweighted arithmetic mean and the unweightedvariance of a sequence of numbers (“population”).
Enums§
- Invalid
Range Error - Invalid ranges were specified for constructing the histogram.
Traits§
- Estimate
- Estimate a statistic of a sequence of numbers (“population”).
- Histogram
- Get the bins and ranges from a histogram.
- Merge
- Merge with another estimator.
Type Aliases§
- Mean
With Error - Alias for
Variance
.