Das Zeichnen empirischer kumulativer Verteilungen mit Matplotlib

PythonPythonBeginner
Jetzt üben

This tutorial is from open-source community. Access the source code

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Tutorial wird gezeigt, wie man die empirische kumulative Verteilungsfunktion (ECDF) einer Stichprobe und die theoretische CDF mit Matplotlib darstellt. ECDFs werden in der Technik auch als "Nicht-Übersteigungs"-Kurven bezeichnet, wobei der y-Wert für einen gegebenen x-Wert die Wahrscheinlichkeit angibt, dass eine Beobachtung aus der Stichprobe unter diesem x-Wert liegt. Umgekehrt zeigt die empirische komplementäre kumulative Verteilungsfunktion (die ECCDF, oder "Übersteigungs"-Kurve) die Wahrscheinlichkeit y, dass eine Beobachtung aus der Stichprobe über einen Wert x liegt.

Tipps für die VM

Nachdem der VM-Start abgeschlossen ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu öffnen.

Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund der Einschränkungen von Jupyter Notebook nicht automatisiert werden.

Wenn Sie während des Lernens Probleme haben, können Sie Labby gerne fragen. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie prompt beheben.

Importieren der erforderlichen Bibliotheken

In diesem Schritt importieren wir die erforderlichen Bibliotheken. Für dieses Tutorial werden wir die Bibliotheken NumPy und Matplotlib verwenden.

import matplotlib.pyplot as plt
import numpy as np

Setzen des Zufallsziels und Generieren der Daten

In diesem Schritt setzen wir das Zufallsziel und generieren die Daten. Wir werden 100 Datenpunkte aus einer Normalverteilung mit einem Mittelwert von 200 und einer Standardabweichung von 25 generieren.

np.random.seed(19680801)
mu = 200
sigma = 25
data = np.random.normal(mu, sigma, size=100)

Erstellen der Figur und der Teilplots

In diesem Schritt erstellen wir eine Figur mit zwei Teilplots für die kumulativen Verteilungen. Wir setzen auch die Größe der Figur auf 9x4.

fig = plt.figure(figsize=(9, 4), layout="constrained")
axs = fig.subplots(1, 2, sharex=True, sharey=True)

Zeichnen der kumulativen Verteilungen

In diesem Schritt zeichnen wir die kumulativen Verteilungen. Wir verwenden die .ecdf-Methode, um die ECDF und die komplementäre ECDF zu zeichnen. Wir zeichnen auch die theoretische CDF mit einer Normalverteilung mit einem Mittelwert von 200 und einer Standardabweichung von 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")

Bezeichnen der Figur

In diesem Schritt werden wir die Figur bezeichnen. Wir werden einen Titel, Rasterlinien und Beschriftungen für die x- und y-Achsen hinzufügen.

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()

Zusammenfassung

In diesem Tutorial haben wir gelernt, wie man die empirische kumulative Verteilungsfunktion (ECDF) und die theoretische CDF mit Matplotlib zeichnet. Wir haben auch gelernt, wie man die empirische komplementäre kumulative Verteilungsfunktion (ECCDF) und das umgekehrte kumulative Histogramm zeichnet. Wenn Sie den in diesem Tutorial beschriebenen Schritten folgen, sollten Sie jetzt in der Lage sein, eigene kumulative Verteilungsdiagramme mit Matplotlib zu erstellen.