Plot CDF Matplotlib Python
Ce tutoriel explique comment nous pouvons générer un tracé de CDF en utilisant Matplotlib en Python. CDF
est la fonction dont les valeurs y représentent la probabilité qu’une variable aléatoire prenne des valeurs inférieures ou égales à la valeur x correspondante.
Tracer une CDF en utilisant Matplotlib en Python
La CDF est définie pour des distributions de probabilité à la fois continues et discrètes. Dans la distribution de probabilités continue, la variable aléatoire peut prendre n’importe quelle valeur de la plage spécifiée, mais dans la distribution de probabilités discrète, nous ne pouvons avoir qu’un ensemble de valeurs spécifiées.
Tracer la CDF pour une distribution discrète en utilisant Matplotlib en Python
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(1, 7)
y = [0.2, 0.1, 0.1, 0.2, 0.1, 0.3]
cdf = np.cumsum(y)
plt.plot(x, y, marker="o", label="PMF")
plt.plot(x, cdf, marker="o", label="CDF")
plt.xlim(0, 7)
plt.ylim(0, 1.5)
plt.xlabel("X")
plt.ylabel("Probability Values")
plt.title("CDF for discrete distribution")
plt.legend()
plt.show()
Production :
Il trace le PMF
et le CDF
pour la distribution donnée. Pour calculer les valeurs y de CDF
, nous utilisons la méthode numpy.cumsum()
pour calculer la somme cumulative d’un tableau.
Si on nous donne des comptes de fréquence, nous devons normaliser les valeurs y initialement pour qu’elles représentent le PDF
.
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(1, 7)
frequency = np.array([3, 8, 4, 5, 3, 6])
pdf = frequency / np.sum(frequency)
cdf = np.cumsum(pdf)
plt.plot(x, pdf, marker="o", label="PMF")
plt.plot(x, cdf, marker="o", label="CDF")
plt.xlim(0, 7)
plt.ylim(0, 1.5)
plt.xlabel("X")
plt.ylabel("Probability Values")
plt.title("CDF for discrete distribution")
plt.legend()
plt.show()
Production :
Ici, on nous donne les valeurs de fréquence pour chaque valeur X. Nous convertissons les valeurs de fréquence en valeurs pdf
en divisant chaque élément du tableau pdf
par la somme des fréquences. Nous utilisons ensuite le pdf
pour calculer les valeurs CDF
pour tracer le CDF
des données données données.
Nous pouvons également utiliser des histogrammes pour visualiser les tracés de la CDF
et de la PDF
, ce qui sera plus intuitif pour les données discrètes.
import numpy as np
import matplotlib.pyplot as plt
data = [3, 4, 2, 3, 4, 5, 4, 7, 8, 5, 4, 6, 2, 1, 0, 9, 7, 6, 6, 5, 4]
plt.hist(data, bins=9, density=True)
plt.hist(data, bins=9, density=True, cumulative=True, label="CDF", histtype="step")
plt.xlabel("X")
plt.ylabel("Probability")
plt.xticks(np.arange(0, 10))
plt.title("CDF using Histogram Plot")
plt.show()
Production :
Il trace le CDF
et le PDF
de données données en utilisant la méthode hist()
. Pour tracer la CDF
, nous définissons cumulative=True
et nous définissons density=True
pour obtenir un histogramme représentant les valeurs de probabilité qui s’additionnent à 1.
Tracer la CDF
pour une distribution continue en utilisant Matplotlib en Python
import numpy as np
import matplotlib.pyplot as plt
dx = 0.005
x = np.arange(-10, 10, dx)
y = 0.25 * np.exp((-(x ** 2)) / 8)
y = y / (np.sum(dx * y))
cdf = np.cumsum(y * dx)
plt.plot(x, y, label="pdf")
plt.plot(x, cdf, label="cdf")
plt.xlabel("X")
plt.ylabel("Probability Values")
plt.title("CDF for continuous distribution")
plt.legend()
plt.show()
Production :
Il trace le PMF
et le CDF
pour la distribution continue donnée. Pour calculer les valeurs y de CDF
, nous utilisons la méthode numpy.cumsum()
pour calculer la somme cumulative d’un tableau.
Nous divisons y
par la somme du tableau y
multipliée par dx
pour normaliser les valeurs de sorte que les valeurs de CDF
soient comprises entre 0 et 1.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn