|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectorg.apache.commons.math3.stat.correlation.Covariance
org.apache.commons.math3.stat.correlation.StorelessCovariance
public class StorelessCovariance
Covariance implementation that does not require input data to be stored in memory. The size of the covariance matrix is specified in the constructor. Specific elements of the matrix are incrementally updated with calls to incrementRow() or increment Covariance().
This class is based on a paper written by Philippe Pébay: Formulas for Robust, One-Pass Parallel Computation of Covariances and Arbitrary-Order Statistical Moments, 2008, Technical Report SAND2008-6212, Sandia National Laboratories.
Note: the underlying covariance matrix is symmetric, thus only the upper triangular part of the matrix is stored and updated each increment.
| Field Summary | |
|---|---|
private StorelessBivariateCovariance[] |
covMatrix
the square covariance matrix (upper triangular part) |
private int |
dimension
dimension of the square covariance matrix |
| Constructor Summary | |
|---|---|
StorelessCovariance(int dim)
Create a bias corrected covariance matrix with a given dimension. |
|
StorelessCovariance(int dim,
boolean biasCorrected)
Create a covariance matrix with a given number of rows and columns and the indicated bias correction. |
|
| Method Summary | |
|---|---|
double |
getCovariance(int xIndex,
int yIndex)
Get the covariance for an individual element of the covariance matrix. |
RealMatrix |
getCovarianceMatrix()
Returns the covariance matrix |
double[][] |
getData()
Return the covariance matrix as two-dimensional array. |
private StorelessBivariateCovariance |
getElement(int i,
int j)
Gets the element at index (i, j) from the covariance matrix |
int |
getN()
This Covariance method is not supported by a StorelessCovariance,
since the number of bivariate observations does not have to be the same for different
pairs of covariates - i.e., N as defined in Covariance.getN() is undefined. |
void |
increment(double[] data)
Increment the covariance matrix with one row of data. |
private int |
indexOf(int i,
int j)
Returns the index (i, j) translated into the one-dimensional array used to store the upper triangular part of the symmetric covariance matrix. |
private void |
initializeMatrix(boolean biasCorrected)
Initialize the internal two-dimensional array of StorelessBivariateCovariance instances. |
private void |
setElement(int i,
int j,
StorelessBivariateCovariance cov)
Sets the covariance element at index (i, j) in the covariance matrix |
| Methods inherited from class org.apache.commons.math3.stat.correlation.Covariance |
|---|
computeCovarianceMatrix, computeCovarianceMatrix, computeCovarianceMatrix, computeCovarianceMatrix, covariance, covariance |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
private StorelessBivariateCovariance[] covMatrix
private int dimension
| Constructor Detail |
|---|
public StorelessCovariance(int dim)
dim - the dimension of the square covariance matrix
public StorelessCovariance(int dim,
boolean biasCorrected)
dim - the dimension of the covariance matrixbiasCorrected - if true the covariance estimate is corrected
for bias, i.e. n-1 in the denominator, otherwise there is no bias correction,
i.e. n in the denominator.| Method Detail |
|---|
private void initializeMatrix(boolean biasCorrected)
StorelessBivariateCovariance instances.
biasCorrected - if the covariance estimate shall be corrected for bias
private int indexOf(int i,
int j)
i - the row indexj - the column index
private StorelessBivariateCovariance getElement(int i,
int j)
i - the row indexj - the column index
StorelessBivariateCovariance element at the given index
private void setElement(int i,
int j,
StorelessBivariateCovariance cov)
i - the row indexj - the column indexcov - the StorelessBivariateCovariance element to be set
public double getCovariance(int xIndex,
int yIndex)
throws NumberIsTooSmallException
xIndex - row index in the covariance matrixyIndex - column index in the covariance matrix
NumberIsTooSmallException - if the number of observations
in the cell is < 2
public void increment(double[] data)
throws DimensionMismatchException
data - array representing one row of data.
DimensionMismatchException - if the length of rowData
does not match with the covariance matrix
public RealMatrix getCovarianceMatrix()
throws NumberIsTooSmallException
getCovarianceMatrix in class CovarianceNumberIsTooSmallException - if the number of observations
in a cell is < 2
public double[][] getData()
throws NumberIsTooSmallException
NumberIsTooSmallException - if the number of observations
for a cell is < 2
public int getN()
throws MathUnsupportedOperationException
Covariance method is not supported by a StorelessCovariance,
since the number of bivariate observations does not have to be the same for different
pairs of covariates - i.e., N as defined in Covariance.getN() is undefined.
getN in class CovarianceMathUnsupportedOperationException
MathUnsupportedOperationException - in all cases
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||