1
resposta

pandas.DataFrame.std VS numpy.std

Utilizei as duas formas de cálculo do desvio padrão pra a mesma base do Toy Story e Jumanji conforme abaixo:

print(notas_jumanji.nota.std(), notas_toy_story.nota.std())
print(np.std(notas_jumanji.nota), np.std(notas_toy_story.nota))

para minha surpresa, os valores vieram diferentes, segue valores respectivos: 0.8817134921476455 0.8348591407114047 0.8776965532969933 0.8329153449641147

print

Apesar dos valores serem próximos, existe uma diferença matemática entre eles, o que me leva a pensar que existe uma diferença nos cálculos realizados pelo pandas e pelo numpy? Escrevi corretamente o código? Existe mesmo uma diferença entre os cálculos?

1 resposta

Olá, Marcelo! Tudo bom? Espero que sim!

Você escreveu sim corretamente os códigos, e há uma diferença de cálculo entre os dois.

Em um grande resumo estatístico, ambos estão corretos, os métodos apenas utilizam estimadores estatísticos diferentes. Na fórmula para calcular o desvio padrão, é possível utilizar na divisão tanto um denominador n, quanto também um divisor n - 1.

O Pandas utiliza um estimador não enviesado ou não-tendecioso, que possui uma pequena correção, que é quando o denominador no desvio padrão é n-1, já o Numpy apenas utiliza o denominador simples n. A existência de diferentes estimadores está relacionada com o quanto a população (conceito estatístico para o conjunto de todos os observados) é conhecida na sua totalidade, e esse caso em particular da escolha entre (n) e (n-1) é conhecido como Correção de Bessel.

Para fazer o ajuste do estimador e fazer o Numpy utilizar a mesma escolha, basta utilizar o parâmetro ddof=1, que por padrão é zero, e significa justamente o termo onde faremos o denominador assumir o valor N - ddof.

Se ainda tiver alguma dúvida, estou por aqui. Ótimos estudos e grande abraço!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!