Si encuentras algún detalle que no comprendes puedes dejarlo en la sección de comentarios y te ayudaremos lo más rápido posible.
Solución:
Puedes usar la función integrada de numpy var
:
import numpy as np
results = [-14.82381293, -0.29423447, -13.56067979, -1.6288903, -0.31632439,
0.53459687, -1.34069996, -1.61042692, -4.03220519, -0.24332097]
print(np.var(results))
esto te da 28.822364260579157
Si, por cualquier motivo, no puede utilizar numpy
y/o no desea utilizar una función integrada para ello, también puede calcularlo “a mano” utilizando, por ejemplo, una lista de comprensión:
# calculate mean
m = sum(results) / len(results)
# calculate variance using a list comprehension
var_res = sum((xi - m) ** 2 for xi in results) / len(results)
lo que te da el resultado idéntico.
Si estás interesado en el Desviación Estándarpuede usar numpy.std:
print(np.std(results))
5.36864640860051
@Serge Ballesta explicó muy bien la diferencia entre varianza n
y n-1
. En numpy puede configurar fácilmente este parámetro usando la opción ddof
; su valor predeterminado es 0
así que para el n-1
caso que simplemente puede hacer:
np.var(results, ddof=1)
La solución “a mano” se da en la respuesta de @Serge Ballesta.
Ambos enfoques producen 32.024849178421285
.
Puede establecer el parámetro también para std
:
np.std(results, ddof=1)
5.659050201086865
Comenzando Python 3.4
la biblioteca estándar viene con el variance
función (varianza muestral o varianza n-1) como parte de la statistics
módulo:
from statistics import variance
# data = [-14.82381293, -0.29423447, -13.56067979, -1.6288903, -0.31632439, 0.53459687, -1.34069996, -1.61042692, -4.03220519, -0.24332097]
variance(data)
# 32.024849178421285
los pagsvariación de la población (o varianza f) puede obtenerse mediante el pvariance
función:
from statistics import pvariance
# data = [-14.82381293, -0.29423447, -13.56067979, -1.6288903, -0.31632439, 0.53459687, -1.34069996, -1.61042692, -4.03220519, -0.24332097]
pvariance(data)
# 28.822364260579157
También tenga en cuenta que si ya conoce la media de su lista, la variance
y pvariance
funciones toman un segundo argumento (respectivamente xbar
y mu
) para no tener que volver a calcular la media de la muestra (que forma parte del cálculo de la varianza).
Bueno, hay dos formas de definir la varianza. tienes la variacion norte que usa cuando tiene un conjunto completo, y la varianza n-1 que usas cuando tienes una muestra.
La diferencia entre los 2 es si el valor m = sum(xi) / n
es el promedio real o si es solo una aproximación de lo que debería ser el promedio.
Ejemplo 1: desea saber la altura promedio de los estudiantes en una clase y su varianza: ok, el valor m = sum(xi) / n
es el promedio real, y las fórmulas dadas por Cleb están bien (varianza norte).
Ejemplo 2: desea saber la hora promedio a la que pasa un autobús en la parada de autobús y su variación. Anotas la hora durante un mes y obtienes 30 valores. Aquí el valor m = sum(xi) / n
es solo una aproximación del promedio real, y esa aproximación será más precisa con más valores. En ese caso, la mejor aproximación para la varianza real es la varianza n-1
varRes = sum([(xi - m)**2 for xi in results]) / (len(results) -1)
Ok, no tiene nada que ver con Python, pero tiene un impacto en el análisis estadístico, y la pregunta está etiquetada como estadísticas y varianza.
Nota: normalmente, las bibliotecas estadísticas como numpy usan la varianza norte por lo que llaman var
o variance
y la varianza n-1 para la función que da la desviación estándar.
Aquí puedes ver las comentarios y valoraciones de los lectores
Si posees alguna vacilación y disposición de regenerar nuestro reseña eres capaz de añadir una nota y con gusto lo observaremos.