Menu
CoddyTech

Échantillon ou population ?

Fait partie de la section Statistiques pour le ML du Journey Machine Learning de Coddy. Leçon 4 sur 64.

Un apiculteur a pesé le miel de 5 ruches, en kg. NumPy et pandas ne s’accordent pas sur l’écart-type :

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

Cela affiche :

3.16
3.54

Les deux additionnent les mêmes écarts au carré, puis divisent :

Les écarts au carré de 5 ruches, 16, 0, 9, 9 et 16, totalisent 50. Une flèche mène à np.std : 50 / 5 = 10, std 3.16, la formule de la population. L’autre mène à pandas : 50 / 4 = 12.5, std 3.54, la formule de l’échantillon

Diviser par n convient à une population, car toutes les valeurs y sont. Un échantillon se regroupe autour de sa propre moyenne, donc sa dispersion paraît faible ; n - 1 compense cela.

ddof=1 donne à NumPy la formule de l’échantillon : np.std(a, ddof=1) correspond à pandas. Les données d’un modèle sont un échantillon : un écart-type différent entre les outils est dû à ddof, pas à un bogue.

challenge icon

Défi

Facile

Un biologiste a obtenu deux écarts-types différents pour l’envergure de quelques chauves-souris, en cm. Le code de départ les lit dans le tableau spans et la Series column ; sa vérification affiche False.

  1. Les chauves-souris forment un échantillon : corrige la ligne NumPy pour que les deux outils donnent l’écart-type de l’échantillon.
  2. En dessous, affiche de combien l’écart-type par défaut de NumPy np.std(spans) est inférieur à column.std(), avec 2 décimales.

Pour les envergures 33, 27, 30, 35 et 29 :

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

Essayez vous-même

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)

# Cette vérification affiche False : corrigez la ligne NumPy pour que les deux outils donnent l’écart-type de l’échantillon
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}")

# Écrivez votre code ci-dessous
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Statistiques pour le ML

Entraînez-vous par vous-même : Compilateur Python en ligne