Comment utiliser le module Python Statistics
Python a de merveilleuses bibliothèques pour l'analyse statistique, mais elles pourraient être exagérées pour des tâches simples. La bibliothèque de statistiques intégrée pourrait être ce que vous voulez à la place. Voici quelques choses que vous pouvez faire avec. Vous n'avez plus à vous souvenir de formules compliquées ou à regarder à travers des tables.
Sommaire
Quel est le module Python Statistics?
Le module Python Statistics est un module intégré pour effectuer des calculs statistiques simples. Puisqu'il fait partie de la bibliothèque Python standard, elle est disponible dans chaque installation Python. Pour y accéder dans des scripts ou des séances interactives, tout ce que vous avez à faire est de l'importer:
import statistics
Si vous avez besoin d'une seule ou quelques fonctions d'un module Python dans une session interactive, comme dans Ipython ou un cahier Jupyter, vous pouvez les importer directement dans l'espace de noms actuel, vous n'avez donc pas à taper « statistiques » tout le temps. C'est ce que les exemples de cet article supposeront.
Le module statistique brille en un mode python interactif comme l'interprète, une session améliorée en ipython ou un cahier de jupyter
Statistiques descriptives
La forme la plus élémentaire de statistiques est les statistiques descriptives. Comme son nom l'indique, ces statistiques sont destinées à décrire les données, telles que ses tendances centrales ou ses mesures de dispersion.
Le calcul le plus simple est la moyenne arithmétique, qui n'est que la somme des points de données divisée par le nombre de points de données. Dans les manuels de statistiques, l'exemple de moyenne est représenté par un X avec une barre dessinée dessus, connue sous le nom de « x barre ». La moyenne de la population est représentée par la lettre grecque, MU, mais c'est le même calcul. La plupart des gens le sauront comme la «moyenne».
Pour calculer la moyenne avec le module statistique, utilisez simplement la fonction moyenne.
Importer uniquement les fonctions dans l'espace de noms Python principal dans les sessions interactives. Cela peut provoquer des bogues dans les scripts si la fonction importée remplace une fonction intégrée.
Créons une petite gamme de nombres et trouvons la moyenne:
a = (4,4, 3, 6)
mean(a)
Le résultat est 4.6.
La fonction FMEAN calcule également des moyens, mais convertit les données en nombres à virgule flottante. Il vous permettra également de calculer une moyenne pondérée.
weights = (1,2,3,4)
fmean(a,weights)
La moyenne pondérée de cet exemple est 4.5
Un autre type de moyenne est la moyenne géométrique, qui est utile pour comparer les taux de croissance sur une période de temps. Cela implique de prendre la nième racine des points de données multipliés ensemble. À la main, cela signifie généralement des logarithmes fastidieux, mais c'est facile à Python avec la fonction géométrique_mean.
geometric_mean(a)
La moyenne harmonique est la réciproque de la moyenne arithmétique. C'est le nombre de points de données divisés par la somme de la fraction de 1 / le premier point de données, 1 / le deuxième point de données, etc. La moyenne harmonique est utile pour prendre des moyennes de choses comme des vitesses qui ont certains taux. Heureusement, Python peut également le faire pour vous.
harmonic_mean(a)
Le résultat est 4. Notez que la moyenne harmonique était inférieure à la moyenne géométrique, et la moyenne géométrique était inférieure à la moyenne arithmétique sur le même ensemble de données.
La médiane est une autre mesure populaire de la tendance centrale. C'est le point de données qui divise un ensemble de données en deux. Vous pouvez le trouver avec la fonction médiane:
median(a)
Le résultat est 4 dans notre échantillon.
La fonction de mode rapporte le nombre le plus courant dans l'échantillon.
mode(a)
Encore une fois, le mode est 4, car c'est le nombre récurrent le plus courant dans le tableau que nous avons défini précédemment.
Une autre raison courante de prendre des statistiques descriptives est de mesurer la propagation des données, également connue sous le nom de dispersion. La mesure la plus connue de l'écart est l'écart type, qui mesure jusqu'où les données sont réparties de la moyenne arithmétique. C'est la racine carrée de la variance, ou la somme du carré de la moyenne soustraite de chaque point de données, divisée par le nombre de points de données. Cela représente l'écart type de la population, mais l'écart type soustrait le nombre de points de données par un pour donner un entraînement plus représentatif dans des échantillons plus petits.
La fonction STDEV calcule l'écart-type de l'échantillon, qui sera probablement ce que vous voulez la plupart du temps:
stdev(a)
Le résultat est d'environ 1,26.
Comparons-le à l'écart-type de la population avec la fonction PSTDEV:
pstdev(a)
Vous pouvez afficher l'échantillon de variance avec la fonction de variance
variance(a)
Il possède également une variante basée sur la population, PVARACE, qui fonctionne de la même manière.
Une autre façon de visualiser la distribution de vos données est de les diviser en centiles, ce que le pourcentage de points de données qui en sont moins. La médiane est en fait le 50e centile, car la moitié des points de données sont ci-dessous.
La fonction quantiles divisera les données en centiles par résultat:
quantiles(a)
Il montrera le quartile inférieur, ou 25e centile, la médiane et le quartile supérieur. Les fonctions MIN et MAX intégrées afficheront les valeurs minimales et maximales.
min(a)
max(a)
Régression et corrélation
Une méthode statistique populaire consiste à voir comment une variable est corrélée avec une autre. Cela équivaut à tracer des points de données sur les axes X et y et à dessiner une ligne sur eux pour voir à quel point il s'adapte. Ceci est connu sous le nom de «régression linéaire». Le module statistique a une méthode de régression linéaire simple. C'est « simple » car il ne corréle que deux variables. Il utilise une méthode appelée «moindres carrés ordinaires», ainsi qu'on appelle car il essaie de minimiser le carré de la distance entre les points de données et la ligne qu'il crée.
Tracons une régression linéaire de deux tableaux étiquetés x et y
x = (1,2,3,4,5)
y = (5,7,9,11,13)
Pour ajuster le modèle, utilisez la méthode linéaire_régression. Cela calculera la pente et l'ordonnée y pour l'équation familière d'une ligne: y = mx + b.
linear_regression(x,y)
Cela vous donnera la pente et l'interception. Vous pouvez également les enregistrer en variables:
slope, intercept = linear_regression(x,y)
La pente dans ce cas est de 2, et l'ordonnée est 3, représentant l'équation d'ordonnée de pente y = 2 * x + 3. Le signe positif sur la pente indique qu'il s'agit d'une ligne de pente ascendante, ce qui signifie que la valeur y augmentera à mesure que nous nous déplaçons vers la droite.
Cette fonction ne tracera aucune ligne ou le diagramme de dispersion classique. Cela ne vous donnera également que la régression de deux variables. Si vous souhaitez générer un tracé ou faire une prédiction en utilisant plus d'une variable dépendante, vous devrez utiliser d'autres bibliothèques telles que SeaBorn, StatSmodels ou Pingouin.
Vous pouvez voir dans quelle mesure deux variables sont en corrélation à l'aide de la fonction de corrélation. Cela calcule le coefficient de corrélation, ou r. Ce coefficient sera comprise entre 0 et 1 ou -1, indiqué une corrélation positive ou négative. Une corrélation négative signifiera une ligne de balle à la baisse.
Deux vérifient la corrélation entre deux variables:
correlation(x,y)
Dans ce cas, c'est 1, montrant une corrélation positive parfaite, mais les données réelles sont rarement corrélées parfaitement. Cela signifie que la ligne de régression résidera parfaitement sur les points de données lorsque vous les tracez.
La distribution normale
La distribution normale, avec sa célèbre courbe en forme de cloche, est une distribution de probabilité continue. Vous pouvez utiliser la fonction pour estimer la probabilité d'un paramètre normalement distribué.
Nous pouvons le démontrer avec les données du CDC. Selon les données, la moyenne des hommes de plus de 20 ans est de 175,1 centimètres. Nous pouvons obtenir l'écart-type de la population en multipliant la racine carrée du nombre d'échantillons, 2 690, par l'erreur standard, .3
import math
math.sqrt(2690) * .3
L'écart type est d'environ 15,56
Nous pouvons l'utiliser pour construire un objet de distribution normal:
men_height = NormalDist(175.1,28.41)
Pour trouver le pourcentage d'hommes entre 160 et 180 centimètres de hauteur, nous utilisons la fonction de distribution cumulative, ou CDF, ce qui donne le pourcentage de valeurs d'un simple en dessous d'une certaine valeur. Nous pouvons soustraire la valeur inférieure de la plus élevée car la courbe de distribution normale est symétrique. L'objet que nous venons de créer a une méthode CDF que nous pouvons utiliser pour nous donner cette probabilité.
men_height.cdf(180) - men_height.cdf(160)
La réponse sera qu'environ 45% des hommes mesurent entre 160 et 180 centimètres de haut.
Et Numpy, Scipy, etc.?
Numpy, Scipy et d'autres bibliothèques sont populaires pour les statistiques et l'analyse des données. Où cela laisse-t-il le module statistique? Les anciennes bibliothèques sont conçues pour les grands ensembles de données et l'utilisation professionnelle. Les développeurs des modules statistiques l'ont présenté aux niveaux de calculatrices scientifiques et graphiques. Cette bibliothèque est bien pour l'apprentissage des concepts statistiques et des calculs occasionnels rapides.
Si vous voulez travailler avec de vrais ensembles de données, les autres bibliothèques seront plus puissantes et flexibles, bien que la courbe d'apprentissage puisse être raide. Si vous voulez un avant-goût de la puissance de l'informatique statistique avec Python, le module statistique est un bon point de départ.
