Der t-Test
Teil des Abschnitts Statistik für ML der Machine Learning-Journey von Coddy. Lektion 45 von 64.
Vor Computern gab es in der Statistik eine Abkürzung: den t-Test. Eine Formel wandelt die Mittelwerte, Streuungen und Gruppengrößen auf einmal in einen p-Wert um:
from scipy import stats
result = stats.ttest_ind(sans, serif)
print(np.round(result.pvalue, 3))
print(np.round(result.statistic, 2))Für die Schriftartstudie gibt dies 0.031 und -2.61 aus. Die 1000 Permutationen ergaben 0.039: wie üblich ein ähnlicher Wert.
Der t-Wert gibt den Abstand in Standardfehlern an; sein Vorzeichen zeigt nur, welche Gruppe zuerst kam. Die Formel setzt glockenförmige Daten voraus, vertraue bei kleinen, schief verteilten Gruppen also den Permutationen.
Es prüft auch, ob ein Modell ein anderes wirklich übertrifft.
Aufgabe
MittelEin Farbhersteller hat gemessen, wie lange drei Lackierungen zum Trocknen brauchen. Der Starter legt die Minuten für jede Lackierung in times ab, listet drei pairs auf, definiert permutation_p(a, b) und liest level ein.
- Gib den p-Wert des t-Tests für Matt gegenüber Seidenglanz neben dem des Permutationstests aus.
- Teste jedes Paar, wobei die zuerst genannte Lackierung an erster Stelle steht, und gib das Paar mit dem kleinsten p-Wert aus.
- Zähle die Paare unter
level.
Runde die p-Werte auf 3 Dezimalstellen. Ein weiterer Hersteller, Signifikanzniveau 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 3Probier es selbst
import numpy as np
import pandas as pd
from scipy import stats
# Der Permutationstest aus den letzten beiden Lektionen: gibt seinen p-Wert für a im Vergleich zu b zurück
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())
# Schreibe deinen Code unten
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Statistik für ML
1Lage und Streuung
Mittelwert und MedianPerzentile und QuartileVarianz und StandardabweichungStichprobe oder Grundgesamtheit?Der häufigste WertRückblick: Lieferzeiten4Stichproben und Grundgesamtheiten
Grundgesamtheit und StichprobeStichprobenmittelwerte variierenDie StichprobenverteilungGrößere Stichproben, weniger ZufallRückblick: Eine Stadt befragen2Verteilungen
DichtehistogrammeDatenverteilungenDie NormalverteilungskurveDie 68-95-99,7-RegelZ-WerteRückblick: Akkulaufzeit8Gruppen vergleichen
Boxplots nach GruppenUnterschied der MittelwerteKönnte es Zufall sein?p-WerteDer t-TestRückblick: A/B-Test3Wahrscheinlichkeit durch Simulation
Wahrscheinlichkeit als HäufigkeitDas Gesetz der großen ZahlenAugensummen beim WürfelnErwartungswertBedingte WahrscheinlichkeitRückblick: Gewinnchancen am Würfelstand6Zusammenhänge
Streudiagramme lesenKorrelationKorrelationsmatrixKorrelations-HeatmapsKorrelation ist keine KausalitätRückblick: Eiscreme und SonneÜbe selbstständig: Online-Python-Compiler