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

Vector magnitude

Vector magnitude squared (sum of squares)

vector with reciprocal components

vector with inverse magnitude

Unit vector

Probability density function of a sorted slice

Information (entropy) in nats

(Auto)correlation coefficient of pairs of successive values of (time series) variable.

Linear transform to interval [0,1]

Reconstructs the full symmetric matrix from its lower diagonal compact form

Provided methods

Arithmetic mean

Arithmetic mean and standard deviation

Weighted arithmetic mean

Weighted arithmetic men and standard deviation

Harmonic mean

Harmonic mean and experimental standard deviation

Weighted harmonic mean

Weighted harmonic mean and standard deviation

Geometric mean

Geometric mean and standard deviation ratio

Weighed geometric mean

Weighted geometric mean and standard deviation ratio

Median and quartiles

Fast median only by partitioning

MAD median absolute deviation: data spread estimator that is more stable than variance

Zero median data, obtained by subtracting the median

Implementations on Foreign Types

Vector magnitude

Vector magnitude squared (sum of squares)

Vector with reciprocal components

Vector with inverse magnitude

Unit vector

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

Information (entropy) (in nats)

(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);

Linear transform to interval [0,1]

Reconstructs the full symmetric square matrix from its lower diagonal compact form, as produced by covar, covone, wcovar

Implementors