Comment valider vos données avec des tests statistiques dans Python
Sommaire
Liens de saut
-
Qu'est-ce que le test d'hypothèse?
Avoir des données n'est que la moitié de la bataille. Comment savez-vous que vos données signifient réellement quelque chose? Avec un code Python simple, vous pouvez rapidement vérifier si les différences de données sont réellement significatives.
Qu'est-ce que le test d'hypothèse?
Dans les statistiques, les tests d'hypothèse sont l'utilisation de techniques pour vérifier si les résultats d'un échantillon ou d'un groupe d'échantillons sont statistiquement significatifs. En d'autres termes, les tests d'hypothèse déterminent si les résultats proviennent ou non de chances aléatoires. Les tests d'hypothèse quantifient la différence entre les échantillons pour découvrir s'ils sont significatifs.
Les chercheurs forment généralement une hypothèse nulle, qui suppose que les résultats ne sont pas significatifs, puis essaient de réfuter cela en faveur d'une hypothèse alternative, que les résultats sont statistiquement significatifs. C'est comme la présomption d'innocence devant le tribunal, où un défendeur est présumé innocent jusqu'à sa culpabilité. Les chercheurs supposeront que les résultats ne sont pas statistiquement significatifs jusqu'à ce que le test rejette l'hypothèse nulle.
Un bon exemple est un essai clinique pour un nouveau médicament. Un échantillon de patients recevra un placebo et un autre le médicament testé. Les groupes seront testés pour voir si le médicament a un effet significatif. Si le médicament était destiné à contrôler la pression artérielle, un test pourrait comparer la pression artérielle systolique entre les groupes.
Les tests ont été historiquement effectués à l'aide de formules et de tableaux mathématiques trouvées dans les manuels et le dos des manuels de statistiques; Cependant, les logiciels modernes, y compris les bibliothèques Python, rend le travail beaucoup plus rapide de nos jours. C'est une autre raison pour laquelle Python est tellement excellent pour l'analyse avancée des données.
Les tests statistiques se font généralement dans un certain seuil, connu sous le nom de niveau alpha. Pour être confiant à 95% des résultats, l'alpha serait de 0,05, correspondant à un niveau de signification de 5%. Si vous vouliez être confiant à 99%, l'alpha serait de 0,01. Cela forme une valeur p contre laquelle vous souhaitez vérifier pour accepter ou rejeter l'hypothèse nulle. À un niveau de 95%, vous rejetteriez l'hypothèse nulle si la valeur p était inférieure à 0,05, et à un niveau de 99%, si elle était en dessous. .01.
Dans les tests d'hypothèse, il est possible de faire deux erreurs majeures. Une erreur de type I, ou faux négatif, se produit lorsque vous rejetez une hypothèse lorsqu'elle doit être acceptée. Une erreur de type II, ou faux positif, se produit lorsque vous acceptez une hypothèse lorsqu'elle doit être rejetée. Par exemple, rejeter l'hypothèse nulle lorsqu'il devrait être accepté serait une erreur de type I, mais du point de vue de l'hypothèse alternative, ce serait une erreur de type II.
Les erreurs de test d'hypothèse peuvent avoir de graves conséquences, comme dans un essai clinique, lorsque l'hypothèse alternative selon laquelle un médicament est efficace est accepté lorsqu'il peut être inefficace ou même nocif. La meilleure défense contre les deux types d'erreurs est d'avoir une taille aussi grande que possible.
Déterminez les hypothèses nulles et alternatives, ainsi que le niveau de signification, avant Vous testez, pour éviter d'être trop influencé par les résultats des tests.
Pourquoi des tests statistiques?
Des tests statistiques sont utilisés car seuls, il est difficile de dire si les données signifient quelque chose. Si une entreprise pharmaceutique va commercialiser un nouveau médicament, il faut montrer que le médicament fonctionne réellement. C'est là que les essais cliniques entrent en jeu. Ou vous pourriez être dans un domaine comme des études de marché où vous voulez montrer que les consommateurs qui achètent un produit sont susceptibles d'en acheter un autre.
Les tests statistiques sont plus que des calculs, mais en réfléchissant également de manière critique aux données.
Test t de l'étudiant
Les tests statistiques sont généralement introduits dans les cours de statistiques élémentaires avec la distribution normale, avec la célèbre courbe en forme de cloche, car ses calculs sont simples. Il n'est pas pratique pour la plupart des recherches du monde réel pour deux raisons: elle nécessite une connaissance de l'écart-type de la population, qu'un chercheur n'aura probablement pas, ainsi que des tailles d'échantillon plus grandes, ce qui peut être difficile à obtenir pour les chercheurs.
Pour surmonter ces limites, où la distribution des données semble similaire à la distribution normale, le test t de Student est utilisé à la place dans de nombreuses recherches réelles. L'hypothèse nulle est généralement que la moyenne ou la moyenne d'un échantillon est égale à une certaine valeur ou que la moyenne de deux échantillons est égale.
La bibliothèque Pingouin est utile pour effectuer des tests statistiques, y compris le test t.
Je vais simuler un test en utilisant des nombres générés au hasard à partir de la distribution normale. Tout d'abord, je vais importer Numpy et invoquer le générateur de nombres aléatoires.
import numpy as np
rng = np.random.default_rng()
Vous pouvez voir ceci et d'autres exemples de code dans un ordinateur portable Jupyter que j'ai publié sur ma page GitHub. Maintenant, générons un petit échantillon de valeurs à partir de la distribution normale de 15 éléments.
a = rng.standard_normal(15)
Le test t suppose que les valeurs proviennent de la distribution normale. Nous savons qu'ils sont pour cet échantillon car ils ont été générés à partir de la distribution normale, mais Pingouin a un test pour déterminer cela en utilisant le test de Shapiro-Wilk pour de petits échantillons.
import pingouin as pg
pg.normality(a)
Tessons-le contre l'hypothèse nulle en utilisant la bibliothèque de Pingouin que la moyenne de cet échantillon est de 0,45:
pg.ttest(a,.45)
La valeur p est de 0,99, ce qui signifie que nous ne pouvons pas rejeter l'hypothèse nulle au niveau alpha de .05 ou .01.
Régression linéaire
Vous avez peut-être vu une régression linéaire, où vous installez une ligne sur un ensemble de points de données, auparavant, mais vous ne savez peut-être pas qu'un test statistique était impliqué. Le modèle de régression linéaire de Pinguin se rapporte à la statistique et à une valeur p. Cela teste l'hypothèse nulle selon laquelle la pente, ou la pente de la ligne de régression est de 0, ou qu'il s'agit d'une ligne horizontale. La valeur p est si petite qu'elle est représentée ici en notation scientifique.
Nous pouvons visualiser la régression avec une autre bibliothèque, Seaborn. SeaBorn comprend beaucoup d'échantillons de données avec lesquelles tester. Nous utiliserons un ensemble de données de conseils des restaurants de New York. Nous le chargerons:
import seaborn as sns
tips = sns.load_dataset('tips')
Nous examinerons l'ensemble de données pour voir quels champs sont disponibles. Il s'agit d'un objet Pandas DataFrame, qui est similaire à une base de données SQL. Nous utiliserons la méthode Head:
tips.head()
Comparons la facture totale au montant de la pointe. Nous allons tracer une ligne de régression sur un diagramme de dispersion de la pointe par rapport à la facture avec la facture sur l'axe des x et la pointe sur l'axe y:
sns.regplot(x='total_bill',y='tip')
Vous remarquerez peut-être que cela semble être un bon choix.
Nous pouvons également utiliser la méthode Linear_Regression de Pingouin pour une analyse plus formelle, ainsi que pour rendre les valeurs plus faciles à voir:
pg.linear_regression(tips('tip'),tips('total_bill')).round(2)
Vous pouvez voir les valeurs des coefficients pour la ligne de régression, mais remarquez la valeur t et la valeur p. Cela montre que nous pouvons rejeter l'hypothèse nulle que la pente est 0. Plus la pente est loin de 0, plus la valeur T est grande. Dans cet exemple, la valeur t est de 14,26. La valeur p est de 0,0, indiquant que les résultats seraient significatifs à n'importe quel niveau alpha.
Anova
Alors que le test t compare un échantillon ou des échantillons, et la régression examine les associations entre une variable et une autre, ANOVA, ou analyse de variance, examine une valeur dans une catégorie. Nous utiliserons à nouveau Pingouin pour regarder la longueur des nageoires des pingouins à travers les espèces. Pour l'hypothèse nulle, nous supposerons qu'il n'y a pas de différence entre les espèces
penguins = pg.read_dataset('penguins')
pg.anova(data=penguins,dv='flipper_length_mm',between='species').round(2)
Parce que la valeur p est de 0,0, nous pouvons rejeter l'hypothèse nulle et conclure que l'espèce est un prédicteur significatif de la longueur des nageurs.
Tests non paramétriques
Un problème commun des tests statistiques est qu'ils supposent que les données suivent une distribution. Par exemple, le test t suppose que les données sont normalement distribuées. De nombreuses données réelles, en particulier celles générées par l'activité humaine, sont biaisées. Les tests non paramétriques tentent de contourner cela en ne supposant aucune distribution particulière des données.
Le test de Mann-Whitney U est un homologue non paramétrique de l'étudiant T. Il est également inclus avec Pingouin. Générons d'abord deux listes de nombres aléatoires:
a = rng.random(15)
b = rng.random(15)
Voyons si les moyennes sont égales en utilisant le test de Mann-Whitney U:
pg.mwu(a,b)
Il existe également une version non paramétrique d'ANOVA, le test Kruskal-Willis. Nous pouvons à nouveau l'utiliser avec nos données de pingouin:
pg.kruskal(data=penguins,dv='flipper_length_mm',between='species').round(2)
Nous avons des résultats similaires à notre test ANOVA d'origine que l'espèce est un prédicteur significatif de la longueur des nageoires.
Les tests statistiques dans Python offrent un moyen de s'assurer que vos données sont significatives. Il faut une seconde pour valider vos données.
