Table des matières
Présentation
Qu'est-ce qu'une valeur aberrante ?
Test d'hypothèse statistique Grabbs
Test Grabbs en Python
Bibliothèque Outlier et Smirnov_grubbs
Inspection Grubb double face
Grammaire
Paramètres
Instructions
Exemple
Sortie
Test de Grubbs unilatéral
Synatx
Mise en œuvre de la formule
Algorithme
Conclusion
Maison développement back-end Tutoriel Python Comment effectuer le test Grubbs en Python

Comment effectuer le test Grubbs en Python

Aug 28, 2023 pm 03:49 PM
Grubbs teste l'exécution de Python

Présentation

Le test de Grubbs est une méthode de test d'hypothèses statistiques utilisée pour détecter les valeurs aberrantes dans un ensemble de données. Les valeurs aberrantes sont des observations affectées à une distribution de données, également appelées anomalies. Les ensembles de données comportant des valeurs aberrantes ont tendance à être plus susceptibles au surapprentissage que les données présentant une distribution normale/gaussienne. Par conséquent, il est nécessaire de traiter les valeurs aberrantes avant la modélisation de l’apprentissage automatique. Avant le traitement, nous devons détecter et localiser les valeurs aberrantes dans l'ensemble de données. Les techniques de détection des valeurs aberrantes les plus populaires sont QQPlot, l'intervalle interquartile et le test statistique de Grubbs. Cependant, cet article ne discutera que du test de Grubbs pour détecter les valeurs aberrantes. Vous apprendrez : Qu'est-ce qu'un test Grubbs et comment l'implémenter en Python.

Qu'est-ce qu'une valeur aberrante ?

Les valeurs aberrantes sont des observations de données qui sont numériquement éloignées des autres valeurs de données. Ces valeurs sortent de la plage des données normalement distribuées. L'ensemble de données doit contenir 67 % des enregistrements au premier écart type, 95 % des données au deuxième écart type et 99,7 % des points au troisième écart type pour obtenir une distribution normale. En d’autres termes, les points de données doivent se situer entre le premier et le troisième quartile. Nous considérons les enregistrements inférieurs au premier quartile et supérieurs au troisième quartile comme des valeurs aberrantes ou aberrantes.

Test d'hypothèse statistique Grabbs

Comme tout autre test d'hypothèse statistique, le test de Grubbs peut également approuver ou rejeter l'hypothèse nulle (H0) ou l'hypothèse alternative (H1). Le test de Grubbs est un test qui détecte les valeurs aberrantes dans un ensemble de données.

Nous pouvons effectuer le test de Grubbs de deux manières : Test unilatéral et Test bilatéral, pour des ensembles de données univariées ou des échantillons presque normaux avec des distributions d'au moins sept variables. Ce test est également appelé test d'écart studentisé extrême ou test de résidu maximal normalisé.

Le test Grubbs utilise les hypothèses suivantes -

  • Null (H0) : l'ensemble de données n'a aucune valeur aberrante.

  • Alternative (H1) : l'ensemble de données n'a qu'une seule valeur aberrante.

Test Grabbs en Python

Python peut relever n'importe quel défi de programmation grâce à sa vaste collection de bibliothèques. Ces bibliothèques fournissent des méthodes intégrées qui peuvent être utilisées directement pour effectuer n'importe quelle opération, test statistique, etc. De même, Python dispose d'une bibliothèque qui contient des méthodes permettant d'effectuer des tests Grubbs afin de détecter les valeurs aberrantes. Cependant, nous explorerons deux manières d'implémenter les tests Grubbs en Python : les fonctions intégrées dans les bibliothèques et l'implémentation de formules à partir de zéro.

Bibliothèque Outlier et Smirnov_grubbs

Installons d'abord la bibliothèque outlier_utils à l'aide de la commande suivante.

!pip install outlier_utils

Créons maintenant un ensemble de données contenant des valeurs aberrantes et effectuons un test Grubbs.

Inspection Grubb double face

Grammaire

grubbs.test(data, alpha=.05)

Paramètres

data - Vecteur numérique de valeurs de données.

alpha - Le niveau de signification du test.

Instructions

Dans cette méthode, l'utilisateur doit utiliser la fonction smirnov_grubbs.test() du package outliers et transmettre les données nécessaires en entrée afin d'exécuter les tests de Grubb.

Exemple

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)

Sortie

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

Le code ci-dessus commence simplement par charger la bibliothèque et les données, et utilise enfin la méthode "test" pour effectuer un test Grubbs sur ces données. Ce test détecte les valeurs aberrantes des deux côtés (gauche et droite), ou les valeurs inférieures au premier quartile et supérieures au troisième quartile. Les données ne comportaient qu'une seule valeur aberrante (40), qui a été supprimée à l'aide du test de Grubbs.

Test de Grubbs unilatéral

Synatx

grubbs.max_test(data, alpha=.05)

Instructions

Dans cette méthode, l'utilisateur doit appeler la fonction grubbs.min_test() pour obtenir la valeur aberrante minimale de l'ensemble de données fourni, ou appeler la fonction grubbs.max_test() pour obtenir la valeur aberrante maximale de l'ensemble de données fourni. Un test de Grubb unilatéral a été obtenu.

Exemple

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)

Sortie

[ 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])

Le test Grubbs unilatéral détecte les valeurs aberrantes en dessous du premier quartile ou au-dessus du troisième quartile. Nous pouvons voir que la méthode min_test supprime les valeurs aberrantes du plus petit côté des données, tandis que la méthode max_test supprime les valeurs aberrantes du haut des données.

Mise en œuvre de la formule

Ici, nous utiliserons Python pour implémenter la formule de test Grubbs suivante. Nous utiliserons les bibliothèques Numpy et Scipy pour y parvenir.

Comment effectuer le test Grubbs en Python

Grammaire

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)))

Algorithme

Les étapes de mise en œuvre sont les suivantes -

  • Calculez la moyenne des valeurs de l'ensemble de données.

  • Calculez l'écart type des valeurs de l'ensemble de données.

  • Pour implémenter la formule du test Grubbs, calculez le numérateur en soustrayant la valeur de chaque valeur de l'ensemble de données de sa moyenne.

  • Divisez la valeur du numérateur par l'écart type pour obtenir le score calculé.

  • Calculez les scores critiques pour la même valeur.

  • Si la valeur critique est supérieure à la valeur calculée, il n'y a pas de valeur aberrante dans l'ensemble de données, sinon il y a une valeur aberrante.

Exemple

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)

Sortie

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

Le résultat du test Grubb montre que le tableau x n'a aucune valeur aberrante, mais y a 1 valeur aberrante.

Conclusion

Nous avons découvert les valeurs aberrantes et les tests de Grubbs en Python dans cet article. Terminons cet article par quelques points clés.

  • Les valeurs aberrantes sont des enregistrements qui se situent en dehors de la plage interquartile.

  • Les valeurs aberrantes ne sont pas conformes à la distribution normale de l'ensemble de données.

  • Nous pouvons utiliser le test statistique d'hypothèse de Grubbs pour détecter les valeurs aberrantes.

  • Nous pouvons exécuter des tests Grubbs en utilisant les méthodes intégrées fournies dans la bibliothèque outlier_utils.

  • Le test Grubbs recto-verso détecte et supprime les valeurs aberrantes sur les côtés gauche et droit.

  • Cependant, le test unilatéral de Grubbs détectera les valeurs aberrantes de chaque côté.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel PHP
1543
276
Blockbuster Python terminé Affichage de l'entrée Python Collection de site Web fini gratuit Blockbuster Python terminé Affichage de l'entrée Python Collection de site Web fini gratuit Jul 23, 2025 pm 12:36 PM

Cet article a sélectionné plusieurs sites Web de projet "finis" Python et des portails de ressources d'apprentissage "Blockbuster" de haut niveau pour vous. Que vous recherchiez l'inspiration de développement, l'observation et l'apprentissage du code source au niveau de la maîtrise ou que vous amélioriez systématiquement vos capacités pratiques, ces plateformes ne sont pas manquées et peuvent vous aider à devenir un maître Python rapidement.

Exemple de commande de Shell Run Shell Exemple de commande de Shell Run Shell Jul 26, 2025 am 07:50 AM

Utilisez Sub-Process.run () pour exécuter en toute sécurité les commandes de shell et la sortie de capture. Il est recommandé de transmettre des paramètres dans les listes pour éviter les risques d'injection; 2. Lorsque les caractéristiques du shell sont nécessaires, vous pouvez définir Shell = True, mais méfiez-vous de l'injection de commande; 3. Utilisez un sous-processus.popen pour réaliser le traitement de sortie en temps réel; 4. SET CHECK = TRUE pour lancer des exceptions lorsque la commande échoue; 5. Vous pouvez appeler directement des chaînes pour obtenir la sortie dans un scénario simple; Vous devez donner la priorité à Sub-Process.run () dans la vie quotidienne pour éviter d'utiliser OS.System () ou les modules obsolètes. Les méthodes ci-dessus remplacent l'utilisation du noyau de l'exécution des commandes shell dans Python.

Python Seaborn JointPlot Exemple Python Seaborn JointPlot Exemple Jul 26, 2025 am 08:11 AM

Utilisez le plot conjoint de Seaborn pour visualiser rapidement la relation et la distribution entre deux variables; 2. Le tracé de diffusion de base est implémenté par sn.jointplot (data = pointes, x = "total_bill", y = "Tip", kind = "dispers"), le centre est un tracé de dispersion et l'histogramme est affiché sur les côtés supérieur et inférieur et droit; 3. Ajouter des lignes de régression et des informations de densité à un kind = "reg" et combiner marginal_kws pour définir le style de tracé de bord; 4. Lorsque le volume de données est important, il est recommandé d'utiliser "Hex"

Python Httpx Async Client Exemple Python Httpx Async Client Exemple Jul 29, 2025 am 01:08 AM

Utilisez httpx.asyncclient pour initier efficacement les demandes HTTP asynchrones. 1. 2. Combiner asyncio.gather à se combiner avec Asyncio.gather peut considérablement améliorer les performances, et le temps total est égal à la demande la plus lente; 3. Prise en charge des en-têtes personnalisés, des paramètres d'authentification, de base_url et de délai d'expiration; 4. Peut envoyer des demandes de poste et transporter des données JSON; 5. Faites attention pour éviter de mélanger le code asynchrone synchrone. Le support proxy doit prêter attention à la compatibilité back-end, ce qui convient aux robots ou à l'agrégation API et à d'autres scénarios.

Python List to String Conversion Exemple Python List to String Conversion Exemple Jul 26, 2025 am 08:00 AM

Les listes de chaînes peuvent être fusionnées avec la méthode join (), telles que '' .join (mots) pour obtenir "HelloworldFrompython"; 2. Les listes de nombres doivent être converties en chaînes avec MAP (STR, nombres) ou [STR (x) Forxinnumbers] avant de rejoindre; 3. Toute liste de types peut être directement convertie en chaînes avec des supports et des devis, adaptées au débogage; 4. Les formats personnalisés peuvent être implémentés par des expressions de générateur combinées avec join (), telles que '|' .join (f "[{item}]" ForIteminitems)

Optimisation de Python pour les opérations liées à la mémoire Optimisation de Python pour les opérations liées à la mémoire Jul 28, 2025 am 03:22 AM

PythonCanBeoptimizedFormemory-Boundoperations AdreductoverHeadHroughGenerators, EfficientDatastructures et ManagingObjectliFetimes.first, useGeneratorsInSteadofListStoproceSlargedataseSeItematatime, EvitingLoadingEnteryToMeToMeMory.

Python Connexion à SQL Server PyoDBC Exemple Python Connexion à SQL Server PyoDBC Exemple Jul 30, 2025 am 02:53 AM

Installez PYODBC: utilisez la commande PiPInstallpyodbc pour installer la bibliothèque; 2. Connectez SQLServer: utilisez la chaîne de connexion contenant le pilote, le serveur, la base de données, l'UID / PWD ou TrustEd_Connection via la méthode pyoDBC.Connect () et prendre en charge l'authentification SQL ou l'authentification Windows respectivement; 3. Vérifiez le pilote installé: exécutez pyodbc.Drivers () et filtrez le nom du pilote contenant «SQLServer» pour vous assurer que le nom du pilote correct est utilisé tel que «ODBCDriver17 pour SQLServer»; 4. Paramètres clés de la chaîne de connexion

Python Shutil rmtree Exemple Python Shutil rmtree Exemple Aug 01, 2025 am 05:47 AM

ShutLil.rmtree () est une fonction de Python qui supprime récursivement l'intégralité de l'arborescence du répertoire. Il peut supprimer les dossiers spécifiés et tous les contenus. 1. Utilisation de base: utilisez ShutLil.rmtree (Path) pour supprimer le répertoire, et vous devez gérer FileLenotFoundError, PermissionError et autres exceptions. 2. Application pratique: vous pouvez effacer les dossiers contenant des sous-répertoires et des fichiers en un seul clic, tels que des données temporaires ou des répertoires mis en cache. 3. Remarques: L'opération de suppression n'est pas restaurée; FilenotFoundError est lancé lorsque le chemin n'existe pas; Il peut échouer en raison d'autorisations ou d'occupation des fichiers. 4. Paramètres facultatifs: les erreurs peuvent être ignorées par ignore_errors = true

See all articles