Trait rstats::Vecg

source ·
pub trait Vecg {
Show 39 methods // Required methods fn tm_statistic(self, centre: &[f64], spread: f64) -> Result<f64, RE>; fn columnp<U: Clone + Into<f64>>(self, c: usize, v: &[Vec<U>]) -> f64; fn sadd<U: Into<f64>>(self, s: U) -> Vec<f64>; fn smult<U: Into<f64>>(self, s: U) -> Vec<f64>; fn dotp<U: Clone + Into<f64>>(self, v: &[U]) -> f64; fn dotsig(self, sig: &[f64]) -> Result<f64, RE>; fn cosine<U: Clone + Into<f64>>(self, v: &[U]) -> f64; fn sine<U: Clone + Into<f64>>(self, v: &[U]) -> f64; fn vsub<U: Clone + Into<f64>>(self, v: &[U]) -> Vec<f64>; fn vsubunit<U: Clone + Into<f64>>(self, v: &[U]) -> Vec<f64>; fn vadd<U: Clone + Into<f64>>(self, v: &[U]) -> Vec<f64>; fn vdist<U: Clone + Into<f64>>(self, v: &[U]) -> f64; fn wvmean<U: Clone + Into<f64>>(self, ws: &[U]) -> f64; fn wvdist<U: Clone + Into<f64>, V: Clone + Into<f64>>( self, ws: &[U], v: &[V] ) -> f64; fn vdistsq<U: Clone + Into<f64>>(self, v: &[U]) -> f64; fn cityblockd<U: Clone + Into<f64>>(self, v: &[U]) -> f64; fn varea<U: Clone + PartialOrd + Into<f64>>(self, v: &[U]) -> f64; fn varc<U: Clone + PartialOrd + Into<f64>>(self, v: &[U]) -> f64; fn vsim<U: Clone + Into<f64>>(self, v: &[U]) -> f64; fn vcorrsim(self, v: Self) -> Result<f64, RE>; fn pdotp<U: Clone + PartialOrd + Into<f64>>(self, v: &[U]) -> f64; fn vdisim<U: Clone + Into<f64>>(self, v: &[U]) -> f64; fn covone<U: Clone + Into<f64>>(self, m: &[U]) -> TriangMat; fn kron<U: Clone + Into<f64>>(self, v: &[U]) -> Vec<f64>; fn outer<U: Clone + Into<f64>>(self, v: &[U]) -> Vec<Vec<f64>>; fn wedge<U: Clone + Into<f64>>(self, v: &[U]) -> TriangMat; fn geometric<U: Clone + Into<f64>>(self, b: &[U]) -> TriangMat; fn jointpdf<U: Clone + Into<f64>>(self, v: &[U]) -> Result<Vec<f64>, RE>; fn jointentropy<U: Clone + Into<f64>>(self, v: &[U]) -> Result<f64, RE>; fn dependence<U: Clone + PartialOrd + Into<f64>>( self, v: &[U] ) -> Result<f64, RE>; fn independence<U: Clone + PartialOrd + Into<f64>>( self, v: &[U] ) -> Result<f64, RE>; fn correlation<U: Clone + Into<f64>>(self, v: &[U]) -> f64; fn kendalcorr<U: Clone + Into<f64>>(self, v: &[U]) -> f64; fn spearmancorr<U: PartialOrd + Clone + Into<f64>>(self, v: &[U]) -> f64; fn contribvec_newpt(self, gm: &[f64], recips: f64) -> Result<Vec<f64>, RE>; fn contrib_newpt(self, gm: &[f64], recips: f64, nf: f64) -> Result<f64, RE>; fn contribvec_oldpt(self, gm: &[f64], recips: f64) -> Result<Vec<f64>, RE>; fn contrib_oldpt(self, gm: &[f64], recips: f64, nf: f64) -> Result<f64, RE>; fn house_reflect<U: Clone + PartialOrd + Into<f64>>( self, x: &[U] ) -> Vec<f64>;
}
Expand description

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

Required Methods§

source

fn tm_statistic(self, centre: &[f64], spread: f64) -> Result<f64, RE>

nd tm_statistic of self against centre (geometric median) spread (madgm)

source

fn columnp<U: Clone + Into<f64>>(self, c: usize, v: &[Vec<U>]) -> f64

Dot product of vector self with column c of matrix v

source

fn sadd<U: Into<f64>>(self, s: U) -> Vec<f64>

Scalar addition to vector

source

fn smult<U: Into<f64>>(self, s: U) -> Vec<f64>

Scalar multiplication of vector, creates new vec

source

fn dotp<U: Clone + Into<f64>>(self, v: &[U]) -> f64

Scalar product

source

fn dotsig(self, sig: &[f64]) -> Result<f64, RE>

Sigvec product with (zero median) vector self. Cloud density d in its direction:0 <= d <= |self|

source

fn cosine<U: Clone + Into<f64>>(self, v: &[U]) -> f64

Cosine of angle between two slices

source

fn sine<U: Clone + Into<f64>>(self, v: &[U]) -> f64

Sine of an angle with correct sign in any number of dimensions

source

fn vsub<U: Clone + Into<f64>>(self, v: &[U]) -> Vec<f64>

Vectors’ subtraction (difference)

source

fn vsubunit<U: Clone + Into<f64>>(self, v: &[U]) -> Vec<f64>

Vectors difference as unit vector (done together for efficiency)

source

fn vadd<U: Clone + Into<f64>>(self, v: &[U]) -> Vec<f64>

Vector addition

source

fn vdist<U: Clone + Into<f64>>(self, v: &[U]) -> f64

Euclidian distance

source

fn wvmean<U: Clone + Into<f64>>(self, ws: &[U]) -> f64

Weighted arithmetic mean of self:&[T], scaled by ws:&[U]

source

fn wvdist<U: Clone + Into<f64>, V: Clone + Into<f64>>( self, ws: &[U], v: &[V] ) -> f64

Weighted distance of self:&[T] to v:&[V], weighted by ws:&[U]

source

fn vdistsq<U: Clone + Into<f64>>(self, v: &[U]) -> f64

Euclidian distance squared

source

fn cityblockd<U: Clone + Into<f64>>(self, v: &[U]) -> f64

cityblock distance

source

fn varea<U: Clone + PartialOrd + Into<f64>>(self, v: &[U]) -> f64

Area spanned by two vectors always over their concave angle

source

fn varc<U: Clone + PartialOrd + Into<f64>>(self, v: &[U]) -> f64

Area proportional to the swept arc

source

fn vsim<U: Clone + Into<f64>>(self, v: &[U]) -> f64

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

source

fn vcorrsim(self, v: Self) -> Result<f64, RE>

Median correlation similarity of vectors, range [0,1]

source

fn pdotp<U: Clone + PartialOrd + Into<f64>>(self, v: &[U]) -> f64

Positive dotp [0,2|a||b|]

source

fn vdisim<U: Clone + Into<f64>>(self, v: &[U]) -> f64

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

source

fn covone<U: Clone + Into<f64>>(self, m: &[U]) -> TriangMat

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

source

fn kron<U: Clone + Into<f64>>(self, v: &[U]) -> Vec<f64>

Kronecker product of two vectors

source

fn outer<U: Clone + Into<f64>>(self, v: &[U]) -> Vec<Vec<f64>>

Outer product: matrix multiplication of column self with row v.

source

fn wedge<U: Clone + Into<f64>>(self, v: &[U]) -> TriangMat

Exterior (Grassman) algebra product: produces 2-blade components

source

fn geometric<U: Clone + Into<f64>>(self, b: &[U]) -> TriangMat

Geometric (Clifford) algebra product in matrix form: a*b + a∧b

source

fn jointpdf<U: Clone + Into<f64>>(self, v: &[U]) -> Result<Vec<f64>, RE>

Joint probability density function

source

fn jointentropy<U: Clone + Into<f64>>(self, v: &[U]) -> Result<f64, RE>

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

source

fn dependence<U: Clone + PartialOrd + Into<f64>>( self, v: &[U] ) -> Result<f64, RE>

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

source

fn independence<U: Clone + PartialOrd + Into<f64>>( self, v: &[U] ) -> Result<f64, RE>

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

source

fn correlation<U: Clone + Into<f64>>(self, v: &[U]) -> f64

Pearson’s correlation.

source

fn kendalcorr<U: Clone + Into<f64>>(self, v: &[U]) -> f64

Kendall Tau-B correlation.

source

fn spearmancorr<U: PartialOrd + Clone + Into<f64>>(self, v: &[U]) -> f64

Spearman rho correlation.

source

fn contribvec_newpt(self, gm: &[f64], recips: f64) -> Result<Vec<f64>, RE>

Change to gm that adding point self will cause

source

fn contrib_newpt(self, gm: &[f64], recips: f64, nf: f64) -> Result<f64, RE>

Normalized magnitude of change to gm that adding point self will cause

source

fn contribvec_oldpt(self, gm: &[f64], recips: f64) -> Result<Vec<f64>, RE>

Contribution of removing point self

source

fn contrib_oldpt(self, gm: &[f64], recips: f64, nf: f64) -> Result<f64, RE>

Normalized contribution of removing point self (as negative scalar)

source

fn house_reflect<U: Clone + PartialOrd + Into<f64>>(self, x: &[U]) -> Vec<f64>

Householder reflect

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl<T> Vecg for &[T]
where T: Clone + PartialOrd + Into<f64>,

source§

fn tm_statistic(self, centre: &[f64], spread: f64) -> Result<f64, RE>

nd tm_statistic of self against centre and spread.
Unlike in 1d, is always positive.

source§

fn columnp<U: Clone + Into<f64>>(self, c: usize, v: &[Vec<U>]) -> f64

Dot product of vector self with column c of matrix v

source§

fn sadd<U: Into<f64>>(self, s: U) -> Vec<f64>

Scalar addition to a vector, creates new vec

source§

fn smult<U: Into<f64>>(self, s: U) -> Vec<f64>

Scalar multiplication with a vector, creates new vec

source§

fn dotp<U: Clone + Into<f64>>(self, v: &[U]) -> f64

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

source§

fn dotsig(self, sig: &[f64]) -> Result<f64, RE>

Measure d of cloud density in (zero median) self direction:0 <= d <= |self| Product with signature vec of axial projections of some cloud.
Similar result can be obtained by projecting all points onto self but that is usually too slow.

source§

fn cosine<U: Clone + Into<f64>>(self, v: &[U]) -> f64

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

source§

fn sine<U: Clone + Into<f64>>(self, v: &[U]) -> f64

Generalized cross product:
Sine of an angle between self and v with correct sign in any number of dimensions

source§

fn vsub<U: Clone + Into<f64>>(self, v: &[U]) -> Vec<f64>

Vector subtraction

source§

fn vsubunit<U: Clone + Into<f64>>(self, v: &[U]) -> Vec<f64>

Vectors difference unitised (done together for efficiency)

source§

fn vadd<U: Clone + Into<f64>>(self, v: &[U]) -> Vec<f64>

Vector addition

source§

fn vdist<U: Clone + Into<f64>>(self, v: &[U]) -> f64

Euclidian distance

source§

fn wvmean<U: Clone + Into<f64>>(self, ws: &[U]) -> f64

Weighted arithmetic mean of self:&[T], scaled by ws:&[U]

source§

fn wvdist<U, V>(self, ws: &[U], v: &[V]) -> f64
where U: Clone + Into<f64>, V: Clone + Into<f64>,

Weighted distance of self:&[T] to v:&[V], scaled by ws:&[U] allows all three to be of different types

source§

fn vdistsq<U: Clone + Into<f64>>(self, v: &[U]) -> f64

Euclidian distance squared

source§

fn cityblockd<U: Clone + Into<f64>>(self, v: &[U]) -> f64

cityblock distance

source§

fn varea<U: Clone + PartialOrd + Into<f64>>(self, v: &[U]) -> f64

Area spanned by two vectors over their concave angle (always >= 0) |a||b||sin(theta)| == (1-cos2(theta)).sqrt() Attains maximum |a|.|b| when the vectors are orthogonal.

source§

fn varc<U: Clone + PartialOrd + Into<f64>>(self, v: &[U]) -> f64

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

source§

fn pdotp<U: Clone + PartialOrd + Into<f64>>(self, v: &[U]) -> f64

Positive dotp in the interval: [0,2|a||b|] = |a||b|(1+cos(theta)) = 2|a||b|S

source§

fn vsim<U: Clone + Into<f64>>(self, v: &[U]) -> f64

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

source§

fn vdisim<U: Clone + Into<f64>>(self, v: &[U]) -> f64

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

source§

fn vcorrsim(self, v: Self) -> Result<f64, RE>

Vectors median correlation similarity in [0,1]

source§

fn covone<U: Clone + Into<f64>>(self, m: &[U]) -> TriangMat

Lower triangular covariance matrix for a single vector. Where m is either mean or median vector (to be subtracted). Covariance matrix is symmetric (kind:2) (positive semi definite).

source§

fn kron<U: Clone + Into<f64>>(self, v: &[U]) -> Vec<f64>

Kronecker product of two vectors.
The indexing is always assumed to be in this order: row,column. Flat version of outer(wedge) product

source§

fn outer<U: Clone + Into<f64>>(self, v: &[U]) -> Vec<Vec<f64>>

Outer product: matrix multiplication of column self with row v.

source§

fn wedge<U: Clone + Into<f64>>(self, b: &[U]) -> TriangMat

Exterior (Grassman) algebra product: produces components of 2-blade a∧b

source§

fn geometric<U: Clone + Into<f64>>(self, b: &[U]) -> TriangMat

Geometric (Clifford) algebra product: a*b + a∧b in matrix form here the elements of the dot product a*b are placed in their natural positions on the diagonal (can be easily added)

source§

fn jointpdf<U: Clone + Into<f64>>(self, v: &[U]) -> Result<Vec<f64>, RE>

Joint probability density function of two pairwise matched slices

source§

fn jointentropy<U: Clone + Into<f64>>(self, v: &[U]) -> Result<f64, RE>

Joint entropy of two sets of the same length

source§

fn dependence<U: Clone + PartialOrd + Into<f64>>( self, v: &[U] ) -> Result<f64, RE>

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

source§

fn independence<U: Clone + PartialOrd + Into<f64>>( self, v: &[U] ) -> Result<f64, RE>

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

source§

fn correlation<U: Clone + Into<f64>>(self, v: &[U]) -> f64

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);
source§

fn kendalcorr<U: Clone + Into<f64>>(self, v: &[U]) -> f64

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);
source§

fn spearmancorr<U: PartialOrd + Clone + Into<f64>>(self, v: &[U]) -> f64

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);
source§

fn contribvec_newpt(self, gm: &[f64], recips: f64) -> Result<Vec<f64>, RE>

Delta gm that adding a point will cause

source§

fn contrib_newpt(self, gm: &[f64], recips: f64, nf: f64) -> Result<f64, RE>

Normalized magnitude of change to gm that adding a point will cause

source§

fn contribvec_oldpt(self, gm: &[f64], recips: f64) -> Result<Vec<f64>, RE>

Delta gm caused by removing an existing set point self

source§

fn contrib_oldpt(self, gm: &[f64], recips: f64, nf: f64) -> Result<f64, RE>

Normalized Contribution that removing an existing set point p will make Is a negative number

source§

fn house_reflect<U: Clone + PartialOrd + Into<f64>>(self, x: &[U]) -> Vec<f64>

Householder reflect

Implementors§