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.
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.
Défi
MoyenUn 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.
- Affiche la valeur p du test t pour matte vs satin à côté de celle des permutations.
- Teste chaque paire, en mettant d'abord la première finition, et affiche celle dont la valeur p est la plus petite.
- 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 3Essayez 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
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
1Centre et dispersion
Moyenne et médianePercentiles et quartilesVariance et écart-typeÉchantillon ou population ?La valeur la plus fréquenteRécapitulatif : délais de livraison4Échantillons et populations
Population et échantillonLes moyennes d’échantillon varientLa distribution d’échantillonnageDes échantillons plus grands, moins de bruitRécapitulatif : sonder une ville2Distributions
Histogrammes de densitéFormes des donnéesLa courbe normaleLa règle des 68-95-99,7Scores zRécapitulatif : autonomie de la batterie5Valeurs aberrantes
Diagrammes en boîteLa règle de l’écart interquartileLa règle du score ZTraiter les valeurs aberrantesRécapitulatif : anomalies des capteurs8Comparer des groupes
Diagrammes en boîte par groupeDifférence entre les moyennesEst-ce dû au hasard ?Valeurs pLe test tRécapitulatif : test A/B3Les probabilités par simulation
La probabilité comme fréquenceLa loi des grands nombresSommes de désEspérance mathématiqueProbabilité conditionnelleRécapitulatif : les chances au stand de dés6Relations
Lire des nuages de pointsCorrélationMatrice de corrélationCartes thermiques de corrélationCorrélation n’est pas causalitéRécapitulatif : glace et soleil9Mise à l’échelle des caractéristiques
Pourquoi mettre les caractéristiques à l’échelleMise à l’échelle Min-MaxStandardisationStandardScalerRécapitulatif : partenaires d’escaladeEntraînez-vous par vous-même : Compilateur Python en ligne