Menu
CoddyTech

Amostra ou população?

Parte da seção Estatística para ML do Journey de Machine Learning da Coddy. Lição 4 de 64.

Um apicultor pesou o mel de 5 colmeias, em kg. NumPy e pandas discordam quanto ao desvio padrão:

values = [18, 22, 25, 19, 26]
print(np.round(np.std(values), 2))
print(np.round(pd.Series(values).std(), 2))

Isso imprime:

3.16
3.54

Ambos somam os mesmos desvios ao quadrado e, em seguida, dividem:

Os desvios ao quadrado de 5 colmeias, 16, 0, 9, 9 e 16, somam 50. Uma seta leva a np.std: 50 / 5 = 10, desvio padrão 3.16, a fórmula populacional. A outra leva ao pandas: 50 / 4 = 12.5, desvio padrão 3.54, a fórmula amostral

Dividir por n é adequado para uma população, que inclui todos os valores. Uma amostra fica próxima da própria média, então sua dispersão parece pequena; n - 1 compensa isso.

ddof=1 fornece ao NumPy a fórmula amostral: np.std(a, ddof=1) corresponde ao pandas. Os dados do modelo são uma amostra: uma divergência no desvio padrão entre ferramentas se deve a ddof, não a um bug.

challenge icon

Desafio

Fácil

Um biólogo obteve dois desvios padrão diferentes para as envergaduras das asas de alguns morcegos, em cm. O código inicial lê os valores no array spans e na Series column; a verificação imprime False.

  1. Os morcegos são uma amostra: corrija a linha do NumPy para que as duas ferramentas forneçam o desvio padrão amostral.
  2. Abaixo dela, imprima quanto o padrão do NumPy np.std(spans) fica abaixo de column.std(), com 2 casas decimais.

Para as envergaduras 33, 27, 30, 35 e 29:

Sample std: 3.19 cm, tools agree: True
Dividing by n underestimated it by 0.34 cm

Experimente você mesmo

import numpy as np
import pandas as pd

n = int(input())
values = []
for i in range(n):
    values.append(int(input()))
spans = np.array(values)
column = pd.Series(values)

# Esta verificação imprime False: corrija a linha do NumPy para que ambas as ferramentas forneçam o desvio padrão amostral
numpy_std = np.round(np.std(spans), 2)
pandas_std = np.round(column.std(), 2)
print(f"Sample std: {numpy_std} cm, tools agree: {numpy_std == pandas_std}")

# Escreva seu código abaixo
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Estatística para ML

Pratique por conta própria: Compilador de Python online