는 I 네이티브 MATLAB 함수를 사용하는 경우MATLAB 고유 함수 cov (공분산 행렬 계산)가 예상했던 것보다 다른 제수를 사용하는 이유는 무엇입니까?
data = randn(N, M);
제가
data_mu = data - ones(N, 1)*mean(data);
cov_matrix = (data_mu'*data_mu)./N
와 공분산 행렬을 계산할 수 M 기준 및 N 샘플, 말의 데이터 행렬 데이터 주어
cov_matrix2 = cov(data)
이것은 항상
cov_matrix = (data_mu'*data_mu)./(N-1)
와 같습니다.
즉, 분모는 (N - 1)이 1입니다.
왜 ?? 그것을 재현 할 수 있습니까? 이게 버그 야?
저는 MATLAB 버전 7.6.0.324 (2008)를 사용합니다.
어쨌든 Matlab은 그와 같은 "버그"를 내버려 두지 않을 것입니다. 'N-1'에 대한 이유가 있습니다. 찾게하십시오. http://www.newton.dep.anl.gov/newton/askasci/1993/math/MATH014.HTM http://wiki.answers.com/Q/Why_is_the_standard_deviation_calculation_for_populations_different_than_for_samples_and_why_is_the_denominator_'n'_or_'n-1 ' –
아마도 당신이'sample (co) variance' 또는'population (co) variance'를보고 있는지에 달려 있습니다. 큰 N을 위해 그들은 꽤 가깝다. 그러나 당신은 작은 N. –