Trait rstats::Vecf64[][src]

pub trait Vecf64 {
Show methods fn smult(self, s: f64) -> Vec<f64>;
fn sadd(self, s: f64) -> Vec<f64>;
fn dotp(self, v: &[f64]) -> f64;
fn vinverse(self) -> Vec<f64>;
fn cosine(self, _v: &[f64]) -> f64;
fn vsub(self, v: &[f64]) -> Vec<f64>;
fn vadd(self, v: &[f64]) -> Vec<f64>;
fn vmag(self) -> f64;
fn vmagsq(self) -> f64;
fn vdist(self, v: &[f64]) -> f64;
fn vdistsq(self, v: &[f64]) -> f64;
fn vunit(self) -> Vec<f64>;
fn varea(self, v: &[f64]) -> f64;
fn varc(self, v: &[f64]) -> f64;
fn correlation(self, _v: &[f64]) -> f64;
fn kendalcorr(self, _v: &[f64]) -> f64;
fn spearmancorr(self, _v: &[f64]) -> f64;
fn kazutsugi(self) -> f64;
fn autocorr(self) -> f64;
fn minmax(self) -> (f64, usize, f64, usize);
fn lintrans(self) -> Vec<f64>;
fn sortf(self) -> Vec<f64>;
fn sortm(self) -> Vec<f64>;
fn mergerank(self) -> Vec<usize>;
fn mergesort(self, i: usize, n: usize) -> Vec<usize>;
}
Expand description

Vector algebra on one or two vectors.

Required methods

fn smult(self, s: f64) -> Vec<f64>[src]

Expand description

Scalar multiplication with a vector

fn sadd(self, s: f64) -> Vec<f64>[src]

Expand description

Scalar addition to vector

fn dotp(self, v: &[f64]) -> f64[src]

Expand description

Scalar product of two vectors

fn vinverse(self) -> Vec<f64>[src]

Expand description

Inverse vecor of magnitude 1/|v|

fn cosine(self, _v: &[f64]) -> f64[src]

Expand description

Cosine = a.dotp(b)/(a.vmag*b.vmag)

fn vsub(self, v: &[f64]) -> Vec<f64>[src]

Expand description

Vector subtraction

fn vadd(self, v: &[f64]) -> Vec<f64>[src]

Expand description

Vector addition

fn vmag(self) -> f64[src]

Expand description

Vector magnitude

fn vmagsq(self) -> f64[src]

Expand description

Vector magnitude squared

fn vdist(self, v: &[f64]) -> f64[src]

Expand description

Euclidian distance between two points

fn vdistsq(self, v: &[f64]) -> f64[src]

Expand description

vdist between two points squared

fn vunit(self) -> Vec<f64>[src]

Expand description

Unit vector

fn varea(self, v: &[f64]) -> f64[src]

Expand description

Area of parallelogram between two vectors (magnitude of cross product)

fn varc(self, v: &[f64]) -> f64[src]

Expand description

Area proportional to the swept arc

fn correlation(self, _v: &[f64]) -> f64[src]

Expand description

Correlation

fn kendalcorr(self, _v: &[f64]) -> f64[src]

Expand description

Kendall’s tau-b (rank order) correlation

fn spearmancorr(self, _v: &[f64]) -> f64[src]

Expand description

Spearman’s rho (rank differences) correlation

fn kazutsugi(self) -> f64[src]

Expand description

Kazutsugi Spearman’s corelation against just five distances (to outcomes classes)

fn autocorr(self) -> f64[src]

Expand description

Autocorrelation

fn minmax(self) -> (f64, usize, f64, usize)[src]

Expand description

Minimum, minimum’s index, maximum, maximum’s index.

fn lintrans(self) -> Vec<f64>[src]

Expand description

Linear transformation to [0,1]

fn sortf(self) -> Vec<f64>[src]

Expand description

Sorted vector

fn sortm(self) -> Vec<f64>[src]

Expand description

Sorted vector, sortf is wrapper for mergesort below

fn mergerank(self) -> Vec<usize>[src]

Expand description

Ranking with only n*log(n) complexity, using ‘mergesort’

fn mergesort(self, i: usize, n: usize) -> Vec<usize>[src]

Expand description

Immutable merge sort, makes a sort index

Loading content...

Implementations on Foreign Types

impl Vecf64 for &[f64][src]

fn smult(self, s: f64) -> Vec<f64>[src]

Scalar multiplication of a vector, creates new vec

fn sadd(self, s: f64) -> Vec<f64>[src]

Scalar addition to a vector, creates new vec

fn dotp(self, v: &[f64]) -> f64[src]

Scalar product of two f64 slices.
Must be of the same length - no error checking (for speed)

fn cosine(self, v: &[f64]) -> f64[src]

Cosine of an angle between two vectors.

Example

use rstats::Vecf64;
let v1 = vec![1_f64,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14.];
let v2 = vec![14_f64,1.,13.,2.,12.,3.,11.,4.,10.,5.,9.,6.,8.,7.];
assert_eq!(v1.cosine(&v2),0.7517241379310344);

fn vsub(self, v: &[f64]) -> Vec<f64>[src]

Vector subtraction, creates a new Vec result

fn vadd(self, v: &[f64]) -> Vec<f64>[src]

Vector addition, creates a new Vec result

fn vdist(self, v: &[f64]) -> f64[src]

Euclidian distance between two n dimensional points (vectors).
Slightly faster than vsub followed by vmag, as both are done in one loop

fn vdistsq(self, v: &[f64]) -> f64[src]

Euclidian distance squared between two n dimensional points (vectors).
Slightly faster than vsub followed by vmasq, as both are done in one loop Same as vdist without taking the square root

fn vmag(self) -> f64[src]

Vector magnitude

fn vmagsq(self) -> f64[src]

Vector magnitude squared

fn vunit(self) -> Vec<f64>[src]

Unit vector - creates a new one

fn varea(self, v: &[f64]) -> f64[src]

Area of a parallelogram between two vectors. Same as the magnitude of their cross product. Attains maximum |a|.|b| when the vectors are othogonal.

fn varc(self, v: &[f64]) -> f64[src]

Area proportional to the swept arc up to angle theta. Attains maximum of 2|a||b| when the vectors have opposite orientations. This is really |a||b|(1-cos(theta))

fn correlation(self, v: &[f64]) -> f64[src]

Pearson’s correlation coefficient of a sample of two f64 variables.

Example

use rstats::Vecf64;
let v1 = vec![1_f64,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14.];
let v2 = vec![14_f64,1.,13.,2.,12.,3.,11.,4.,10.,5.,9.,6.,8.,7.];
assert_eq!(v1.correlation(&v2),-0.1076923076923077);

fn kendalcorr(self, v: &[f64]) -> f64[src]

Kendall Tau-B correlation coefficient of a sample of two f64 variables. Defined by: tau = (conc - disc) / sqrt((conc + disc + tiesx) * (conc + disc + tiesy)) This is the simplest implementation with no sorting.

Example

use rstats::Vecf64;
let v1 = vec![1_f64,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14.];
let v2 = vec![14_f64,1.,13.,2.,12.,3.,11.,4.,10.,5.,9.,6.,8.,7.];
assert_eq!(v1.kendalcorr(&v2),-0.07692307692307693);

fn spearmancorr(self, v: &[f64]) -> f64[src]

Spearman rho correlation coefficient of two f64 variables. This is the simplest implementation with no sorting.

Example

use rstats::Vecf64;
let v1 = vec![1_f64,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14.];
let v2 = vec![14_f64,1.,13.,2.,12.,3.,11.,4.,10.,5.,9.,6.,8.,7.];
assert_eq!(v1.spearmancorr(&v2),-0.1076923076923077);

fn kazutsugi(self) -> f64[src]

Spearman correlation of five distances against Kazutsugi discrete outcomes [0.00,0.25,0.50,0.75,1.00], ranked as [4,3,2,1,0] (the order is swapped to penalise distances). The result is in the range [-1,1].

Example

use rstats::Vecf64;
let v1:Vec<f64> = vec![4.,1.,2.,0.,3.];
assert_eq!(v1.kazutsugi(),0.3);

fn autocorr(self) -> f64[src]

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

Example

use rstats::Vecf64;
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);

fn minmax(self) -> (f64, usize, f64, usize)[src]

Finds minimum, minimum’s index, maximum, maximum’s index of &f64 Here self is usually some data, rather than a vector

fn lintrans(self) -> Vec<f64>[src]

Linear transform to interval [0,1]

fn sortf(self) -> Vec<f64>[src]

New sorted vector Copies self and then sorts it in place, leaving self unchanged (immutable).

fn sortm(self) -> Vec<f64>[src]

Returns new sorted vector, just as ‘sortf’ above but using our indexing ‘mergesort’ below

fn mergerank(self) -> Vec<usize>[src]

Inverts the (merge) sort index, giving the ranking.
Sort index is in the order of sorted items, giving their indices to the original data. Ranking is in the order of original data, giving their positions in the sort index. Very fast ranking of many f64 items, ranking self with only n*(log(n)+1) complexity.

fn mergesort(self, i: usize, n: usize) -> Vec<usize>[src]

Recursive non-destructive merge sort. The data is read-only, it is not moved or mutated. Returns vector of indices to self from i to i+n, such that the indexed values are in sort order.
Thus we are moving the index values instead of the actual values.

fn vinverse(self) -> Vec<f64>[src]

Loading content...

Implementors

Loading content...