Introduction
Ce tutoriel montre comment tracer la fonction de répartition empirique cumulative (ECDF) d'un échantillon et la fonction de répartition théorique en utilisant Matplotlib. Les ECDF sont également connues sous le nom de courbes de "non-dépassement" en ingénierie, où la valeur y pour une valeur donnée de x donne la probabilité qu'une observation de l'échantillon soit inférieure à cette valeur de x. À l'inverse, la fonction de répartition empirique complémentaire cumulative (l'ECCDF, ou courbe de "dépassement") montre la probabilité y qu'une observation de l'échantillon soit supérieure à une valeur x.
Conseils sur la machine virtuelle
Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Carnet de notes pour accéder à Jupyter Notebook pour la pratique.
Parfois, vous devrez peut-être attendre quelques secondes pour que Jupyter Notebook ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations de Jupyter Notebook.
Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez votre feedback après la session, et nous résoudrons rapidement le problème pour vous.
Importez les bibliothèques nécessaires
Dans cette étape, nous allons importer les bibliothèques nécessaires. Nous utiliserons les bibliothèques NumPy et Matplotlib pour ce tutoriel.
import matplotlib.pyplot as plt
import numpy as np
Fixez la graine aléatoire et générez les données
Dans cette étape, nous allons fixer la graine aléatoire et générer les données. Nous allons générer 100 points de données à partir d'une distribution normale avec une moyenne de 200 et un écart-type de 25.
np.random.seed(19680801)
mu = 200
sigma = 25
data = np.random.normal(mu, sigma, size=100)
Créez la figure et les sous-graphiques
Dans cette étape, nous allons créer une figure avec deux sous-graphiques pour les distributions cumulatives. Nous allons également définir la taille de la figure sur 9x4.
fig = plt.figure(figsize=(9, 4), layout="constrained")
axs = fig.subplots(1, 2, sharex=True, sharey=True)
Tracez les distributions cumulatives
Dans cette étape, nous allons tracer les distributions cumulatives. Nous utiliserons la méthode .ecdf pour tracer la fonction de répartition empirique cumulative (ECDF) et la fonction de répartition empirique cumulative complémentaire (ECCDF). Nous tracerons également la fonction de répartition théorique en utilisant une distribution normale avec une moyenne de 200 et un écart-type de 25.
## Cumulative distributions
axs[0].ecdf(data, label="CDF")
n, bins, patches = axs[0].hist(data, 25, density=True, histtype="step",
cumulative=True, label="Cumulative histogram")
x = np.linspace(data.min(), data.max())
y = ((1 / (np.sqrt(2 * np.pi) * sigma)) *
np.exp(-0.5 * (1 / sigma * (x - mu))**2))
y = y.cumsum()
y /= y[-1]
axs[0].plot(x, y, "k--", linewidth=1.5, label="Theory")
## Complementary cumulative distributions
axs[1].ecdf(data, complementary=True, label="CCDF")
axs[1].hist(data, bins=bins, density=True, histtype="step", cumulative=-1,
label="Reversed cumulative histogram")
axs[1].plot(x, 1 - y, "k--", linewidth=1.5, label="Theory")
Etiquetez la figure
Dans cette étape, nous allons étiqueter la figure. Nous allons ajouter un titre, des lignes de grille et des étiquettes pour les axes x et y.
fig.suptitle("Cumulative Distributions")
for ax in axs:
ax.grid(True)
ax.legend()
ax.set_xlabel("Annual rainfall (mm)")
ax.set_ylabel("Probability of occurrence")
ax.label_outer()
plt.show()
Sommaire
Dans ce tutoriel, nous avons appris à tracer la fonction de répartition empirique cumulative (ECDF) et la fonction de répartition théorique (CDF) à l'aide de Matplotlib. Nous avons également appris à tracer la fonction de répartition empirique cumulative complémentaire (ECCDF) et l'histogramme cumulatif inversé. En suivant les étapes décrites dans ce tutoriel, vous devriez désormais être en mesure de créer vos propres graphiques de distributions cumulatives à l'aide de Matplotlib.