Menu
CoddyTech

Des échantillons plus grands, moins de bruit

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

Des échantillons plus grands donnent de meilleures estimations, mais dans quelle mesure ? Voici 1000 moyennes de 25 paniers d’achat, et 1000 de 100 paniers :

Deux courbes en cloche des moyennes d’échantillons d’articles par panier, toutes deux centrées autour de 30. Les moyennes de 25 paniers en gris s’étalent d’environ 20 à 40 ; les moyennes de 100 paniers en bleu forment une cloche deux fois moins large

sample_means mesure la dispersion de chaque échantillon. L’erreur standard, std / np.sqrt(n), la prédit sans simulation :

for n in [25, 100]:
    spread = sample_means(baskets, n, 1000).std()
    print(n, np.round(spread, 2), np.round(baskets.std() / np.sqrt(n), 2))

Cela affiche :

25 3.43 3.45
100 1.72 1.72

Quatre fois plus de données, deux fois moins de bruit : voilà la racine carrée à l’œuvre. Un modèle testé sur 400 exemples a un score deux fois plus précis que sur 100.

challenge icon

Défi

Moyen

bags contient les poids, en grammes, des 5000 sacs de farine d'une minoterie. Le contrôle qualité pèse un échantillon chaque heure ; le programme lit l'erreur standard qu'il accepte.

  1. Trouve le plus petit n dont l'erreur standard, bags.std() / np.sqrt(n), est au plus égale à cette valeur : commence à 1, puis ajoute 1 tant qu'elle est trop élevée.
  2. Vérifie-le : l'écart type de 300 moyennes d'échantillons obtenues avec sample_means.
  3. Affiche comme ci-dessous, avec 2 décimales.

Pour une autre minoterie et 2.5 :

Bags to weigh: 24
Standard error: 2.46 g
Simulated spread: 2.37 g

Essayez vous-même

import numpy as np

target = float(input())

# Ne modifiez pas les lignes ci-dessous : le poids en grammes de chaque sac de farine
rng = np.random.default_rng(22)
bags = np.round(rng.normal(500, 8, size=5000), 1)


# Votre fonction de Sample Means Vary : les moyennes de count échantillons
def sample_means(data, size, count):
    means = []
    for i in range(count):
        sample = rng.choice(data, size=size, replace=False)
        means.append(sample.mean())
    return np.array(means)


# É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