Statistics::Covariance Function

Overload List

#SignatureDescription
1void Covariance(TVec *X, double &aResult, bool NormN = true);Covariance/variance.
2void Covariance(TDenseMtxVec *X, TDenseMtxVec *Y, TMtx *aResult, bool NormN = true);Calculate the variance-covariance matrix (Result), assuming vectors X and Y are two variable and their elements are the observations.
3void Covariance(TMtx *X, TMtx *aResult, bool NormN = true);Calculate the covariance matrix (Result), assuming matrix X columns are variables and its rows are observations.

Overload 1: void Covariance(TVec *X, double &aResult, bool NormN = true);

Covariance/variance.

#NameTypeDescription
1XTVec *Defines sample (variable) values (observables). In this case X is treated as row and not (as normally) column vector.
2aResultdouble &Returns the covariance (in this case equal to variance) for X vector elements. Because in this case X is represented as row vectro, the the result is simply scalar value E(X(T)*X)-E(X(T))E(X) = Var(X).
3NormN = trueboolIf true (default value), the result will be normalized with number of observations (N), otherwise it will be normalized with N-1.
Remarks:

The covariance between two real-valued random variables x and y,with expected values E(x)=mu and E(y)=nu is defined as:

Cov(x,y)=E((xμ)(xν))=E(xy)E(x)E(y).\text{Cov}(x,y)= E\left( (x-\mu) (x-\nu) \right) = E \left( x\cdot y \right) - E(x)E(y)\qquad .

where E(x), E(y) are x and y expected values.

For more info about covariance definition and properties check thd following links:

1. http://mathworld.wolfram.com/Covariance.html

2. http://en.wikipedia.org/wiki/Covariance

Declared in Dew::Stats::Units::Statistics · Dew.Stats/Units.Statistics.h · Cross-compiler

Overload 2: void Covariance(TDenseMtxVec *X, TDenseMtxVec *Y, TMtx *aResult, bool NormN = true);

Calculate the variance-covariance matrix (Result), assuming vectors X and Y are two variable and their elements are the observations.

#NameTypeDescription
1XTDenseMtxVec *
2YTDenseMtxVec *
3aResultTMtx *
4NormN = truebool
Remarks:

For column-vector valued random variables X and Y with respective expected values mu and nu, and respective scalar components m and n, the covariance is defined to be the m-by-n matrix called the covariance matrix:

Cov(X,Y)=E((Xμ)(Yν)T).\text{Cov}(X,Y)= E\left( (X-\mu) (Y-\nu)^T \right) .
Declared in Dew::Stats::Units::Statistics · Dew.Stats/Units.Statistics.h · Cross-compiler

Overload 3: void Covariance(TMtx *X, TMtx *aResult, bool NormN = true);

Calculate the covariance matrix (Result), assuming matrix X columns are variables and its rows are observations.

#NameTypeDescription
1XTMtx *
2aResultTMtx *
3NormN = truebool
Remarks:

By definition the covariance matrix is a matrix of covariances between elements of a vector. It is the natural generalization to higher dimensions of the concept of the variance of a scalar-valued random variable.

If X columns represent observation samples (variables), it's rows sample(s) values (observables), muj Xj j-th column average value, then the covariance matrix is defined as:

Σi,j=E((Xiμi)(Xjμj)).\Sigma_{i,j} = E\left((X_i-\mu_i)(X_j-\mu_j)\right) \qquad.

or in matrix form:

Σ=E((XIμ)T(XIμ)).\Sigma = E \left((X-I\cdot\mu)^T (X-I\cdot\mu)\right) \qquad.

where E is the expected value. The inverse of this matrix, is called the inverse covariance matrix or the precision matrix.

Note
This version does all necessary calculations to calculate covariance matrix.

Declared in Dew::Stats::Units::Statistics · Dew.Stats/Units.Statistics.h · Cross-compiler