Covariance

3 次查看(过去 30 天)
Benjamin
Benjamin 2012-3-13
Hi,
quick question: can someone confirm that Matlab doesn't give back correct results for 'cov ? Example is here: http://www.mathworks.ch/help/techdoc/ref/cov.html
I calculated by hand and excel. I think there's something. Need the covariance for the financial toolbox.
Thanks a lot Ben
  2 个评论
David Young
David Young 2012-3-13
If you think the example has the wrong result, what do you think the correct result should be, according to your hand calculation and excel?
David Young
David Young 2012-3-14
Thanks for the information (though perhaps better to edit the question than to add an answer). I think Oleg has the explanantion.

请先登录,再进行评论。

采纳的回答

nor
nor 2012-3-26
Matrix A in the example has 3 rows which represents 3 observations. In your case,if you use: a) cov(A) this command will divide by 2 i.e (N-1), giving you 10.3333 for the first element in the covariance matrix.
b)cov(A,1) this command will divide by 3 i.e (N), giving you the same result as you obtain in Excel. Hope this helps.

更多回答(4 个)

Oleg Komarov
Oleg Komarov 2012-3-14
You should read the documentation thoroughly:
cov(A,1)
is the population covariance (divides by N), while
cov(A)
is the sample covariance (divides by N-1)
By default, the functions cov, var and std compute the sample statistic.

Sean Lawson
Sean Lawson 2012-3-13
I used MATLAB cov and don't experience a wrong answer. Maybe you could post your example here if you cannot find anything wrong.
  1 个评论
David Young
David Young 2012-3-14
This strikes me as a comment on the question, rather than an answer to it.

请先登录,再进行评论。


Benjamin
Benjamin 2012-3-14
For the matrix: A = [-1 1 2 ; -2 3 1 ; 4 0 3] Matrix gives result ans =
10.3333 -4.1667 3.0000
-4.1667 2.3333 -1.5000
3.0000 -1.5000 1.0000
just like the Example given in the link. With Excel and its covariance function (data analysis add-in), I receive this result 6.888888889 -2.777777778 2 -2.777777778 1.555555556 -1 2 -1 0.666666667
and by hand just for the very first element: Cov(1,1)=(-1-1/3)^2+(-2-1/3)^2+(4-1/3)^2 = 20.666/3 = 6.88889 But it seems that Matlab devides 20,666/2 = 10.333
What am I doing wrong? Thanks
  1 个评论
Benjamin
Benjamin 2012-3-14
Here again the excel result, hopefully in the right format:
6.8888 -2.77777 2.0000
-2.7777 1.5555 -1.0000
2.0000 -1.0000 0.6666

请先登录,再进行评论。


Chinmayee L M
Chinmayee L M 2021-7-19
I didn't quite understand the terminology used in the documentation. Could someone clarify?
The documentation reads:
"If A is a matrix whose columns represent random variables and whose rows represent observations, C is the covariance matrix with the corresponding column variances along the diagonal."
If I have 10 time series with 400 samples, how should the matrix be organised before taking covariance?
a. 10 x 400
b. 400 x 10
Thanks
  1 个评论
Chinmayee L M
Chinmayee L M 2021-7-19
Figured it out.
Input to cov function should be a 10 x 400 matrix.

请先登录,再进行评论。

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by