Compte tenu des données de la matrice de données de dimensions M et N échantillons, disons,Pourquoi la fonction native MAT de covL (covariance matrix calcul) utilise-t-elle un diviseur différent de celui que j'attends?
data = randn(N, M);
je pourrais calculer la matrice de covariance avec
data_mu = data - ones(N, 1)*mean(data);
cov_matrix = (data_mu'*data_mu)./N
Si j'utilise la fonction Matlab native
cov_matrix2 = cov(data)
ce sera toujours égal à
cov_matrix = (data_mu'*data_mu)./(N-1)
Autrement dit, le dénominateur est (N - 1) est un de moins.
Pourquoi? Pouvez-vous le reproduire? Est-ce un bug ?? J'utilise la version 7.6.0.324 de MATLAB (2008).
Aucun moyen Matlab laisserait un "bug" comme ça glisser par eux. Il y a une raison pour 'N-1', laissez-moi le trouver. 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 ' –
C'est probablement Cela dépend de la 'variance de l'échantillon (co) ou de la (co) variance de la population. Pour les grands N ils sont assez proches, mais vous devez faire attention avec petit N. –