Estoy tratando de averiguar cómo calcular la covarianza con la función Cov de Python Numpy. Cuando le paso dos matrices unidimensionales, obtengo una matriz de resultados de 2x2. No sé qué hacer con eso. No soy bueno en estadísticas, pero creo que la covarianza en tal situación debería ser un solo número. Esto es lo que busco. Yo escribí el mío:
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)
Eso funciona, pero me imagino que la versión de Numpy es mucho más eficiente, si pudiera averiguar cómo usarla.
¿Alguien sabe cómo hacer que la función Numpy cov funcione como la que escribí?
Gracias,
Dave
Cuando a
y b
son secuencias unidimensionales, numpy.cov(a,b)[0][1]
es equivalente a tu cov(a,b)
.
La matriz 2x2 devuelta por np.cov(a,b)
tiene elementos iguales a
cov(a,a) cov(a,b)
cov(a,b) cov(b,b)
(donde, nuevamente, cov
es la función que definió anteriormente).
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras