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

42
demandé sur Dave 2013-03-10 05:14:44

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.)

85
répondu unutbu 2013-03-10 01:53:41

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)
14
répondu Osian 2016-08-23 10:12:25