Skip to content

Démystifier les statistiques et la probabilité en science des données

Les statistiques et la probabilité sont le socle de la science des données. Comprendre ces concepts nous donne les outils nécessaires pour analyser, interpréter et tirer des conclusions des vastes ensembles de données avec lesquels nous travaillons quotidiennement. Cet article explorera les concepts clés, les exemples pratiques et des extraits de code Python pour illustrer chaque point.

Distribution de probabilité

La distribution de probabilité décrit comment les probabilités sont réparties sur les valeurs des variables aléatoires. Dans le cas des variables discrètes, nous utilisons souvent la distribution uniforme, où chaque résultat a une probabilité égale.

Pour illustrer cela, prenons un dé équitable à six faces. La distribution de probabilité des résultats serait uniforme, chaque nombre de 1 à 6 ayant une probabilité égale de 1/6.

import numpy as np
 
résultats = [1, 2, 3, 4, 5, 6]
probabilités = np.full(6, 1/6)
 
print(f'Distribution de probabilité d\'un dé équitable :')
for résultat, probabilité in zip(résultats, probabilités):
    print(f'P(X={résultat}) = {probabilité}')

Lorsque l'on travaille avec des variables continues, telles que l'heure d'arrivée d'un bus, nous utilisons des fonctions de densité de probabilité (PDF). Les PDF indiquent la probabilité qu'une variable se situe dans une certaine plage de valeurs.

Un exemple de distribution de probabilité continue bien connue est la distribution normale, également appelée distribution gaussienne. Elle est caractérisée par sa courbe en forme de cloche.

import matplotlib.pyplot as plt
import numpy as np
 
# Générer des échantillons aléatoires à partir d'une distribution normale
mu = 0  # moyenne
sigma = 1  # écart-type
échantillons = np.random.normal(mu, sigma, 1000)
 
# Tracer l'histogramme des échantillons
plt.hist(échantillons, bins=30, density=True, alpha=0.7)
plt.xlabel('Valeur')
plt.ylabel('Densité de probabilité')
plt.title('Distribution normale')
plt.show()

Moyenne, variance et écart-type

La moyenne est la valeur moyenne d'un ensemble de données. Elle est calculée en additionnant toutes les valeurs et en les divisant par le nombre de valeurs.

La variance mesure à quelle distance chaque nombre de l'ensemble se situe par rapport à la moyenne. Elle quantifie la dispersion des données. L'écart-type est la racine carrée de la variance et fournit une mesure de la variation dans l'ensemble de données.

import numpy as np
 
données = np.random.normal(0, 1, 1000)  # Générer une distribution normale avec une moyenne de 0 et un écart-type de 1
 
moyenne = np.mean(données)
variance = np.var(données)
écart_type = np.std(données)
 
print(f'Moyenne : {moyenne:.2f}')
print(f'Variance : {variance:.2f}')
print(f'Écart-type : {écart_type:.2f}')

Mode, médiane et quartiles

Le mode est la valeur qui apparaît le plus fréquemment dans un ensemble de données. Il indique le pic ou la valeur la plus courante de la distribution.

La médiane est la valeur médiane qui sépare la moitié supérieure de la moitié inférieure d'un échantillon de données. Elle est utile lorsque l'on traite des données asymétriques ou des valeurs aberrantes.

Les quartiles divisent un ensemble de données classées par rang en quatre parties égales. Le premier quartile (Q1) est la valeur en dessous de laquelle 25% des données se situent, le deuxième quartile (Q2) est la médiane, et le troisième quartile (Q3) est la valeur en dessous de laquelle 75% des données se situent.

import numpy as np
 
données = np.array([3, 7, 1, 5, 2, 9, 4, 6, 8, 2])
 
mode = np.argmax(np.bincount(données))
médiane = np.median(données)
q1 = np.percentile(données, 25)
q3 = np.percentile(données, 75)
 
print(f'Mode : {mode}')
print(f'Médiane : {médiane}')
print(f'Premier quartile (Q1) : {q1}')
print(f'Troisième quartile (Q3) : {q3}')

Données réelles et distribution normale

Les données réelles suivent souvent une distribution normale. Par exemple, les poids des joueurs de baseball peuvent suivre une distribution normale avec une certaine moyenne et un certain écart-type. En connaissant ces paramètres, nous pouvons générer des échantillons aléatoires qui imitent les poids potentiels des joueurs de baseball.

import numpy as np
 
moyenne = 180
écart_type = 10
taille_échantillon = 1000
 
poids = np.random.normal(moyenne, écart_type, taille_échantillon)
 
print(f'Échantillon des poids des joueurs de baseball potentiels :')
print(poids[:10])

Intervalles de confiance

Les intervalles de confiance fournissent une plage dans laquelle le vrai paramètre de la population se situe avec un certain degré de confiance. Ils sont essentiels pour estimer la moyenne et la variance d'une population à partir d'un échantillon.

Pour calculer un intervalle de confiance, nous devons connaître la moyenne de l'échantillon, l'écart-type de l'échantillon, la taille de l'échantillon et le niveau de confiance souhaité. Supposons que nous voulions calculer un intervalle de confiance à 95% pour la moyenne d'une variable distribuée normalement.

import numpy as np
from scipy.stats import norm
 
données = np.random.normal(0, 1, 100)  # Générer un échantillon à partir d'une distribution normale
 
niveau_de_confiance = 0.95
moyenne_échantillon = np.mean(données)
écart_type_échantillon = np.std(données)
taille_échantillon = len(données)
 
z_score = norm.ppf((1 + niveau_de_confiance) / 2)
marge_d_erreur = z_score * (écart_type_échantillon / np.sqrt(taille_échantillon))
 
intervalle_de_confiance = (moyenne_échantillon - marge_d_erreur, moyenne_échantillon + marge_d_erreur)
 
print(f'Intervalle de confiance à 95% : {intervalle_de_confiance}')

Test d'hypothèse

Les tests d'hypothèse nous permettent de tirer des conclusions sur la population en examinant les différences entre les données d'échantillon observées et les résultats que nous attendrions sous l'hypothèse nulle, qui propose souvent qu'il n'y a pas d'effet ou de différence.

Un test d'hypothèse courant est le test t, qui est utilisé pour comparer les moyennes de deux échantillons. Le package SciPy fournit la fonction ttest_ind pour effectuer des tests t.

from scipy.stats import ttest_ind
 
échantillon1 = np.random.normal(0, 1, 100)
échantillon2 = np.random.normal(1, 1, 100)
 
statistique_t, valeur_p = ttest_ind(échantillon1, échantillon2)
Veuillez fournir la traduction en français de ce fichier markdown sans traduire le code intégré: 
 
```python
print(f'T-Statistic: {t_statistic:.2f}')
print(f'P-Value: {p_value:.2f}')

Covariance et Corrélation

La covariance mesure la façon dont deux variables se déplacent l'une par rapport à l'autre. Elle nous donne la direction de la relation entre les variables. La corrélation, quant à elle, nous donne non seulement la direction mais aussi la force de la relation.

import numpy as np
 
data1 = np.array([1, 2, 3, 4, 5])
data2 = np.array([5, 4, 3, 2, 1])
 
covariance = np.cov(data1, data2)[0, 1]
correlation = np.corrcoef(data1, data2)[0, 1]
 
print(f'Covariance: {covariance:.2f}')
print(f'Corrélation: {correlation:.2f}')

Comprendre la probabilité et les statistiques est essentiel pour tout data scientist. Ces concepts fournissent les outils et les techniques pour analyser les données, prendre des décisions éclairées et tirer des insights significatifs. En appliquant ces principes et en utilisant les puissantes bibliothèques de Python, nous pouvons exploiter pleinement le potentiel de la science des données.

Conclusion

En conclusion, comprendre les concepts de statistiques et de probabilité est crucial pour toute personne travaillant dans le domaine de la science des données. En maîtrisant ces concepts, vous serez bien préparé pour tirer des insights significatifs des données, concevoir des modèles d'apprentissage automatique robustes et prendre des décisions éclairées.