That's an interesting one :-)
Now if I understood your question right, then the trick is to think in terms of functions and not focus just on COV. Though, the following things are initially important:
- It's normal distributed.
- Covariance is (just) a function as any other.
If you need the standard deviation for the result of the COV function, you automatically assume that:
- The elements $X_i, Y_i$ might have standard deviations associated to these measurement values.
- The standard deviation $E[X], E[Y]$ is already known and can be computed by mean($X$),mean($Y$). Do you have any reason not to trust it by assuming a different value?
Now given this information, you can use the standard method for computing the resulting error-estimate of an function with Gaussian Propagation of Uncertainty. Important is the limitation; It works just for Normal-distributed variables. The variance $\sigma_y^2$ of an variable $y$ which consist of other uncertain variables $x$ and their corresponding variances $\sigma_x^2$, such as
$y = x_1 + x_2 + ...+ x_n$
$\sigma_{y}^2 = \sigma_{x_1}^2+\sigma_{x_2}^2+...+\sigma_{x_n}^2$
can be computed as (matrix notation):
$\sigma_y^2 = \mathbf{A\Sigma}_{xx}\mathbf{A}^\mathrm{T}$.
where $\mathbf{A}$ is the Jacobian matrix and $\mathbf{\Sigma}_{xx}$ is the variance-covariance matrix for the values $X_i,Y_i$ corresponding to the function. On the diagonal you need to place the variances for $X_i,Y_i$ the off-diagonal values are covariances between them (you might want to assume 0 for them). Please keep in mind, this is an general solution for non-linear functions and uses just one (the first) linearization term. It is fast and usually the way to go in productive applications but might have approximation errors compared to a pure analytical solutions.
Another option is to do a small Monte-Carlo simulation. In order to achieve this you can sample $X_i,Y_i$ with their expected uncertainty and compute their covariance. Now if you do it several (thousand) times, you get a fair estimate for the resulting error. Here is a pseudo-code for OCTAVE/MATLAB:
% Clean stuff before start to avoid variable conflicts
clc
clear all
% These are the values
X = [ 1 2 3 4 5 ].';
Y = [ 5 4 3 2 1 ].';
% How many tries do you want to have
n_samples = 10000;
% prepare the resulting error
cov_res = zeros( n_samples , 1 );
% loop the computation through n_samples
for i = 1 : n_samples
% generate random distributed noise, 1 sigma [-0.1:0.1]
x_error_sample = 0.1 * randn( size( X , 1 ) , 1 );
y_error_sample = 0.1 * randn( size( Y , 1 ) , 1 );
% Compute the covariance matrix for X and Y
cov_i = cov( X + x_error_sample , Y + y_error_sample );
% Pick only the covariance
cov_res( i ) = cov_i( 1 , 2 );
end
% covariance estimator can be chosen by your own metric (e.g. mean,median,...)
mean( cov_res )
% The error of this estimation can be chosen by your own metric (e.g. std,rms,var,...)
std( cov_res )
This approach might also be used for any distribution for $X$ and $Y$, just replace the term randn with your choice.
Regards