pub trait Stats {
Show 27 methods
fn vmag(self) -> f64;
fn vmagsq(self) -> f64;
fn vreciprocal(self) -> Result<Vec<f64>>;
fn vinverse(self) -> Result<Vec<f64>>;
fn negv(self) -> Vec<f64>;
fn vunit(self) -> Vec<f64>;
fn pdf(self) -> Vec<f64>;
fn entropy(self) -> f64;
fn autocorr(self) -> f64;
fn lintrans(self) -> Vec<f64>;
fn symmatrix(self) -> Vec<Vec<f64>>;
fn amean(self) -> Result<f64>
where
Self: Sized,
{ ... }
fn ameanstd(self) -> Result<MStats>
where
Self: Sized,
{ ... }
fn awmean(self) -> Result<f64>
where
Self: Sized,
{ ... }
fn awmeanstd(self) -> Result<MStats>
where
Self: Sized,
{ ... }
fn hmean(self) -> Result<f64>
where
Self: Sized,
{ ... }
fn hmeanstd(self) -> Result<MStats>
where
Self: Sized,
{ ... }
fn hwmean(self) -> Result<f64>
where
Self: Sized,
{ ... }
fn hwmeanstd(self) -> Result<MStats>
where
Self: Sized,
{ ... }
fn gmean(self) -> Result<f64>
where
Self: Sized,
{ ... }
fn gmeanstd(self) -> Result<MStats>
where
Self: Sized,
{ ... }
fn gwmean(self) -> Result<f64>
where
Self: Sized,
{ ... }
fn gwmeanstd(self) -> Result<MStats>
where
Self: Sized,
{ ... }
fn median(self) -> Result<Med>
where
Self: Sized,
{ ... }
fn newmedian(self) -> Result<f64>
where
Self: Sized,
{ ... }
fn mad(self) -> Result<f64>
where
Self: Sized,
{ ... }
fn zeromedian(self) -> Result<Vec<f64>>
where
Self: Sized,
{ ... }
}
Expand description
Statistical measures of a single variable (one generic vector of data) and
vector algebra applicable to a single (generic) vector.
Thus these methods take no arguments.
There is just one limitation: data of end type i64
has to be explicitly converted to f64
.
That is to raise awareness that, in this particular case, some precision may be lost.
Function statsg::i64tof64(&s)
will convert the whole slice.
Required methods
fn vreciprocal(self) -> Result<Vec<f64>>
fn vreciprocal(self) -> Result<Vec<f64>>
vector with reciprocal components
(Auto)correlation coefficient of pairs of successive values of (time series) variable.
Provided methods
Weighted arithmetic men and standard deviation
Harmonic mean and experimental standard deviation
Weighted harmonic mean and standard deviation
Geometric mean and standard deviation ratio
Weighted geometric mean and standard deviation ratio
MAD median absolute deviation: data spread estimator that is more stable than variance
Implementations on Foreign Types
Vector with reciprocal components
Arithmetic mean
Example
use rstats::Stats;
let v1 = vec![1_f64,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14.];
assert_eq!(v1.as_slice().amean().unwrap(),7.5_f64);
Arithmetic mean and (population) standard deviation
Example
use rstats::Stats;
let v1 = vec![1_f64,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14.];
let res = v1.as_slice().ameanstd().unwrap();
assert_eq!(res.mean,7.5_f64);
assert_eq!(res.std,4.031128874149275_f64);
Linearly weighted arithmetic mean of an f64 slice.
Linearly ascending weights from 1 to n.
Time dependent data should be in the order of time increasing.
Then the most recent gets the most weight.
Example
use rstats::Stats;
let v1 = vec![1_f64,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14.];
assert_eq!(v1.as_slice().awmean().unwrap(),9.666666666666666_f64);
Linearly weighted arithmetic mean and standard deviation of an f64 slice.
Linearly ascending weights from 1 to n.
Time dependent data should be in the order of time increasing.
Example
use rstats::Stats;
let v1 = vec![1_f64,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14.];
let res = v1.as_slice().awmeanstd().unwrap();
assert_eq!(res.mean,9.666666666666666_f64);
assert_eq!(res.std,3.399346342395192_f64);
Harmonic mean of an f64 slice.
Example
use rstats::Stats;
let v1 = vec![1_f64,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14.];
assert_eq!(v1.as_slice().hmean().unwrap(),4.305622526633627_f64);
Harmonic mean and standard deviation std is based on reciprocal moments
Example
use rstats::Stats;
let v1 = vec![1_f64,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14.];
let res = v1.as_slice().hmeanstd().unwrap();
assert_eq!(res.mean,4.305622526633627_f64);
assert_eq!(res.std,1.1996764516690959_f64);
Linearly weighted harmonic mean of an f64 slice.
Linearly ascending weights from 1 to n.
Time dependent data should be ordered by increasing time.
Example
use rstats::Stats;
let v1 = vec![1_f64,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14.];
assert_eq!(v1.as_slice().hwmean().unwrap(),7.5_f64);
Weighted harmonic mean and standard deviation std is based on reciprocal moments
Example
use rstats::Stats;
let v1 = vec![1_f64,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14.];
let res = v1.as_slice().hmeanstd().unwrap();
assert_eq!(res.mean,4.305622526633627_f64);
assert_eq!(res.std,1.1996764516690959_f64);
Geometric mean of an i64 slice.
The geometric mean is just an exponential of an arithmetic mean
of log data (natural logarithms of the data items).
The geometric mean is less sensitive to outliers near maximal value.
Zero valued data is not allowed!
Example
use rstats::Stats;
let v1 = vec![1_f64,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14.];
assert_eq!(v1.as_slice().gmean().unwrap(),6.045855171418503_f64);
Geometric mean and std ratio of an f64 slice.
Zero valued data is not allowed.
Std of ln data becomes a ratio after conversion back.
Example
use rstats::Stats;
let v1 = vec![1_f64,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14.];
let res = v1.as_slice().gmeanstd().unwrap();
assert_eq!(res.mean,6.045855171418503_f64);
assert_eq!(res.std,2.1084348239406303_f64);
Linearly weighted geometric mean of an i64 slice.
Ascending weights from 1 down to n.
Time dependent data should be in time increasing order.
The geometric mean is an exponential of an arithmetic mean
of log data (natural logarithms of the data items).
The geometric mean is less sensitive to outliers near maximal value.
Zero valued data is not allowed!
Example
use rstats::Stats;
let v1 = vec![1_f64,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14.];
assert_eq!(v1.as_slice().gwmean().unwrap(),8.8185222496341_f64);
Linearly weighted version of gmeanstd.
Example
use rstats::Stats;
let v1 = vec![1_f64,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14.];
let res = v1.as_slice().gwmeanstd().unwrap();
assert_eq!(res.mean,8.8185222496341_f64);
assert_eq!(res.std,1.626825493266009_f64);
Median of a &[T] slice by sorting
Example
use rstats::{Stats};
let v1 = vec![1_u8,2,3,4,5,6,7,8,9,10,11,12,13,14];
let res = &v1.median().unwrap();
assert_eq!(res.median,7.5_f64);
assert_eq!(res.lquartile,4.25_f64);
assert_eq!(res.uquartile,10.75_f64);
MAD median absolute deviation: data spread estimator that is more stable than variance
Zero median data produced by subtracting the median. Analogous to zero mean data when subtracting the mean.
Probability density function of a sorted slice with repeats. Repeats are counted and removed
(Auto)correlation coefficient of pairs of successive values of (time series) f64 variable.
Example
use rstats::Stats;
let v1 = vec![1_f64,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14.];
assert_eq!(v1.autocorr(),0.9984603532054123_f64);
Reconstructs the full symmetric square matrix from its lower diagonal compact form, as produced by covar, covone, wcovar