Menu
CoddyTech

Est-ce dû au hasard ?

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

Cinq lecteurs d’une police sans empattement ont battu cinq lecteurs d’une police avec empattement de 6,6 secondes. Si la police ne changeait rien, n’importe quelle durée pourrait se retrouver dans l’un ou l’autre groupe. Mélangeons les valeurs pour illustrer cela :

Dix temps de lecture sous forme de cellules, cinq en bleu pour la police avec empattement et cinq en orange pour la police sans empattement. Une flèche intitulée rng.permutation(pooled) mène aux mêmes dix valeurs dans un ordre mélangé, réparties en un faux groupe avec empattement de moyenne 48.4 et un faux groupe sans empattement de moyenne 49.8 : un écart de +1.4 seconde dû au hasard

rng.permutation(a) renvoie une copie mélangée. Répétez l’opération 1000 fois et conservez chaque écart fictif :

serif = np.array([52, 47, 58, 50, 55])
sans = np.array([45, 49, 41, 50, 44])
pooled = np.concatenate([serif, sans])
rng = np.random.default_rng(4)
diffs = []
for i in range(1000):
    shuffled = rng.permutation(pooled)
    diffs.append(shuffled[5:].mean() - shuffled[:5].mean())

Un histogramme des 1000 différences mélangées, allant de -7.8 à 7.8 secondes et regroupées autour de 0, avec une ligne rouge indiquant la différence réelle, -6.6, près du bord gauche

Les écarts dus au hasard s’accumulent autour de 0 ; l’écart réel se trouve près du bord. Il s’agit d’un test de permutation.

Avant de croire qu’un modèle en surpasse un autre, vérifie que le fait de mélanger les données ne crée que rarement un écart aussi important.

challenge icon

Défi

Moyen

Les chiens ont appris à s’asseoir de deux façons : clicker et treats contiennent les séances de chaque chien. Le code de départ crée rng et shuffles.

  1. Calculez l’écart réel : la moyenne de treats moins la moyenne de clicker.
  2. Regroupez clicker puis treats ; mélangez shuffles fois, séparez à len(clicker), gardez chaque faux écart dans le même sens ; aucun autre tirage.
  3. Affichez l’écart réel, le premier faux écart, le plus petit et le plus grand, avec 2 décimales.

Pour d’autres chiens :

Real difference: 3.0
First shuffle: -1.0
Smallest shuffled: -3.33
Largest shuffled: 3.67

Essayez vous-même

import numpy as np

# Séances d’entraînement nécessaires à chaque chien pour apprendre "sit"
clicker = np.array([9, 12, 8, 11, 10, 7, 13])
treats = np.array([14, 11, 15, 12, 16, 13])
# Ne modifiez pas les lignes ci-dessous
rng = np.random.default_rng(12)
shuffles = 1000

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