Quero encontrar a média e o desvio padrão do primeiro, segundo, ... dígitos de várias listas (Z). Por exemplo, eu tenho
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 )...
Agora eu quero pegar a média e o padrão de *_Rank[0]
, a média e o padrão de *_Rank[1]
, etc.
(ou seja: média e padrão do primeiro dígito de todas as listas (A..Z) _rank;
a média e padrão do 2º dígito de todas as listas (A..Z) _rank;
a média e o padrão do terceiro dígito ...; etc).
python
list
standard-deviation
physics_for_all
fonte
fonte
Respostas:
Desde Python 3.4 / PEP450, existe um
statistics module
na biblioteca padrão, que tem um métodostdev
para calcular o desvio padrão de iteráveis como o seu:fonte
pstddev
provavelmente deve ser usado se sua lista representar toda a população (ou seja, a lista não é uma amostra de uma população).stddev
é calculado usando a variância da amostra e superestimará a média da população.stdev
epstdev
não usamstd
parastandard
como seria de se esperar. Não consegui editar a postagem, pois as edições precisam modificar pelo menos 6 caracteres ...Eu colocaria
A_Rank
et al em uma matriz NumPy 2D e, em seguida, usarianumpy.mean()
enumpy.std()
para calcular as médias e os desvios padrão:fonte
STDEV.P()
e a função Numpystd(ddof=0)
calculam o sd da população , ou amostra sd não corrigida , enquanto a função ExcelSTDEV.S()
e a função Numpystd(ddof=1)
calculam a amostra sd (corrigida) , que é igual a sqrt (N / (N-1) ) vezes o dp da população, onde N é o número de pontos. Veja mais: en.m.wikipedia.org/wiki/…Aqui está um código Python puro que você pode usar para calcular a média e o desvio padrão.
Todo o código abaixo é baseado no
statistics
módulo em Python 3.4+.Nota: para maior precisão ao somar flutuações, o
statistics
módulo usa uma função personalizada_sum
em vez da integradasum
que usei em seu lugar.Agora temos por exemplo:
fonte
pvar=ss/(n-1)
?n-1
. O código acima é para o SD da população (portanto, hán
graus de liberdade).stddev
função para que ela possa calcular os desvios padrão da amostra e da população.No Python 2.7.1, você pode calcular o desvio padrão usando
numpy.std()
para:numpy.std()
sem argumentos adicionais além da sua lista de dados.Ele calcula o padrão da amostra em vez do padrão da população.
fonte
No python 2.7, você pode usar o NumPy para obter
numpy.std()
o desvio padrão da população .No Python 3.4
statistics.stdev()
retorna o desvio padrão da amostra. Apstdv()
função é a mesma quenumpy.std()
.fonte
Usando python, aqui estão alguns métodos:
Abordagem1 - usando uma função
Abordagem 2: calcular a variância e obter a raiz quadrada dela
Abordagem 3: usando matemática básica
Nota:
variance
calcula a variação da população de amostrapvariance
calcula a variância de toda a populaçãostdev
epstdev
fonte
código python puro:
fonte
sqrt(sum((x - mean)**2 for x in lst) / len(lst))
As outras respostas cobrem como fazer o std dev em python suficientemente, mas ninguém explica como fazer a travessia bizarra que você descreveu.
Vou assumir que AZ é toda a população. Se não, veja a resposta de Ome sobre como inferir de uma amostra.
Portanto, para obter o desvio padrão / média do primeiro dígito de cada lista, você precisaria de algo assim:
Para encurtar o código e generalizá-lo para qualquer enésimo dígito, use a seguinte função que gerei para você:
Agora você pode simplesmente obter o padrão e a média de todas as enésimas casas de AZ, assim:
fonte
str([chr(x)+'_rank[n]' for x in range(65,65+26)]).replace("'", "")