cern.colt.matrix.doublealgo

## Class Statistic

• ```public class Statistic
extends Object```
Basic statistics operations on matrices. Computation of covariance, correlation, distance matrix. Random sampling views. Conversion to histograms with and without OLAP cube operators. Conversion to bins with retrieval of statistical bin measures. Also see `cern.jet.stat` and `hep.aida.bin`, in particular `hep.aida.bin.DynamicBin1D`.

Examples:

 A covariance(A) correlation(covariance(A)) distance(A,EUCLID) 4 x 3 matrix 1  2   3 2  4   6 3  6   9 4 -8 -10 3 x 3 matrix  1.25 -3.5 -4.5 -3.5  29   39   -4.5  39   52.5 3 x 3 matrix  1        -0.581318 -0.555492 -0.581318  1         0.999507 -0.555492  0.999507  1 3 x 3 matrix  0        12.569805 15.874508 12.569805  0         4.242641 15.874508  4.242641  0
Version:
1.0, 09/24/99
Author:
wolfgang.hoschek@cern.ch
• ### Nested Class Summary

Nested Classes
Modifier and Type Class and Description
`static interface ` `Statistic.VectorVectorFunction`
Interface that represents a function object: a function that takes two argument vectors and returns a single value.
• ### Field Summary

Fields
Modifier and Type Field and Description
`static Statistic.VectorVectorFunction` `BRAY_CURTIS`
Bray-Curtis distance function; Sum( abs(x[i]-y[i]) ) / Sum( x[i]+y[i] ).
`static Statistic.VectorVectorFunction` `CANBERRA`
Canberra distance function; Sum( abs(x[i]-y[i]) / abs(x[i]+y[i]) ).
`static Statistic.VectorVectorFunction` `EUCLID`
Euclidean distance function; Sqrt(Sum( (x[i]-y[i])^2 )).
`static Statistic.VectorVectorFunction` `MANHATTAN`
Manhattan distance function; Sum( abs(x[i]-y[i]) ).
`static Statistic.VectorVectorFunction` `MAXIMUM`
Maximum distance function; Max( abs(x[i]-y[i]) ).
• ### Constructor Summary

Constructors
Modifier Constructor and Description
`protected ` `Statistic()`
Makes this class non instantiable, but still let's others inherit from it.
• ### Method Summary

Methods
Modifier and Type Method and Description
`static DoubleMatrix2D` `correlation(DoubleMatrix2D covariance)`
Modifies the given covariance matrix to be a correlation matrix (in-place).
`static DoubleMatrix2D` `covariance(DoubleMatrix2D matrix)`
Constructs and returns the covariance matrix of the given matrix.
`static void` `demo1()`
Demonstrates usage of this class.
`static void` ```demo2(int rows, int columns, boolean print)```
Demonstrates usage of this class.
`static void` `demo3(Statistic.VectorVectorFunction norm)`
Demonstrates usage of this class.
`static DoubleMatrix2D` ```distance(DoubleMatrix2D matrix, Statistic.VectorVectorFunction distanceFunction)```
Constructs and returns the distance matrix of the given matrix.
`static void` `main(String[] args)`
Benchmarks covariance computation.
`static DoubleMatrix1D` ```viewSample(DoubleMatrix1D matrix, double fraction, RandomEngine randomGenerator)```
Constructs and returns a sampling view with a size of round(matrix.size() * fraction).
`static DoubleMatrix2D` ```viewSample(DoubleMatrix2D matrix, double rowFraction, double columnFraction, RandomEngine randomGenerator)```
Constructs and returns a sampling view with round(matrix.rows() * rowFraction) rows and round(matrix.columns() * columnFraction) columns.
`static DoubleMatrix3D` ```viewSample(DoubleMatrix3D matrix, double sliceFraction, double rowFraction, double columnFraction, RandomEngine randomGenerator)```
Constructs and returns a sampling view with round(matrix.slices() * sliceFraction) slices and round(matrix.rows() * rowFraction) rows and round(matrix.columns() * columnFraction) columns.
• ### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
• ### Field Detail

• #### EUCLID

`public static final Statistic.VectorVectorFunction EUCLID`
Euclidean distance function; Sqrt(Sum( (x[i]-y[i])^2 )).
• #### BRAY_CURTIS

`public static final Statistic.VectorVectorFunction BRAY_CURTIS`
Bray-Curtis distance function; Sum( abs(x[i]-y[i]) ) / Sum( x[i]+y[i] ).
• #### CANBERRA

`public static final Statistic.VectorVectorFunction CANBERRA`
Canberra distance function; Sum( abs(x[i]-y[i]) / abs(x[i]+y[i]) ).
• #### MAXIMUM

`public static final Statistic.VectorVectorFunction MAXIMUM`
Maximum distance function; Max( abs(x[i]-y[i]) ).
• #### MANHATTAN

`public static final Statistic.VectorVectorFunction MANHATTAN`
Manhattan distance function; Sum( abs(x[i]-y[i]) ).
• ### Constructor Detail

• #### Statistic

`protected Statistic()`
Makes this class non instantiable, but still let's others inherit from it.
• ### Method Detail

• #### correlation

`public static DoubleMatrix2D correlation(DoubleMatrix2D covariance)`
Modifies the given covariance matrix to be a correlation matrix (in-place). The correlation matrix is a square, symmetric matrix consisting of nothing but correlation coefficients. The rows and the columns represent the variables, the cells represent correlation coefficients. The diagonal cells (i.e. the correlation between a variable and itself) will equal 1, for the simple reason that the correlation coefficient of a variable with itself equals 1. The correlation of two column vectors x and y is given by corr(x,y) = cov(x,y) / (stdDev(x)*stdDev(y)) (Pearson's correlation coefficient). A correlation coefficient varies between -1 (for a perfect negative relationship) to +1 (for a perfect positive relationship). See the math definition and another def. Compares two column vectors at a time. Use dice views to compare two row vectors at a time.
Parameters:
`covariance` - a covariance matrix, as, for example, returned by method `covariance(DoubleMatrix2D)`.
Returns:
the modified covariance, now correlation matrix (for convenience only).
• #### covariance

`public static DoubleMatrix2D covariance(DoubleMatrix2D matrix)`
Constructs and returns the covariance matrix of the given matrix. The covariance matrix is a square, symmetric matrix consisting of nothing but covariance coefficients. The rows and the columns represent the variables, the cells represent covariance coefficients. The diagonal cells (i.e. the covariance between a variable and itself) will equal the variances. The covariance of two column vectors x and y is given by cov(x,y) = (1/n) * Sum((x[i]-mean(x)) * (y[i]-mean(y))). See the math definition. Compares two column vectors at a time. Use dice views to compare two row vectors at a time.
Parameters:
`matrix` - any matrix; a column holds the values of a given variable.
Returns:
the covariance matrix (n x n, n=matrix.columns).
• #### demo1

`public static void demo1()`
Demonstrates usage of this class.
• #### demo2

```public static void demo2(int rows,
int columns,
boolean print)```
Demonstrates usage of this class.
• #### demo3

`public static void demo3(Statistic.VectorVectorFunction norm)`
Demonstrates usage of this class.
• #### distance

```public static DoubleMatrix2D distance(DoubleMatrix2D matrix,
Statistic.VectorVectorFunction distanceFunction)```
Constructs and returns the distance matrix of the given matrix. The distance matrix is a square, symmetric matrix consisting of nothing but distance coefficients. The rows and the columns represent the variables, the cells represent distance coefficients. The diagonal cells (i.e. the distance between a variable and itself) will be zero. Compares two column vectors at a time. Use dice views to compare two row vectors at a time.
Parameters:
`matrix` - any matrix; a column holds the values of a given variable (vector).
`distanceFunction` - (EUCLID, CANBERRA, ..., or any user defined distance function operating on two vectors).
Returns:
the distance matrix (n x n, n=matrix.columns).
• #### main

`public static void main(String[] args)`
Benchmarks covariance computation.
• #### viewSample

```public static DoubleMatrix1D viewSample(DoubleMatrix1D matrix,
double fraction,
RandomEngine randomGenerator)```
Constructs and returns a sampling view with a size of round(matrix.size() * fraction). Samples "without replacement" from the uniform distribution.
Parameters:
`matrix` - any matrix.
`rowFraction` - the percentage of rows to be included in the view.
`columnFraction` - the percentage of columns to be included in the view.
`randomGenerator` - a uniform random number generator; set this parameter to null to use a default generator seeded with the current time.
Returns:
the sampling view.
Throws:
`IllegalArgumentException` - if ! (0 <= rowFraction <= 1 && 0 <= columnFraction <= 1).
`RandomSampler`
• #### viewSample

```public static DoubleMatrix2D viewSample(DoubleMatrix2D matrix,
double rowFraction,
double columnFraction,
RandomEngine randomGenerator)```
Constructs and returns a sampling view with round(matrix.rows() * rowFraction) rows and round(matrix.columns() * columnFraction) columns. Samples "without replacement". Rows and columns are randomly chosen from the uniform distribution. Examples:  matrix rowFraction=0.2 columnFraction=0.2 rowFraction=0.2 columnFraction=1.0 rowFraction=1.0 columnFraction=0.2 10 x 10 matrix  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 16 17 18 19  20 21 22 23 24 25 26 27 28 29  30 31 32 33 34 35 36 37 38 39  40 41 42 43 44 45 46 47 48 49  50 51 52 53 54 55 56 57 58 59  60 61 62 63 64 65 66 67 68 69  70 71 72 73 74 75 76 77 78 79  80 81 82 83 84 85 86 87 88 89  90 91 92 93 94 95 96 97 98 99 100 2 x 2 matrix 43 50 53 60 2 x 10 matrix 41 42 43 44 45 46 47 48 49  50 91 92 93 94 95 96 97 98 99 100 10 x 2 matrix  4  8 14 18 24 28 34 38 44 48 54 58 64 68 74 78 84 88 94 98
Parameters:
`matrix` - any matrix.
`rowFraction` - the percentage of rows to be included in the view.
`columnFraction` - the percentage of columns to be included in the view.
`randomGenerator` - a uniform random number generator; set this parameter to null to use a default generator seeded with the current time.
Returns:
the sampling view.
Throws:
`IllegalArgumentException` - if ! (0 <= rowFraction <= 1 && 0 <= columnFraction <= 1).
`RandomSampler`
• #### viewSample

```public static DoubleMatrix3D viewSample(DoubleMatrix3D matrix,
double sliceFraction,
double rowFraction,
double columnFraction,
RandomEngine randomGenerator)```
Constructs and returns a sampling view with round(matrix.slices() * sliceFraction) slices and round(matrix.rows() * rowFraction) rows and round(matrix.columns() * columnFraction) columns. Samples "without replacement". Slices, rows and columns are randomly chosen from the uniform distribution.
Parameters:
`matrix` - any matrix.
`sliceFraction` - the percentage of slices to be included in the view.
`rowFraction` - the percentage of rows to be included in the view.
`columnFraction` - the percentage of columns to be included in the view.
`randomGenerator` - a uniform random number generator; set this parameter to null to use a default generator seeded with the current time.
Returns:
the sampling view.
Throws:
`IllegalArgumentException` - if ! (0 <= sliceFraction <= 1 && 0 <= rowFraction <= 1 && 0 <= columnFraction <= 1).
`RandomSampler`