登录论坛

查看完整版本 : 为什么MATLAB本机函数cov(协方差矩阵计算)使用与我预期不同的除数?


poster
2019-12-10, 20:48
假设有M个维度和N个样本的数据矩阵数据,

data = randn(N, M); 我可以用以下公式计算协方差矩阵

data_mu = data - ones(N, 1)*mean(data); cov_matrix = (data_mu'*data_mu)./N 如果我使用本机MATLAB函数

cov_matrix2 = cov(data) 这将始终等于

cov_matrix = (data_mu'*data_mu)./(N-1) 也就是说,分母是(N-1)少一。

为什么??你能复制吗?这是一个错误吗?

我使用MATLAB版本7.6.0.324(2008)。



回答:

也就是说,分母是(N-1)少一。为什么??你能复制吗?这是一个错误吗?

请参阅cov文档 (http://www.mathworks.com/access/helpdesk/help/techdoc/ref/cov.html) 。它与总体方差与样本方差有关 (http://en.wikipedia.org/wiki/Variance#Population_variance_and_sample_variance) 。

还要注意,如果您希望使用分母N而不是N-1,则可以在调用中添加尾随1参数,即根据文档所述, cov(x,y,1)或cov(x,1) 。



更多&回答... (https://stackoverflow.com/questions/3256798)