Inhaltsverzeichnis
Einführung
Was ist ein Ausreißer?
Grabbs Statistischer Hypothesentest
Grabbs-Test in Python
Outlier-Bibliothek und Smirnov_grubbs
Doppelseitige Grubb-Inspektion
Grammatik
Parameter
Anleitung
Beispiel
Ausgabe
Einseitiger Grubbs-Test
Synatx
Formelimplementierung
Algorithmus
Fazit
Heim Backend-Entwicklung Python-Tutorial So führen Sie einen Grubbs-Test in Python durch

So führen Sie einen Grubbs-Test in Python durch

Aug 28, 2023 pm 03:49 PM
Grubbs -Überprüfung der Pythonausführung

Einführung

Der Grubbs-Test ist eine statistische Hypothesentestmethode, mit der Ausreißer in einem Datensatz erkannt werden. Ausreißer sind Beobachtungen, die einer Datenverteilung zugeordnet sind, auch Anomalien genannt. Datensätze mit Ausreißern sind tendenziell anfälliger für eine Überanpassung als Daten mit einer Normal-/Gaußverteilung. Daher ist es notwendig, Ausreißer vor der Modellierung durch maschinelles Lernen zu berücksichtigen. Vor der Verarbeitung müssen wir Ausreißer im Datensatz erkennen und lokalisieren. Die beliebtesten Techniken zur Erkennung von Ausreißern sind QQPlot, der Interquartilbereich und der statistische Grubbs-Test. In diesem Artikel wird jedoch nur der Grubbs-Test zur Erkennung von Ausreißern besprochen. Sie erfahren: Was ist ein Grubbs-Test und wie implementiert man ihn in Python?

Was ist ein Ausreißer?

Ausreißer sind Datenbeobachtungen, die numerisch von anderen Datenwerten entfernt sind. Diese Werte liegen außerhalb des Bereichs normalverteilter Daten. Der Datensatz muss 67 % der Datensätze bei der ersten Standardabweichung, 95 % der Daten bei der zweiten Standardabweichung und 99,7 % der Punkte bei der dritten Standardabweichung enthalten, um eine Normalverteilung zu erreichen. Mit anderen Worten: Die Datenpunkte sollten zwischen dem ersten und dritten Quartilbereich liegen. Wir betrachten Datensätze unterhalb des ersten Quartils und oberhalb des dritten Quartils als Ausreißer bzw. Ausreißer.

Grabbs Statistischer Hypothesentest

Wie jeder andere statistische Hypothesentest kann auch der Grubbs-Test die Nullhypothese (H0) oder die Alternativhypothese (H1) bestätigen oder ablehnen. Der Grubbs-Test ist ein Test, der Ausreißer in einem Datensatz erkennt.

Wir können den Grubbs-Test auf zwei Arten durchführen: Einseitiger Test und Zweiseitiger Test, für univariate Datensätze oder nahezu normale Stichproben mit Verteilungen von mindestens sieben Variablen. Dieser Test wird auch als extremer studentisierter Abweichungstest oder maximal normalisierter Resttest bezeichnet.

Der Grubbs-Test verwendet die folgenden Annahmen -

  • Null (H0): Der Datensatz weist keine Ausreißer auf.

  • Alternative (H1): Der Datensatz hat nur einen Ausreißer.

Grabbs-Test in Python

Python kann mit seiner umfangreichen Bibliothekssammlung jede Programmierherausforderung meistern. Diese Bibliotheken stellen integrierte Methoden bereit, die direkt zum Ausführen beliebiger Vorgänge, statistischer Tests usw. verwendet werden können. Ebenso verfügt Python über eine Bibliothek, die Methoden zur Durchführung von Grubbs-Tests zur Erkennung von Ausreißern enthält. Wir werden jedoch zwei Möglichkeiten untersuchen, Grubbs-Tests in Python zu implementieren: integrierte Funktionen in Bibliotheken und die Implementierung von Formeln von Grund auf.

Outlier-Bibliothek und Smirnov_grubbs

Lassen Sie uns zunächst die outlier_utils-Bibliothek mit dem folgenden Befehl installieren.

!pip install outlier_utils

Jetzt erstellen wir einen Datensatz mit Ausreißern und führen einen Grubbs-Test durch.

Doppelseitige Grubb-Inspektion

Grammatik

grubbs.test(data, alpha=.05)

Parameter

Daten – Numerischer Vektor von Datenwerten.

alpha – Das Signifikanzniveau des Tests.

Anleitung

Bei dieser Methode muss der Benutzer die Funktion smirnov_grubbs.test() aus dem Outliers-Paket verwenden und die erforderlichen Daten als Eingabe übergeben, um Grubbs Tests auszuführen.

Beispiel

import numpy as np
from outliers import smirnov_grubbs as grubbs
 
#define data
data = np.array([ 5, 14, 15, 15, 14, 19, 17, 16, 20, 22, 8, 21, 28, 11, 9, 29, 40])
 
#perform Grubbs' test
grubbs.test(data, alpha=.05)

Ausgabe

array([ 5, 14, 15, 15, 14, 19, 17, 16, 20, 22,  8, 21, 28, 11,  9, 29])

Der obige Code beginnt einfach mit dem Laden der Bibliothek und der Daten und verwendet schließlich die Methode „test“, um einen Grubbs-Test für diese Daten durchzuführen. Dieser Test erkennt Ausreißer auf beiden Seiten (links und rechts) oder Werte unterhalb des ersten Quartils und oberhalb des dritten Quartils. Die Daten enthielten nur einen Ausreißer (40), der mithilfe des Grubbs-Tests entfernt wurde.

Einseitiger Grubbs-Test

Synatx

grubbs.max_test(data, alpha=.05)

Anleitung

Bei dieser Methode muss der Benutzer die Funktion grubbs.min_test() aufrufen, um den minimalen Ausreißerwert aus dem bereitgestellten Datensatz zu erhalten, oder die Funktion grubbs.max_test() aufrufen, um den maximalen Ausreißerwert aus dem bereitgestellten Datensatz zu erhalten Es wurde ein einseitiger Grubb-Test erhalten.

Beispiel

import numpy as np
from outliers import smirnov_grubbs as grubbs
 
#define data
data = np.array([5, 14, 15, 15, 14, 19, 17, 16, 20, 22, 8, 21, 28, 11, 9, 29, 40])

#perform Grubbs' test for minimum value is an outlier
print(grubbs.min_test(data, alpha=.05)) 

#perform Grubbs' test for minimum value is an outlier
grubbs.max_test(data, alpha=.05)

Ausgabe

[ 5 14 15 15 14 19 17 16 20 22  8 21 28 11  9 29 40]
array([ 5, 14, 15, 15, 14, 19, 17, 16, 20, 22,  8, 21, 28, 11,  9, 29])

Der einseitige Grubbs-Test erkennt Ausreißer unterhalb des ersten Quartils oder oberhalb des dritten Quartils. Wir können sehen, dass die Methode min_test Ausreißer von der kleinsten Seite der Daten entfernt, während die Methode max_test Ausreißer von der Oberseite der Daten entfernt.

Formelimplementierung

Hier werden wir Python verwenden, um die folgende Grubbs-Testformel zu implementieren. Um dies zu erreichen, werden wir die Bibliotheken Numpy und Scipy verwenden.

So führen Sie einen Grubbs-Test in Python durch

Grammatik

g_calculated = numerator/sd_x
g_critical = ((n - 1) * np.sqrt(np.square(t_value_1))) / (np.sqrt(n) * np.sqrt(n - 2 + np.square(t_value_1)))

Algorithmus

Die Implementierungsschritte sind wie folgt -

  • Berechnen Sie den Durchschnitt der Datensatzwerte.

  • Berechnen Sie die Standardabweichung der Datensatzwerte.

  • Um die Grubbs-Testformel zu implementieren, berechnen Sie den Zähler, indem Sie den Wert jedes Werts im Datensatz von seinem Mittelwert subtrahieren.

  • Dividieren Sie den Zählerwert durch die Standardabweichung, um die berechnete Punktzahl zu erhalten.

  • Berechnen Sie kritische Werte für denselben Wert.

  • Wenn der kritische Wert größer als der berechnete Wert ist, gibt es keinen Ausreißer im Datensatz, andernfalls liegt ein Ausreißer vor.

Beispiel

import numpy as np
import scipy.stats as stats
## define data
x = np.array([12,13,14,19,21,23])
y = np.array([12,13,14,19,21,23,45])

## implement Grubbs test
def grubbs_test(x):
   n = len(x)
   mean_x = np.mean(x)
   sd_x = np.std(x)
   numerator = max(abs(x-mean_x))
   g_calculated = numerator/sd_x
   print("Grubbs Calculated Value:",g_calculated)
   t_value_1 = stats.t.ppf(1 - 0.05 / (2 * n), n - 2)
   g_critical = ((n - 1) * np.sqrt(np.square(t_value_1))) / (np.sqrt(n) * np.sqrt(n - 2 + np.square(t_value_1)))
   print("Grubbs Critical Value:",g_critical)
   if g_critical > g_calculated:
      print("We can see from the Grubbs test that the calculated value is less than the crucial value. Recognize the null hypothesis and draw the conclusion that there are no outliers\n")
   else:
      print("We see from the Grubbs test that the estimated value exceeds the critical value. Reject the null theory and draw the conclusion that there are outliers\n")
grubbs_test(x)
grubbs_test(y)

Ausgabe

Grubbs Calculated Value: 1.4274928542926593
Grubbs Critical Value: 1.887145117792422
We can see from the Grubbs test that the calculated value is less than the crucial value. Recognize the null hypothesis and draw the conclusion that there are no outliers

Grubbs Calculated Value: 2.2765147221587774
Grubbs Critical Value: 2.019968507680656
We see from the Grubbs test that the estimated value exceeds the critical value. Reject the null theory and draw the conclusion that there are outliers

Das Ergebnis des Grubb-Tests zeigt, dass das Array x keine Ausreißer hat, y jedoch 1 Ausreißer.

Fazit

In diesem Artikel haben wir etwas über Ausreißer und Grubbs-Tests in Python gelernt. Lassen Sie uns diesen Artikel mit einigen wichtigen Punkten abschließen.

  • Ausreißer sind Datensätze, die außerhalb des Interquartilbereichs liegen.

  • Ausreißer entsprechen nicht der Normalverteilung des Datensatzes.

  • Wir können den statistischen Test der Grubbs-Hypothese verwenden, um Ausreißer zu erkennen.

  • Wir können Grubbs-Tests mit den integrierten Methoden ausführen, die in der outlier_utils-Bibliothek bereitgestellt werden.

  • Der zweiseitige Grubbs-Test erkennt und entfernt Ausreißer auf der linken und rechten Seite.

  • Der einseitige Grubbs-Test erkennt jedoch Ausreißer auf beiden Seiten.

Das obige ist der detaillierte Inhalt vonSo führen Sie einen Grubbs-Test in Python durch. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

PHP-Tutorial
1543
276
Abgeschlossener Python Blockbuster Online -Eingang Python Free Fertig -Website -Sammlung Abgeschlossener Python Blockbuster Online -Eingang Python Free Fertig -Website -Sammlung Jul 23, 2025 pm 12:36 PM

Dieser Artikel hat mehrere "Fertig" -Projekt-Websites von Python und "Blockbuster" -Portalen "Blockbuster" für Sie ausgewählt. Egal, ob Sie nach Entwicklungsinspiration suchen, den Quellcode auf Master-Ebene beobachten und lernen oder Ihre praktischen Fähigkeiten systematisch verbessern, diese Plattformen sind nicht zu übersehen und können Ihnen helfen, schnell zu einem Python-Meister zu werden.

Python Run Shell -Befehlsbeispiel Python Run Shell -Befehlsbeispiel Jul 26, 2025 am 07:50 AM

Verwenden Sie Subprozess.run (), um die Befehle von Shell sicher auszuführen und die Ausgabe zu erfassen. Es wird empfohlen, Parameter in Listen zu übergeben, um Einspritzrisiken zu vermeiden. 2. Wenn die Shell -Eigenschaften erforderlich sind, können Sie Shell = True einstellen, aber achten Sie auf die Befehlsinjektion. 3. verwenden subprocess.popen, um die Echtzeit-Ausgangsverarbeitung zu realisieren. 4. Setzen Sie check = true, um Ausnahmen zu werfen, wenn der Befehl fehlschlägt. 5. Sie können direkt Ketten anrufen, um die Ausgabe in einem einfachen Szenario zu erhalten. Sie sollten Subprozess vorrangig machen. Die obigen Methoden überschreiben die Kernverwendung der Ausführung von Shell -Befehlen in Python.

Python Seeborn JointPlot Beispiel Python Seeborn JointPlot Beispiel Jul 26, 2025 am 08:11 AM

Verwenden Sie die Jointplot von Seeborn, um die Beziehung und Verteilung zwischen zwei Variablen schnell zu visualisieren. 2. Das grundlegende Streudiagramm wird durch sns.jointplot (data = tips, x = "total_bill", y = "tip", sort = "scatter") implementiert, das Zentrum ist ein Streudiagramm und das Histogramm wird auf der oberen und unteren und rechten Seite angezeigt. 3. Fügen Sie Regressionslinien und Dichteinformationen zu einer Art "Reg" hinzu und kombinieren Sie Marginal_KWS, um den Edge -Plot -Stil festzulegen. 4. Wenn das Datenvolumen groß ist, wird empfohlen, "Hex" zu verwenden,

Python httpx Async Client Beispiel Python httpx Async Client Beispiel Jul 29, 2025 am 01:08 AM

Verwenden Sie httpx.asyncclient, um asynchrone HTTP -Anforderungen effizient zu initiieren. 1. Basic-Get-Anfragen verwalten Clients über Asyncwith und verwenden Sie AwaitClient.get, um nicht blockierende Anforderungen zu initiieren. 2. kombiniert asyncio.gather, sich mit asyncio zu kombinieren. Gather kann die Leistung erheblich verbessern, und die Gesamtzeit entspricht der langsamsten Anfrage. 3.. Unterstützen Sie benutzerdefinierte Header, Authentifizierung, Base_url und Zeitüberschreitungseinstellungen; 4. kann Postanfragen senden und JSON -Daten tragen; 5. Achten Sie darauf, dass das Mischen von synchronem asynchronem Code vermieden wird. Der Proxy-Support muss auf die Back-End-Kompatibilität achten, die für Crawlers oder API-Aggregation und andere Szenarien geeignet ist.

Python -Liste zum String Conversion Beispiel Python -Liste zum String Conversion Beispiel Jul 26, 2025 am 08:00 AM

String -Listen können mit der join () -Methode wie '' .Join (Words) zusammengeführt werden, um "helloWorldfrompython" zu erhalten; 2. Die Zahlenlisten müssen vor dem Beitritt in Zeichenfolgen mit Karte (STR, Zahlen) oder [STR (x) ForxInnumbers] konvertiert werden. 3. Jede Typliste kann direkt in Zeichenfolgen mit Klammern und Zitaten umgewandelt werden, die zum Debuggen geeignet sind. 4. Benutzerdefinierte Formate können durch Generatorausdrücke in Kombination mit Join () implementiert werden, wie z.

Optimierung von Python für Speichervorgänge Optimierung von Python für Speichervorgänge Jul 28, 2025 am 03:22 AM

PythoncanbeoptimizedFormemory-BoundoperationsByreducingoverheadThroughGeneratoren, effiziente Datastrukturen und ManagingObjectLifetimes.First, UseGeneratorsinSteadofListStoprocesslargedatasetasetasematatime, Vermeidung von loloadingeNthertomemory.Secondatasetasetematatime, Choos

Python verbinden sich mit SQL Server PyoDBC -Beispiel Python verbinden sich mit SQL Server PyoDBC -Beispiel Jul 30, 2025 am 02:53 AM

Installieren Sie PYODBC: Verwenden Sie den Befehl pipinstallpyoDBC, um die Bibliothek zu installieren. 2. SQLServer verbinden: Verwenden Sie die Verbindungszeichenfolge, die Treiber, Server, Datenbank, UID/PWD oder Trusted_Connection über die Methode Pyodbc.Connect () und die SQL -Authentifizierung bzw. der Windows -Authentifizierung unterstützen; 3. Überprüfen Sie den installierten Treiber: Führen Sie Pyodbc.Drivers () aus und filtern Sie den Treibernamen mit 'SQLServer', um sicherzustellen, dass der richtige Treiberame wie 'ODBCDRIVER17 für SQLServer' verwendet wird. 4. Schlüsselparameter der Verbindungszeichenfolge

Python Shutil Rmtree Beispiel Python Shutil Rmtree Beispiel Aug 01, 2025 am 05:47 AM

Shutil.rmtree () ist eine Funktion in Python, die den gesamten Verzeichnisbaum rekursiv löscht. Es kann bestimmte Ordner und alle Inhalte löschen. 1. Basisnutzung: Verwenden Sie Shutil.rmtree (Pfad), um das Verzeichnis zu löschen, und Sie müssen FilenotFoundError, Erlaubnissekror und andere Ausnahmen verarbeiten. 2. Praktische Anwendung: Sie können Ordner, die Unterverzeichnisse und Dateien enthalten, in einem Klick löschen, z. B. temporäre Daten oder zwischengespeicherte Verzeichnisse. 3. ANMERKUNGEN: Der Löschvorgang wird nicht wiederhergestellt; FilenotFoundError wird geworfen, wenn der Weg nicht existiert. Es kann aufgrund von Berechtigungen oder Einstellungen fehlschlagen. 4. Optionale Parameter: Fehler können von ignore_errors = true ignoriert werden

See all articles