pub trait Vecg<T, U> {
Show 25 methods fn sadd(self, s: U) -> Vec<f64>;
fn smult(self, s: U) -> Vec<f64>;
fn dotp(self, v: &[U]) -> f64;
fn cosine(self, v: &[U]) -> f64;
fn vsub(self, v: &[U]) -> Vec<f64>;
fn vsubunit(self, v: &[U]) -> Vec<f64>;
fn vadd(self, v: &[U]) -> Vec<f64>;
fn vdist(self, v: &[U]) -> f64;
fn vdistsq(self, v: &[U]) -> f64;
fn cityblockd(self, v: &[U]) -> f64;
fn varea(self, v: &[U]) -> f64;
fn varc(self, v: &[U]) -> f64;
fn vsim(self, v: &[U]) -> f64;
fn vdisim(self, v: &[U]) -> f64;
fn covone(self, m: &[U]) -> Vec<f64>;
fn kron(self, m: &[U]) -> Vec<f64>;
fn outer(self, m: &[U]) -> Vec<Vec<f64>>;
fn jointpdf(self, v: &[U]) -> Vec<f64>;
fn jointentropy(self, v: &[U]) -> f64;
fn dependence(self, v: &[U]) -> f64;
fn independence(self, v: &[U]) -> f64;
fn correlation(self, v: &[U]) -> f64;
fn mediancorr(self, v: &[U]) -> f64;
fn kendalcorr(self, v: &[U]) -> f64;
fn spearmancorr(self, v: &[U]) -> f64;
}
Expand description

Vector Algebra on two vectors (represented here as generic slices). Also included are scalar operations on the self vector.

Required methods

Scalar addition to vector

Scalar multiplication of vector, creates new vec

Scalar product

Cosine of angle between two slices

Vectors’ subtraction (difference)

Vectors difference as unit vector (done together for efficiency)

Vector addition

Euclidian distance

Euclidian distance squared

cityblock distance

Magnitude of the cross product |a x b| = |a||b|sin(theta). Attains maximum |a|.|b| when the vectors are othogonal.

Area proportional to the swept arc

Vector similarity S in the interval [0,1]: S = (1+cos(theta))/2

We define vector dissimilarity D in the interval [0,1]: D = 1-S = (1-cos(theta))/2

Lower triangular part of a covariance matrix for a single f64 vector.

Kronecker product of two vectors

Outer product of two vectors

Joint probability density function

Joint entropy of &[T],&[U] in nats (units of e)

Statistical pairwise dependence of &[T] &[U] variables in the range [0,1]

Statistical pairwise independence in the range [1,2] based on joint entropy

Cholesky decomposition of positive definite matrix into LLt Pearson’s correlation.

Median based correlation

Kendall Tau-B correlation.

Spearman rho correlation.

Implementations on Foreign Types

Scalar addition to a vector, creates new vec

Scalar addition to a vector, creates new vec

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

Cosine of angle between the two slices. Done in one iteration for efficiency.

Vector subtraction

Vectors difference unitised (done together for efficiency)

Vector addition

Euclidian distance

Euclidian distance squared

cityblock distance

Magnitude of the cross product |a x b| = |a||b|sin(theta). Attains maximum |a|.|b| when the vectors are orthogonal.

Area of swept arc = |a||b|(1-cos(theta)) = 2|a||b|D

We define vector similarity S in the interval [0,1] as S = (1+cos(theta))/2

We define vector dissimilarity D in the interval [0,1] as D = 1-S = (1-cos(theta))/2

Flattened lower triangular part of a covariance matrix. m can be either mean or median vector. Since covariance matrix is symmetric (positive semi definite), the upper triangular part can be trivially added for all j>i by: c(j,i) = c(i,j). N.b. the indexing is always assumed to be in this order: row,column. The items of the resulting lower triangular array c[i][j] are pushed flat into a single vector in this double loop order: left to right, top to bottom

Kronecker product of two vectors.
The indexing is always assumed to be in this order: row,column.

Outer product of two vectors.
The indexing is always assumed to be in this order: row,column.

Joint probability density function of two pairwise matched slices

Joint entropy of two sets of the same length

Dependence of &[T] &[U] variables in the range [0,1] returns 0 iff they are statistically component wise independent returns 1 when they are identical or all their values are unique

Independence of &[T] &[U] variables in the range [1,2] returns 2 iff they are statistically component wise independent

We define median based correlation as cosine of an angle between two zero median vectors (analogously to Pearson’s zero mean vectors)

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

Pearson’s (most common) correlation.

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

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

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

Spearman rho correlation. This is the simplest implementation with no sorting.

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

Implementors