Application des statistiques descriptives et inférentielles en Python

Application des statistiques en Python

 

La statistique est un domaine qui englobe des activités allant de la collecte de données et de l’analyse des données à l’interprétation des données. C’est un domaine d’étude qui aide la partie concernée à prendre des décisions lorsqu’elle est confrontée à l’incertitude.

Les deux principales branches du domaine statistique sont la statistique descriptive et la statistique inférentielle. La statistique descriptive est une branche liée à la synthèse des données en utilisant différentes méthodes, telles que les statistiques récapitulatives, la visualisation et les tableaux. Alors que la statistique inférentielle concerne davantage la généralisation de la population sur la base de l’échantillon de données.

Cet article présentera quelques concepts importants en statistique descriptive et inférentielle avec un exemple en Python. Allons-y.

 

Statistique descriptive

 

Comme je l’ai mentionné précédemment, la statistique descriptive se concentre sur la synthèse des données. C’est la science du traitement des données brutes pour en faire des informations significatives. La statistique descriptive peut être réalisée à l’aide de graphiques, de tableaux ou de statistiques récapitulatives. Cependant, les statistiques récapitulatives sont la méthode la plus courante pour réaliser des statistiques descriptives, nous nous concentrerons donc là-dessus.

Pour notre exemple, nous utiliserons l’exemple d’ensemble de données suivant.

import pandas as pd
import numpy as np
import seaborn as sns

tips = sns.load_dataset('tips')
tips.head()

 

 

Avec ces données, nous explorerons les statistiques descriptives. Dans les statistiques récapitulatives, les deux mesures les plus utilisées sont les Mesures de tendance centrale et les Mesures de dispersion.

 

Mesures de tendance centrale

 

La tendance centrale est le centre de la distribution des données ou de l’ensemble de données. Les mesures de tendance centrale sont l’activité visant à acquérir ou à décrire la distribution centrale de nos données. Les mesures de tendance centrale donnent une valeur unique qui définit la position centrale des données.

Dans les mesures de tendance centrale, il existe trois mesures populaires :

 

1. Moyenne

 

La moyenne est une méthode permettant de produire une valeur unique représentant la valeur la plus courante de nos données. Cependant, la moyenne n’est pas nécessairement la valeur observée dans nos données. 

Nous pouvons calculer la moyenne en prenant la somme des valeurs existantes dans nos données et en la divisant par le nombre de valeurs. Nous pouvons représenter la moyenne avec l’équation suivante :

   

En Python, nous pouvons calculer la moyenne des données avec le code suivant.

round(tips['tip'].mean(), 3)

 

2.998

 

En utilisant l’attribut de série pandas, nous pouvons obtenir la moyenne des données. Nous arrondissons également les données pour faciliter leur lecture.

La moyenne présente un inconvénient en tant que mesure de tendance centrale car elle est fortement influencée par les valeurs aberrantes, ce qui peut fausser la statistique récapitulative et ne pas représenter au mieux la situation réelle. Dans les cas de données asymétriques, nous pouvons utiliser la médiane.

 

2. Médiane

 

La médiane est la valeur unique positionnée au milieu des données si nous les trions, représentant le point médian (50%) des données. En tant que mesure de tendance centrale, la médiane est préférable lorsque les données sont asymétriques car elle peut représenter le centre des données, car les valeurs aberrantes ou asymétriques n’influencent pas fortement la médiane.

La médiane est calculée en ordonnant toutes les valeurs de données par ordre croissant et en trouvant la valeur médiane. La médiane est la valeur médiane pour un nombre impair de valeurs de données, mais la médiane est la moyenne des deux valeurs médianes pour un nombre pair de valeurs de données.

Nous pouvons calculer la médiane avec Python en utilisant le code suivant.

tips['tip'].median()

 

2.9

 

3. Mode

 

Le mode est la valeur la plus fréquente ou la plus courante dans les données. Les données peuvent avoir un seul mode (unimodal), plusieurs modes (multimodal) ou aucun mode du tout (s’il n’y a pas de valeurs répétées).

Le mode est généralement utilisé pour les données catégorielles mais peut également être utilisé pour les données numériques. Cependant, pour les données catégorielles, il utilise uniquement le mode. En effet, les données catégorielles n’ont pas de valeurs numériques permettant de calculer la moyenne et la médiane.

Nous pouvons calculer le mode des données avec le code suivant.

tips['day'].mode()

 

  Le résultat est un objet de la série avec des valeurs de type catégoriel. La valeur ‘Sat’ est la seule affichée car c’est le mode des données.

 

Mesures de dispersion

 

Les mesures de dispersion (ou variabilité) sont des mesures permettant de décrire la répartition des valeurs des données. Elles donnent des informations sur la variation des valeurs dans l’ensemble des données. Elles sont souvent utilisées en complément des mesures de tendance centrale pour fournir des informations globales sur les données.

Les mesures de dispersion permettent également de comprendre dans quelle mesure les mesures de tendance centrale sont représentatives. Par exemple, une dispersion plus élevée peut indiquer une déviation significative entre les données observées et la moyenne des données, qui ne représenterait peut-être pas au mieux les données.

Voici différentes mesures de dispersion à utiliser.

  1. Étendue

L’étendue est la différence entre la plus grande valeur (Max) et la plus petite valeur (Min) des données. C’est une mesure directe car elle utilise uniquement ces deux aspects des données.

Son utilisation peut être limitée car elle ne fournit pas beaucoup d’informations sur la distribution des données, mais elle peut aider à évaluer nos hypothèses si nous avons un seuil spécifique à utiliser pour nos données. Essayons de calculer l’étendue des données en utilisant Python.

tips['tip'].max() - tips['tip'].min()

 

9.0

 

2. Variance

 

La variance est une mesure de dispersion qui indique la répartition des données par rapport à la moyenne des données. Elle est calculée en élevant au carré les différences entre chaque valeur et la moyenne des données, puis en divisant cette somme par le nombre de valeurs des données. Étant donné que nous travaillons généralement avec des échantillons de données plutôt qu’avec des populations, nous soustrayons un au nombre de valeurs des données. L’équation pour la variance d’un échantillon est présentée dans l’image ci-dessous.

   

La variance peut être interprétée comme une valeur indiquant dans quelle mesure les données sont dispersées par rapport à la moyenne et les unes par rapport aux autres. Une variance plus élevée signifie une plus grande dispersion des données. Cependant, le calcul de la variance est sensible aux valeurs aberrantes car nous avons élevé au carré les écarts des scores par rapport à la moyenne, ce qui signifie que nous avons accordé plus de poids aux valeurs aberrantes.

Essayons de calculer la variance des données avec Python.

round(tips['tip'].var(),3)

 

1.914

 

La variance ci-dessus suggère une grande variance dans nos données, mais nous pouvons utiliser l’écart-type pour obtenir une valeur réelle de la mesure de dispersion de nos données.

 

3. Écart-type

 

L’écart-type est la mesure la plus courante pour évaluer la dispersion des données, et il est calculé en prenant la racine carrée de la variance.

   

La différence entre la variance et l’écart-type réside dans les informations fournies par leur valeur. La valeur de la variance indique uniquement la dispersion de nos valeurs par rapport à la moyenne, et l’unité de la variance diffère de celle de la valeur d’origine car nous avons élevé au carré les valeurs d’origine. Cependant, la valeur de l’écart-type est exprimée dans la même unité que la valeur d’origine des données, ce qui signifie qu’elle peut être directement utilisée pour mesurer la dispersion de nos données.

Essayons de calculer l’écart-type avec le code suivant.

round(tips['tip'].std(),3)

 

1.384

 

Une des applications les plus courantes de l’écart-type est l’estimation de l’intervalle des données. Nous pouvons estimer l’intervalle des données en utilisant la règle empirique ou la règle des 68-95-99,7. La règle empirique indique que 68 % des données sont estimées se situer dans l’intervalle de la moyenne des données ± un écart-type, 95 % des données dans l’intervalle de la moyenne ± deux écart-types, et 99,7 % des données dans l’intervalle de la moyenne ± trois écart-types. En dehors de cet intervalle, il peut être considéré comme une valeur aberrante.

 

4. Écart interquartile

 

L’écart interquartile (IQR) est une mesure de dispersion calculée à l’aide des différences entre les données du premier et du troisième quartile. Le quartile lui-même est une valeur qui divise les données en quatre parties différentes. Pour mieux comprendre, jetons un coup d’œil à l’image suivante.

   

Le quartile est la valeur qui divise les données plutôt que le résultat de la division. Nous pouvons utiliser le code suivant pour trouver les valeurs du quartile et l’IQR.

q1, q3 = np.percentile(tips['tip'], [25, 75])
iqr = q3 - q1

print(f'Q1 : {q1}\nQ3 : {q3}\nIQR : {iqr}')

 

Q1 : 2.0

Q3 : 3.5625

IQR : 1.5625

 

En utilisant la fonction de percentile numpy, nous pouvons obtenir le quartile. En soustrayant le troisième quartile et le premier quartile, nous obtenons l’IQR.

L’IQR peut être utilisé pour identifier les valeurs aberrantes des données en prenant la valeur de l’IQR et en calculant la limite supérieure/inférieure des données. La formule de la limite supérieure est Q3 + 1.5 * IQR, tandis que la limite inférieure est Q1 – 1.5 * IQR. Toutes les valeurs dépassant cette limite seraient considérées comme des valeurs aberrantes.

Pour mieux comprendre, nous pouvons utiliser le boxplot pour comprendre la détection des valeurs aberrantes de l’IQR.

sns.boxplot(tips['tip'])

 

 

L’image ci-dessus montre le boxplot des données et la position des données. Le point noir après la limite supérieure est ce que nous considérons comme une valeur aberrante.

 

Statistiques inférentielles

 

Les statistiques inférentielles sont une branche qui généralise les informations sur la population en fonction de l’échantillon de données dont elles proviennent. Les statistiques inférentielles sont utilisées car il est souvent impossible d’obtenir l’ensemble des données de la population, et nous devons faire des inférences à partir de l’échantillon de données. Par exemple, nous voulons comprendre l’opinion des Indonésiens sur l’IA. Cependant, l’étude prendrait trop de temps si nous interrogeons tout le monde dans la population indonésienne. Nous utilisons donc les données d’échantillon représentant la population et tirons des conclusions sur l’opinion de la population indonésienne sur l’IA. 

Explorons les différentes statistiques inférentielles que nous pourrions utiliser.

 

1. Erreur standard

 

L’erreur standard est une mesure statistique inférentielle permettant d’estimer le vrai paramètre de la population à partir de la statistique d’échantillon. L’information d’erreur standard est la façon dont la statistique d’échantillon varierait si nous répétions l’expérience avec les échantillons de données de la même population. 

L’erreur standard de la moyenne (SEM) est le type d’erreur standard le plus couramment utilisé car il indique dans quelle mesure la moyenne représenterait la population compte tenu des données d’échantillon. Pour calculer le SEM, nous utiliserions l’équation suivante.

  Image par l’auteur  

L’erreur standard de la moyenne utiliserait l’écart type pour le calcul. L’erreur standard des données serait plus petite plus le nombre d’échantillons est élevé, où une plus petite SE signifie que notre échantillon serait excellent pour représenter la population de données.

Pour obtenir l’erreur standard de la moyenne, nous pouvons utiliser le code suivant.

from scipy.stats import sem

round(sem(tips['tip']),3)

 

0.089

 

Nous rapportons souvent le SEM avec la moyenne des données où la vraie moyenne de la population devrait tomber dans la plage de la moyenne ± SEM. 

data_mean = round(tips['tip'].mean(),3)
data_sem = round(sem(tips['tip']),3)
print(f'La vraie moyenne de la population est estimée pour se situer dans la plage de {data_mean+data_sem} à {data_mean-data_sem}')

La vraie moyenne de la population est estimée à se situer entre 3,087 et 2,9090000000000003

2. Intervalle de confiance

L’intervalle de confiance est également utilisé pour estimer le vrai paramètre de la population, mais il introduit le niveau de confiance. Le niveau de confiance estime l’intervalle de paramètres de la population réelle avec un certain pourcentage de confiance.

En statistiques, la confiance peut être décrite comme une probabilité. Par exemple, un intervalle de confiance avec un niveau de confiance de 90% signifie que l’estimation réelle de la moyenne de la population se situerait entre les valeurs supérieure et inférieure de l’intervalle de confiance 90 fois sur 100. L’intervalle de confiance est calculé avec la formule suivante.

Image par auteur

La formule ci-dessus a une notation familière à l’exception de Z. La notation Z est un score Z obtenu en définissant le niveau de confiance (par exemple, 95%) et en utilisant le tableau de valeurs critiques Z pour déterminer le score Z (1,96 pour un niveau de confiance de 95%). De plus, si notre échantillon est petit ou inférieur à 30, nous devons utiliser le tableau de distribution t.

Nous pouvons utiliser le code suivant pour obtenir l’intervalle de confiance avec Python.

import scipy.stats as st

st.norm.interval(confidence=0.95, loc=data_mean, scale=data_sem)

(2,8246682963727068, 3,171889080676473)

Le résultat ci-dessus peut être interprété comme signifiant que la vraie moyenne de notre population de données se situe entre 2,82 et 3,17 avec un niveau de confiance de 95%.

3. Test d’hypothèse

Le test d’hypothèse est une méthode en statistiques inférentielles pour conclure à partir d’échantillons de données sur la population. La population estimée peut être le paramètre de la population ou la probabilité.

Dans le test d’hypothèse, nous devons avoir une hypothèse appelée hypothèse nulle (H0) et l’hypothèse alternative (Ha). L’hypothèse nulle et l’hypothèse alternative sont toujours opposées l’une à l’autre. La procédure de test d’hypothèse utiliserait ensuite les données de l’échantillon pour déterminer si l’hypothèse nulle peut être rejetée ou si nous échouons à la rejeter (ce qui signifie que nous acceptons l’hypothèse alternative).

Lorsque nous effectuons une méthode de test d’hypothèse pour voir si l’hypothèse nulle doit être rejetée, nous devons déterminer le niveau de signification. Le niveau de signification est la probabilité maximale d’erreur de type 1 (rejet de H0 lorsque H0 est vrai) qui est autorisée à se produire dans le test. Habituellement, le niveau de signification est de 0,05 ou 0,01.

Pour tirer une conclusion à partir de l’échantillon, le test d’hypothèse utilise la valeur p lorsqu’on suppose que l’hypothèse nulle est vraie pour mesurer la probabilité que les résultats de l’échantillon soient susceptibles. Lorsque la valeur p est inférieure au niveau de signification, nous rejetons l’hypothèse nulle ; sinon, nous ne pouvons pas la rejeter.

Le test d’hypothèse est une méthode qui peut être effectuée sur n’importe quel paramètre de population et peut également être effectuée sur plusieurs paramètres. Par exemple, le code ci-dessous effectuerait un test t sur deux populations différentes pour voir si ces données sont significativement différentes des autres.

st.ttest_ind(tips[tips['sex'] == 'Male']['tip'], tips[tips['sex'] == 'Female']['tip'])

Ttest_indResult(statistic=1,387859705421269, pvalue=0,16645623503456755)

Dans le test t, nous comparons les moyennes entre deux groupes (test par paires). L’hypothèse nulle pour le test t est qu’il n’y a pas de différences entre les moyennes des deux groupes, tandis que l’hypothèse alternative est qu’il y a des différences entre les moyennes des deux groupes.

Le résultat du test t montre que le pourboire entre les hommes et les femmes n’est pas significativement différent car la valeur p est supérieure au niveau de signification de 0,05. Cela signifie que nous avons échoué à rejeter l’hypothèse nulle et conclu qu’il n’y a pas de différences entre les moyennes des deux groupes.

Évidemment, le test ci-dessus ne fait que simplifier l’exemple de test d’hypothèse. Il y a de nombreuses hypothèses que nous devons connaître lorsque nous effectuons un test d’hypothèse, et il existe de nombreux tests que nous pouvons effectuer pour répondre à nos besoins.

Conclusion

 

Il existe deux grandes branches dans le domaine des statistiques que nous devons connaître : les statistiques descriptives et les statistiques inférentielles. Les statistiques descriptives se concentrent sur la synthèse des données, tandis que les statistiques inférentielles abordent la généralisation des données afin de tirer des conclusions sur la population. Dans cet article, nous avons discuté des statistiques descriptives et inférentielles en donnant des exemples de code Python.     Cornellius Yudha Wijaya est un assistant manager en science des données et rédacteur de données. Tout en travaillant à temps plein chez Allianz Indonesia, il aime partager des astuces Python et des conseils sur les données via les réseaux sociaux et les médias écrits.  

We will continue to update IPGirl; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more