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) -> f64; 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 unit self: measure of cloud density in self direction:0 <= s <= 1

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) -> f64

Median correlation similarity in the interval [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 p of cloud density in self direction:0 <= p <= 1 Product of unit self vector with signature vec of axial projections.
Similar result can be obtained by projecting onto self all points 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]) -> f64where 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>(self, v: &[U]) -> f64where U: Into<f64> + Clone,

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) -> f64

We define vector median correlation similarity in the interval [0,1] as

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 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>

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§