Quiero encontrar la desviación estándar y media del primer, segundo, ... dígitos de varias listas (Z). Por ejemplo, tengo
A_rank=[0.8,0.4,1.2,3.7,2.6,5.8]
B_rank=[0.1,2.8,3.7,2.6,5,3.4]
C_Rank=[1.2,3.4,0.5,0.1,2.5,6.1]
# etc (up to Z_rank )...
Ahora quiero tomar la media y estándar de *_Rank[0]
, la media y estándar de *_Rank[1]
, etc.
(es decir: media y estándar del primer dígito de todas las listas (A..Z) _rank;
la media y estándar del segundo dígito de todas las listas (A..Z) _rank;
la media y estándar del tercer dígito ...; etc.).
python
list
standard-deviation
física_para_todos
fuente
fuente
Respuestas:
Desde Python 3.4 / PEP450 hay un
statistics module
en la biblioteca estándar, que tiene un métodostdev
para calcular la desviación estándar de iterables como el suyo:fuente
pstddev
probablemente debería usarse en su lugar si su lista representa a toda la población (es decir, la lista no es una muestra de una población).stddev
se calcula utilizando la varianza de la muestra y sobrestimará la media de la población.stdev
ypstdev
no se usanstd
parastandard
como cabría esperar. No pude editar la publicación ya que las ediciones deben modificar al menos 6 caracteres ...Pondría
A_Rank
et al en una matriz 2D NumPy , y luego usaríanumpy.mean()
ynumpy.std()
para calcular las medias y las desviaciones estándar:fuente
STDEV.P()
y la función Numpystd(ddof=0)
calculan la sd de la población , o la sd de la muestra sin corregir , mientras que la función de ExcelSTDEV.S()
y la función Numpystd(ddof=1)
calculan la sd de la muestra (corregida) , que es igual a sqrt (N / (N-1) ) multiplicado por la población sd, donde N es el número de puntos. Ver más: en.m.wikipedia.org/wiki/…Aquí hay un código de Python puro que puede usar para calcular la desviación estándar y media.
Todo el código siguiente se basa en el
statistics
módulo en Python 3.4+.Nota: para mejorar la precisión al sumar flotantes, el
statistics
módulo usa una función personalizada en_sum
lugar de la incorporadasum
que he usado en su lugar.Ahora tenemos por ejemplo:
fuente
pvar=ss/(n-1)
?n-1
. El código anterior es para la población SD (por lo que hayn
grados de libertad).stddev
función para que pueda calcular las desviaciones estándar de la muestra y la población.En Python 2.7.1, puede calcular la desviación estándar usando
numpy.std()
para:numpy.std()
sin argumentos adicionales además de su lista de datos.Calcula la estándar de muestra en lugar de la estándar de población.
fuente
En Python 2.7, puede usar NumPy para
numpy.std()
obtener la desviación estándar de la población .En Python 3.4
statistics.stdev()
devuelve la desviación estándar de la muestra. Lapstdv()
función es la misma quenumpy.std()
.fuente
Usando Python, aquí hay algunos métodos:
Enfoque1: uso de una función
Método 2: calcular la varianza y sacar su raíz cuadrada
Enfoque 3: usar matemáticas básicas
Nota:
variance
calcula la varianza de la población de muestrapvariance
calcula la varianza de toda la poblaciónstdev
ypstdev
fuente
código Python puro:
fuente
sqrt(sum((x - mean)**2 for x in lst) / len(lst))
Las otras respuestas cubren cómo hacer std dev en python lo suficiente, pero nadie explica cómo hacer el extraño recorrido que ha descrito.
Voy a asumir que AZ es toda la población. Si no, vea la respuesta de Ome sobre cómo hacer una inferencia a partir de una muestra.
Entonces, para obtener la desviación estándar / media del primer dígito de cada lista, necesitaría algo como esto:
Para acortar el código y generalizarlo a cualquier enésimo dígito, use la siguiente función que generé para usted:
Ahora puede simplemente obtener el stdd y la media de todos los enésimos lugares de AZ de esta manera:
fuente
str([chr(x)+'_rank[n]' for x in range(65,65+26)]).replace("'", "")