CDF plotten Matplotlib Python
Dieses Tutorial erklärt, wie wir einen CDF
-Plot mit Hilfe der Matplotlib in Python erzeugen können. CDF
ist die Funktion, deren y-Werte die Wahrscheinlichkeit darstellen, dass eine Zufallsvariable die Werte kleiner oder gleich dem entsprechenden x-Wert annimmt.
CDF mit Matplotlib in Python plotten
CDF ist sowohl für kontinuierliche als auch für diskrete Wahrscheinlichkeitsverteilungen definiert. Bei kontinuierlichen Wahrscheinlichkeitsverteilungen kann die Zufallsvariable jeden beliebigen Wert aus dem angegebenen Bereich annehmen, bei diskreten Wahrscheinlichkeitsverteilungen ist jedoch nur eine bestimmte Menge von Werten möglich.
Plotten der CDF für diskrete Verteilungen mit Matplotlib in 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()
Ausgabe:
Es wird die PMF
und CDF
für die gegebene Verteilung geplottet. Um die y-Werte für CDF
zu berechnen, verwenden wir die Methode numpy.cumsum()
, um die kumulative Summe eines Arrays zu berechnen.
Wenn wir Häufigkeitszahlen erhalten, müssen wir die y-Werte zunächst normalisieren, damit sie die PDF
darstellen.
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()
Ausgabe:
Hier sind uns die Häufigkeitswerte für jeden X-Wert gegeben. Wir wandeln die Häufigkeitswerte in pdf
-Werte um, indem wir jedes Element des pdf
-Arrays durch die Summe der Häufigkeiten dividieren. Wir verwenden dann die pdf
-Werte, um die CDF
-Werte zu berechnen und die CDF
der gegebenen Daten darzustellen.
Wir können auch Histogramm-Diagramme verwenden, um die CDF
- und PDF
-Diagramme zu betrachten, was für diskrete Daten intuitiver sein wird.
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()
Ausgabe:
Es werden die CDF
und PDF
der gegebenen Daten mit der Methode hist()
gezeichnet. Um die CDF
darzustellen, setzen wir cumulative=True
und setzen density=True
, um ein Histogramm zu erhalten, das Wahrscheinlichkeitswerte darstellt, die sich zu 1 summieren.
Plotten von CDF
für kontinuierliche Verteilungen mit Matplotlib in 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()
Ausgabe:
Es werden die PMF
und CDF
für die gegebene kontinuierliche Verteilung geplottet. Um die y-Werte für CDF
zu berechnen, verwenden wir die Methode numpy.cumsum()
, um die kumulative Summe eines Arrays zu berechnen.
Wir teilen y
durch die Summe des Arrays y
multipliziert mit dx
, um die Werte zu normalisieren, so dass die CDF
-Werte von 0 bis 1 reichen.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn