J'essaie de comprendre comment calculer la covariance avec la fonction Python Numpy cov.). Lorsque je lui passe deux tableaux unidimensionnels, je récupère une matrice de résultats 2x2. Je ne sais pas que faire avec cela. Je ne suis pas très bon en statistique, mais je crois que la covariance dans une telle situation devrait être un nombre unique. This est ce que je recherche. J'ai écrit le mien:
def cov(a, b):
if len(a) != len(b):
return
a_mean = np.mean(a)
b_mean = np.mean(b)
sum = 0
for i in range(0, len(a)):
sum += ((a[i] - a_mean) * (b[i] - b_mean))
return sum/(len(a)-1)
Cela fonctionne, mais je pense que la version de Numpy est beaucoup plus efficace, si je pouvais comprendre comment l’utiliser.
Est-ce que quelqu'un sait comment faire fonctionner la fonction Numpy cov comme celle que j'ai écrite?
Merci,
Dave
Lorsque a
et b
sont des séquences à une dimension, numpy.cov(a,b)[0][1]
est équivalent à votre cov(a,b)
.
Le tableau 2x2 renvoyé par np.cov(a,b)
a des éléments égaux à
cov(a,a) cov(a,b)
cov(a,b) cov(b,b)
(où, encore une fois, cov
est la fonction que vous avez définie ci-dessus.)
Merci à unutbu pour l'explication. Par défaut, numpy.cov calcule la covariance de l'échantillon. Pour obtenir la covariance de population, vous pouvez spécifier la normalisation en fonction du nombre total N échantillons, comme ceci:
Covariance = numpy.cov(a, b, bias=True)[0][1]
print(Covariance)
ou comme ceci:
Covariance = numpy.cov(a, b, ddof=0)[0][1]
print(Covariance)