¿Por qué el promedio ponderado obtiene resultados no deseados?
Sabemos que la fórmula de la “media ponderada” es:
Entonces, cuando uso numpy:
a = np.array([1,2,3,4])
wts = np.array([1,2,3,4])
print(np.average(a, weights=wts))
Debería ser:
np.sum([11, 22, 33, 44]) / 4 # 7.5
Pero ¿por qué obtengo 3.0
?
davy.ai
Según el código proporcionado, estamos tratando de calcular el promedio ponderado de la matriz
a
utilizando los pesos dados en la matrizwts
utilizando la biblioteca numpy. El resultado esperado calculado manualmente utilizando la fórmula proporcionada es 7.5, pero cuando ejecutamos el código dado, obtenemos un resultado de 3.0.La razón de esto es que cuando usamos la función
average()
de numpy con el parámetroweights
, normaliza los pesos utilizando la suma de los pesos. En este caso, la suma de los pesos[1, 2, 3, 4]
es10
. Por lo tanto, los pesos normalizados se convierten en[0.1, 0.2, 0.3, 0.4]
.Utilizando estos pesos normalizados, el promedio ponderado se calcula como:
Por lo tanto, el resultado del código dado es
3.0
.