|
|||||||||
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 matrixpublic 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 biasprivate 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 indexprivate void setElement(int i, int j, StorelessBivariateCovariance cov)
i
- the row indexj
- the column indexcov
- the StorelessBivariateCovariance
element to be setpublic 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 < 2public 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 matrixpublic RealMatrix getCovarianceMatrix() throws NumberIsTooSmallException
getCovarianceMatrix
in class Covariance
NumberIsTooSmallException
- if the number of observations
in a cell is < 2public double[][] getData() throws NumberIsTooSmallException
NumberIsTooSmallException
- if the number of observations
for a cell is < 2public 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 Covariance
MathUnsupportedOperationException
MathUnsupportedOperationException
- in all cases
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |