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
Implementations on Foreign Types
impl Vecf64 for &[f64]
[src]
impl Vecf64 for &[f64]
[src]fn dotp(self, v: &[f64]) -> f64
[src]
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]
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 vdist(self, v: &[f64]) -> f64
[src]
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]
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 varea(self, v: &[f64]) -> f64
[src]
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]
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]
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]
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]
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]
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]
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]
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 sortf(self) -> Vec<f64>
[src]
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]
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]
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]
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.