Data Science

Poisson- und Negative Binomialverteilung in Python meistern

Spread the love

Die Poisson-Verteilung ist ein wertvolles Werkzeug zur Modellierung von Zählwerten und stellt die Wahrscheinlichkeit einer bestimmten Anzahl von Ereignissen innerhalb eines festen Zeitraums oder Bereichs dar, unter der Annahme einer konstanten durchschnittlichen Rate und unabhängiger Ereignisse. Reale Datensätze weichen jedoch häufig von diesen idealen Bedingungen ab. Dieser Artikel untersucht die Anpassung von Poisson-Verteilungen an verschiedene Datensätze in Python und behandelt Herausforderungen wie Überdispersion.

Inhaltsverzeichnis

Grundlegende Anpassung der Poisson-Verteilung in Python

Beginnen wir mit dem grundlegenden Prozess der Anpassung einer Poisson-Verteilung mithilfe der scipy.stats-Bibliothek. Die Kernfunktion ist poisson.fit(), die λ (Lambda) schätzt, das die durchschnittliche Ereignisrate darstellt.


import numpy as np
from scipy.stats import poisson
import matplotlib.pyplot as plt

# Beispiel-Daten: Anzahl der Autos, die pro Minute an einem Punkt vorbeifahren (100 Minuten)
data = np.random.poisson(lam=5, size=100)

# Poisson-Verteilung anpassen
lambda_fit, = poisson.fit(data)

# Angepasstes Lambda anzeigen
print(f"Angepasstes Lambda: {lambda_fit}")

# Vorbereitung für die Darstellung
x = np.arange(0, max(data) + 1)

# Histogramm und angepasste Verteilung darstellen
plt.hist(data, bins=range(max(data) + 2), density=True, alpha=0.6, label='Daten')
plt.plot(x, poisson.pmf(x, lambda_fit), 'r-', label=f'Angepasste Poisson (λ={lambda_fit:.2f})')
plt.xlabel('Anzahl der Autos')
plt.ylabel('Wahrscheinlichkeit')
plt.legend()
plt.title('Anpassung der Poisson-Verteilung')
plt.show()

Dieser einfache Ansatz funktioniert gut, wenn die Daten einer Poisson-Verteilung eng folgen. Reale Daten weichen jedoch oft ab.

Methode der gebinnten kleinsten Quadrate

Während poisson.fit() bequem ist, bietet die Methode der gebinnten kleinsten Quadrate eine robustere Alternative, insbesondere bei begrenzten Daten oder erheblichen Abweichungen von den Poisson-Annahmen. Diese Methode beinhaltet die Binning der Daten und die Minimierung der quadratischen Differenzen zwischen beobachteten und erwarteten Häufigkeiten. Die Implementierung erfordert iterative Optimierung (z. B. mit scipy.optimize.minimize) und geht über den Umfang dieses kurzen Beispiels hinaus, ist aber in dedizierten Statistikpaketen leicht zu finden.

Behandlung von Überdispersion mit der negativen Binomialverteilung

Überdispersion tritt auf, wenn die Datenvarianz ihren Mittelwert übersteigt und damit eine wichtige Poisson-Annahme verletzt (Varianz gleich Mittelwert). Die negative Binomialverteilung, die Überdispersion berücksichtigt, bietet in solchen Fällen eine bessere Anpassung.


from scipy.stats import nbinom

# Beispiel für überdisperse Daten
overdispersed_data = np.random.negative_binomial(n=2, p=0.5, size=100)

# Negative Binomialverteilung anpassen
n_fit, p_fit = nbinom.fit(overdispersed_data)

# Angepasste Parameter anzeigen
print(f"Angepasstes n: {n_fit}")
print(f"Angepasstes p: {p_fit}")

# Vorbereitung für die Darstellung
x = np.arange(0, max(overdispersed_data) + 1)

# Histogramm und angepasste Verteilung darstellen
plt.hist(overdispersed_data, bins=range(max(overdispersed_data) + 2), density=True, alpha=0.6, label='Daten')
plt.plot(x, nbinom.pmf(x, n_fit, p_fit), 'r-', label=f'Angepasste Negative Binomial (n={n_fit:.2f}, p={p_fit:.2f})')
plt.xlabel('Anzahl der Ereignisse')
plt.ylabel('Wahrscheinlichkeit')
plt.legend()
plt.title('Anpassung der negativen Binomialverteilung für überdisperse Daten')
plt.show()

Dies zeigt, wie die negative Binomialverteilung die Eigenschaften überdisperser Daten effektiv erfasst und ein genaueres Modell bietet, als eine Poisson-Anpassung zu erzwingen.

Fazit

Eine effektive Anpassung der Poisson-Verteilung erfordert eine sorgfältige Datenanalyse. Während poisson.fit() einen einfachen Ausgangspunkt bietet, ist die Erkennung und Behandlung von Überdispersion mithilfe der negativen Binomialverteilung entscheidend für eine genaue Modellierung von Zählwerten. Die Wahl der Verteilung hängt von den spezifischen Eigenschaften des Datensatzes ab. Die visuelle Inspektion der Anpassung mithilfe von Diagrammen stellt sicher, dass die gewählte Verteilung die Daten genau darstellt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert