Calcul de la Covariance avec Python et Numpy
j'essaie de comprendre comment calculer la covariance avec la fonction Python Numpy cov. Quand je le passe deux tableaux unidimensionnels, je récupère une matrice 2x2 de résultats. Je ne sais pas quoi faire avec ça. Je ne suis pas bon en statistiques, mais je crois que la covariance dans une telle situation devrait être un nombre unique. est ce que je suis à la recherche d'. J'ai écrit mon propre:
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 num Py 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
2 réponses
Quand a
et b
sont des séquences 1-dimensionnelles,numpy.cov(a,b)[0][1]
est équivalent à cov(a,b)
.
le tableau 2x2 retourné par np.cov(a,b)
a des éléments égal à
cov(a,a) cov(a,b)
cov(a,b) cov(b,b)
(où, encore une fois, cov
est la fonction 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 la population, Vous pouvez spécifier la normalisation par le 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)