Der „robuste“ Datenwissenschaftler: Mit Messy Data und Pingouin gewinnen
Bild vom Herausgeber

# Einführung

Zunächst einmal eine harte Wahrheit: Lehrbuch Datenwissenschaft wird in der realen Welt meist zur Lüge. Konzepte und Techniken werden anhand fein kuratierter, wunderschön glockenförmiger Datenvariablen gelehrt, aber sobald wir uns in die Wildnis realer Projekte wagen, werden wir mit vielen Ausreißern, übermäßig verzerrten Verteilungen und unbezwingbaren Varianzen konfrontiert.

A vorheriger Artikel beim Aufbau einer explorativen Datenanalyse-Pipeline (EDA) mit Pingouin zeigte, wie man durch Checks Fälle erkennt, in denen die Daten gegen eine Reihe von Annahmen wie Homoskedastizität und Normalität verstoßen. Was aber, wenn die Checks fehlschlagen? Die Lösung ist nicht darin, die Daten wegzuwerfen, sondern sie robuster zu machen.

In diesem Artikel wird die Kunstfertigkeit der Verwendung robuster Statistiken in datenwissenschaftlichen Prozessen aufgezeigt. Hierbei handelt es sich um mathematische Methoden, die speziell darauf ausgelegt sind, zuverlässige und gültige Ergebnisse zu liefern, selbst wenn die Daten nicht den klassischen Annahmen entsprechen oder von Ausreißern und Rauschen durchdrungen sind. Mit dem Ansatz „Wählen Sie Ihr eigenes Abenteuer“ erstellen wir mithilfe von Pythons Pingouin drei Szenarien, um die hässlichsten Aspekte in den Daten zu verwalten, auf die Sie bei Ihrer täglichen Arbeit stoßen könnten.

# Ersteinrichtung

Beginnen wir mit der Set up (falls erforderlich) und dem Import von Pingouin und PandasAnschließend laden wir den verfügbaren Weinqualitätsdatensatz Hier.

!pip set up pingouin pandas

import pandas as pd
import pingouin as pg

# Loading our messy, real-world-like dataset, containing pink and white wine samples
url = "https://uncooked.githubusercontent.com/gakudo-ai/open-datasets/refs/heads/major/wine-quality-white-and-red.csv"
df = pd.read_csv(url)

# Take a small peek at what we're about to take care of
df.head()

Wenn Sie sich den vorherigen Pingouin-Artikel angesehen haben, wissen Sie bereits, dass es sich um einen notorisch chaotischen Datensatz handelt, der mehrere gängige Annahmen nicht erfüllt. Jetzt werden wir uns auf drei verschiedene „Abenteuer“ einlassen, bei denen jedes ein Szenario, ein Kernproblem und einen Vorschlag für eine robuste Lösung zu dessen Lösung beleuchtet.

// Abenteuer 1: Wenn der Normalitätstest fehlschlägt

Angenommen, wir führen Normalitätstests für zwei Gruppen durch: Weißweinproben und Rotweinproben.

white_wine_alcohol = df(df('kind') == 'white')('alcohol')
red_wine_alcohol = df(df('kind') == 'pink')('alcohol')

print("Normality take a look at for White Wine Alcohol content material:")
print(pg.normality(white_wine_alcohol))
print("nNormality take a look at for Pink Wine Alcohol content material:")
print(pg.normality(red_wine_alcohol))

Sie werden feststellen, dass keine der beiden Verteilungen regular ist und extrem niedrige p-Werte aufweist. Obwohl die Nichtnormalität selbst nicht direkt auf Ausreißer oder Schiefe hinweist, deutet eine starke Abweichung von der Normalität häufig darauf hin, dass solche Merkmale in den Daten vorhanden sein könnten. In dieser Scenario wäre der Mittelwertvergleich mittels eines t-Checks gefährlich und würde wahrscheinlich zu unzuverlässigen Ergebnissen führen.

Die robuste Lösung für ein Szenario wie dieses ist die Mann-Whitney-U-Check. Anstatt Durchschnittswerte zu vergleichen, vergleicht dieser Check die Ränge in den Daten und sortiert beispielsweise alle Weine in einer Gruppe vom niedrigsten zum höchsten Alkoholgehalt. Dieser rangbasierte Ansatz ist der Meistertrick, der Ausreißern ihre manchmal gefährliche Größe nimmt. So geht’s:

# Separating our two teams
red_wine = df(df('kind') == 'pink')('alcohol')
white_wine = df(df('kind') == 'white')('alcohol')

# Operating the sturdy Mann-Whitney U take a look at
mwu_results = pg.mwu(x=red_wine, y=white_wine)
print(mwu_results)

Ausgabe:

         U_val different     p_val       RBC      CLES
MWU  3829043.5   two-sided  0.181845 -0.022193  0.488903

Da der p-Wert nicht unter 0,05 liegt, gibt es keinen statistisch signifikanten Unterschied im Alkoholgehalt zwischen den beiden Weintypen – und diese Schlussfolgerung ist garantiert ausreißer- und schiefesicher.

// Abenteuer 2: Wenn der gepaarte T-Check fehlschlägt

Angenommen, Sie möchten nun zwei Messungen desselben Probanden vergleichen – z. B. den Zuckerspiegel eines Patienten vor und nach einem Arzneimittelprototyp oder zwei in derselben Flasche Wein gemessene Eigenschaften. Der Fokus liegt hier darauf, wie die Unterschiede zwischen gepaarten Messungen verteilt werden. Wenn solche Unterschiede nicht normalverteilt sind, führt ein standardmäßiger gepaarter T-Check zu unzuverlässigen Konfidenzintervallen.

Die ideale Lösung in diesem Szenario ist die Wilcoxon-Signed-Rank-Check: der robuste Bruder des gepaarten t-Checks, der durch Beobachtung der Unterschiede zwischen Spalten und Rangfolge ihrer absoluten Werte funktioniert. In Pingouin wird dieser Check „utilizing“ genannt pg.wilcoxon()indem die beiden Spalten übergeben werden, die die gepaarten Maße innerhalb desselben Themas enthalten – z. B. zwei Arten von Weinsäure.

# Run the sturdy Wilcoxon signed-rank take a look at for paired knowledge
wilcoxon_results = pg.wilcoxon(x=df('fastened acidity'), y=df('unstable acidity'))
print(wilcoxon_results)

Ergebnis:

          W_val different  p_val  RBC  CLES
Wilcoxon    0.0   two-sided    0.0  1.0   1.0

Das obige Ergebnis zeigt einen statistisch signifikanten Unterschied oder eine „perfekte Trennung“ zwischen den beiden Messungen. Die beiden Weineigenschaften sind nicht nur unterschiedlich, sie wirken auch im gesamten Datensatz auf völlig unterschiedlichen Größenstufen.

// Abenteuer 3: Wenn die ANOVA fehlschlägt

In diesem dritten und letzten Abenteuer wollen wir prüfen, ob sich der Restzuckergehalt im Wein bei verschiedenen Qualitätsbewertungen erheblich unterscheidet. Beachten Sie, dass letztere zwischen 3 und 9 liegen, ganzzahlige Werte annehmen und daher als diskrete Kategorien behandelt werden können.

Wenn der Levene-Homoskedastizitätstest nach Pingouin dramatisch versagt – zum Beispiel, weil die Zuckervarianz bei mittelmäßigen Weinen groß ist, bei Spitzenweinen jedoch sehr gering – kann eine klassische einfaktorielle ANOVA zu irreführenden Ergebnissen führen, da dieser Check gleiche Varianzen zwischen den Gruppen annimmt.

Die Lösung ist Welchs ANOVAwodurch Gruppen mit hoher Varianz bestraft werden, wodurch Skalen ausgeglichen werden und Vergleiche über mehrere Kategorien hinweg fairer werden. So führen Sie diese robuste Various zur herkömmlichen ANOVA mit Pingouin durch:

# Run Welch's ANOVA to check sugar throughout high quality scores
welch_results = pg.welch_anova(knowledge=df, dv='residual sugar', between='high quality')
print(welch_results)

Ergebnis:

    Supply  ddof1      ddof2          F         p_unc       np2
0  high quality      6  54.507934  10.918282  5.937951e-08  0.008353

Auch wenn eine einfaktorielle ANOVA aufgrund ungleicher Varianzen möglicherweise Schwierigkeiten gehabt hätte, liefert die ANOVA von Welch eine solide Schlussfolgerung. Der sehr kleine p-Wert ist ein klarer Beweis dafür, dass sich die Restzuckerwerte je nach Weinqualitätsbewertung erheblich unterscheiden. Bedenken Sie jedoch, dass Zucker nur ein kleiner Teil des Puzzles ist, das die Weinqualität beeinflusst – ein Punkt, der durch den niedrigen Eta-Quadrat-Wert von 0,008 unterstrichen wird.

# Zusammenfassung

Anhand von drei Beispielszenarien, die jeweils ein Drawback mit chaotischen Daten mit einer robusten statistischen Strategie verbinden, haben wir gelernt, dass ein erfahrener Datenwissenschaftler nicht bedeutet, über perfekte Daten zu verfügen oder diese perfekt abzustimmen – es bedeutet zu wissen, was zu tun ist, wenn die Daten aus unterschiedlichen Gründen schwierig werden. Die Funktionen von Pingouin implementieren eine Vielzahl robuster Checks, die dabei helfen, der Falle fehlgeschlagener Annahmen zu entkommen und mit geringem Mehraufwand mathematisch fundierte Erkenntnisse zu gewinnen.

Iván Palomares Carrascosa ist ein führender Autor, Redner und Berater in den Bereichen KI, maschinelles Lernen, Deep Studying und LLMs. Er schult und leitet andere darin, KI in der realen Welt zu nutzen.

Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert