nancov

Covariance ignoring `NaN`s

Syntax

```c = nancov(X)
c = nancov(..., 'pairwise')
```

Arguments

 `X` Financial times series object. `Y` Financial times series object.

Description

`nancov` for financial times series objects is based on the Statistics and Machine Learning Toolbox™ function `nancov`. See `nancov` in the Statistics and Machine Learning Toolbox documentation.

`c = nancov(X)`, if `X` is a financial time series object with one series and returns the sample variance of the values in `X`, treating `NaN`s as missing values. For a financial time series object containing more than one series, where each row is an observation and each series a variable, `nancov(X)` is the covariance matrix computing using rows of `X` that do not contain any `NaN` values. `nancov(X,Y)`, where `X` and `Y` are financial time series objects with the same number of elements, is equivalent to `nancov([X(:) Y(:)])`.

`nancov(X)` or `nancov(X,Y)` normalizes by (`N`-1) if `N` >`1`, where `N` is the number of observations after removing missing values. This makes `nancov` the best unbiased estimate of the covariance matrix if the observations are from a normal distribution. For `N` = `1`, `cov` normalizes by `N`.

`nancov(X,1)` or `nancov(X,Y,1)` normalizes by `N` and produces the second moment matrix of the observations about their mean. `nancov(X,Y,0)` is the same as `nancov(X,Y)`, and `nancov(X,0)` is the same as `nancov(X)`.

`c = nancov(..., 'pairwise')` computes `c`(`i,j`) using rows with no `NaN` values in columns `i`or `j`. The result may not be a positive definite matrix. ```c = nancov(..., 'complete')``` is the default, and it omits rows with any `NaN` values, even if they are not in column `i` or `j`. The mean is removed from each column before calculating the result.

Examples

To generate random data having nonzero covariance between column `4` and the other columns:

```x = randn(30, 4); % uncorrelated data x(:, 4) = sum(x, 2); % introduce correlation x(2, 3) = NaN; % introduce one missing value f = fints((today:today+29)', x); % create a fints object using x c = nancov(f) % compute sample covariance```
```c = 1.6898 -0.0005 0.3612 1.9143 -0.0005 1.0833 -0.5513 0.6059 0.3612 -0.5513 1.0369 0.7570 1.9143 0.6059 0.7570 4.4895 ```

See Also

Introduced before R2006a

Was this topic helpful?

Get trial now