p-Werte
Teil des Abschnitts Statistik für ML der Machine Learning-Journey von Coddy. Lektion 44 von 64.
Der p-Wert macht aus den Durchmischungen eine Zahl: den Anteil der fiktiven Abstände, die mindestens so groß sind wie der tatsächliche Abstand, in beide Richtungen.
Im Code für die Schriftartenstudie:
real = sans.mean() - serif.mean()
rng = np.random.default_rng(4)
diffs = shuffled_diffs(serif, sans, 1000, rng) # die Schleife aus der letzten Lektion
p_value = (np.abs(diffs) >= np.abs(real)).mean()
print(p_value)Dies gibt 0.039 aus. np.abs zählt eine Abweichung von -7 als genauso groß wie 7: Die Frage ist, ob sich die Schriftarten überhaupt unterscheiden.
Unterhalb des Signifikanzniveaus, oft 0,05, ist Zufall eine wenig überzeugende Erklärung für den Vorteil einer Schriftart oder eines Modells. Kein Beweis: 4 von 100 zufälligen Durchmischungen erzielten ihn trotzdem.
Aufgabe
MittelEin Bauernhof bewässert Erdbeeren morgens oder abends. Der Starter teilt strawberries.csv in morning und evening auf, listet columns auf, liest level ein und definiert shuffled_diffs.
- Berechne für jede Spalte die tatsächliche Differenz (Mittelwert abends minus Mittelwert morgens), die gemischten Differenzen (morgens zuerst) und den p-Wert.
- Gib für jede Spalte eine Zeile wie unten aus (Differenz mit 2 Dezimalstellen, p mit 3):
differs, wenn p kleiner alslevelist. - Zähle, wie viele sich unterscheiden.
Ein anderer Bauernhof, level 0.05:
berries: difference -5.4, p = 0.009, differs
weight_g: difference 0.2, p = 1.0, could be chance
sweetness_brix: difference 0.46, p = 0.022, differs
leaf_spots: difference 0.6, p = 0.397, could be chance
Columns that differ: 2 of 4Probier es selbst
import numpy as np
import pandas as pd
# Gibt die gemischten Differenzen eines Permutationstests zurück (Schleife aus Lektion 43): simulierter Mittelwert von b minus simulierter Mittelwert von a
def shuffled_diffs(a, b, shuffles, rng):
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())
return np.array(diffs)
beds = pd.read_csv("strawberries.csv")
morning = beds[beds["watering"] == "morning"]
evening = beds[beds["watering"] == "evening"]
columns = ["berries", "weight_g", "sweetness_brix", "leaf_spots"]
level = float(input())
# Ändere die folgenden Zeilen nicht
rng = np.random.default_rng(21)
shuffles = 1000
# 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