Saltar al contenido

¿Cómo puedo calcular la varianza de una lista en Python?

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 0así 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.4la 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 variancey 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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *