Menu
CoddyTech

Le test t

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

Avant les ordinateurs, les statistiques avaient un raccourci : le test t. Une formule transforme les moyennes, les dispersions et les tailles des groupes en une valeur p en une seule fois :

from scipy import stats

result = stats.ttest_ind(sans, serif)
print(np.round(result.pvalue, 3))
print(np.round(result.statistic, 2))

Pour l’étude sur les polices, cela affiche 0.031 et -2.61. Les 1000 permutations ont donné 0.039 : c’est proche, comme d’habitude.

Les 1000 différences permutées de l’étude sur les polices représentées sous forme d’histogramme pâle, avec la courbe en cloche du test t superposée et une ligne rouge pointillée à l’écart réel de -6.6. La légende indique p = 0.039 pour les permutations et 0.031 pour la formule

La valeur t correspond à l’écart en erreurs standard ; son signe indique seulement quel groupe est arrivé en premier. La formule suppose des données en forme de cloche ; pour de petits groupes asymétriques, fiez-vous aux permutations.

Il vérifie également si un modèle est réellement meilleur qu’un autre.

challenge icon

Défi

Moyen

Un fabricant de peinture a chronométré le séchage de trois finitions. Le code de départ place les durées en minutes de chaque finition dans times, répertorie trois pairs, définit permutation_p(a, b) et lit level.

  1. Affiche la valeur p du test t pour matte vs satin à côté de celle des permutations.
  2. Teste chaque paire, en mettant d'abord la première finition, et affiche celle dont la valeur p est la plus petite.
  3. Compte les paires dont la valeur est inférieure à level.

Arrondis les valeurs p à 3 décimales. Un autre fabricant, niveau 0.05 :

matte vs satin: t-test 0.012, simulation 0.023
Clearest difference: satin vs gloss (p = 0.0)
Pairs that differ: 3 of 3

Essayez vous-même

import numpy as np
import pandas as pd
from scipy import stats


# Le test de permutation des deux dernières leçons : renvoie sa valeur p pour a par rapport à b
def permutation_p(a, b, shuffles=1000, seed=0):
    rng = np.random.default_rng(seed)
    pooled = np.concatenate([a, b])
    diffs = []
    for i in range(shuffles):
        shuffled = rng.permutation(pooled)
        diffs.append(shuffled[len(a):].mean() - shuffled[:len(a)].mean())
    real = b.mean() - a.mean()
    return (np.abs(np.array(diffs)) >= np.abs(real)).mean()


paint = pd.read_csv("paint.csv")
times = {
    "matte": paint[paint["finish"] == "matte"]["minutes"],
    "satin": paint[paint["finish"] == "satin"]["minutes"],
    "gloss": paint[paint["finish"] == "gloss"]["minutes"],
}
pairs = [("matte", "satin"), ("matte", "gloss"), ("satin", "gloss")]
level = float(input())

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