[−][src]Trait rstats::Vecf64
Vector algebra on one or two vectors.
Required methods
fn smult(self, s: f64) -> Vec<f64>
Scalar multiplication with a vector
fn sadd(self, s: f64) -> Vec<f64>
Scalar addition to vector
fn dotp(self, v: &[f64]) -> f64
Scalar product of two vectors
fn cosine(self, _v: &[f64]) -> f64
Cosine = a.dotp(b)/(a.vmag*b.vmag)
fn vsub(self, v: &[f64]) -> Vec<f64>
Vector subtraction
fn vadd(self, v: &[f64]) -> Vec<f64>
Vector addition
fn vmag(self) -> f64
Vector magnitude
fn vmagsq(self) -> f64
Vector magnitude squared
fn vdist(self, v: &[f64]) -> f64
Euclidian distance between two points
fn vdistu8(self, v: &[u8]) -> f64
fn vunit(self) -> Vec<f64>
Unit vector
fn varea(self, v: &[f64]) -> f64
Area of parallelogram between two vectors (magnitude of cross product)
fn varc(self, v: &[f64]) -> f64
Area proportional to the swept arc
fn correlation(self, _v: &[f64]) -> f64
Correlation
fn kendalcorr(self, _v: &[f64]) -> f64
Kendall's tau-b (rank order) correlation
fn spearmancorr(self, _v: &[f64]) -> f64
Spearman's rho (rank differences) correlation
fn kazutsugi(self) -> f64
Kazutsugi Spearman's corelation against just five distances (to outcomes classes)
fn autocorr(self) -> f64
Autocorrelation
fn minmax(self) -> (f64, usize, f64, usize)
Minimum, minimum's index, maximum, maximum's index.
fn lintrans(self) -> Vec<f64>
Linear transformation to [0,1]
fn sortf(self) -> Vec<f64>
Sorted vector
fn mergerank(self) -> Vec<usize>
Reursive merge sort building ranks in n*log(n)
fn mergesort(self, i: usize, n: usize) -> Vec<usize>
Immutable merge sort, makes an index
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 vdistu8(self, v: &[u8]) -> f64
[src]
Euclidian distance, same as vdist but the argument is of &u8 type
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 [0,1], rounded to five decimal places.
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]
Make sorted vector
fn mergerank(self) -> Vec<usize>
[src]
Reverses the sort index, thus ranking self
with only n*(log(n)+1) complexity.
fn mergesort(self, i: usize, n: usize) -> Vec<usize>
[src]
Recursive non-destructive merge sort. Indexes self in sort-order from i to i+n (instead of mutating self as the standard Rust sort does).