Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich mit SciPy in Python eine empirische Verteilung an eine theoretische anpassen?

Wie kann ich mit SciPy in Python eine empirische Verteilung an eine theoretische anpassen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-24 09:58:11208Durchsuche

How Can I Fit an Empirical Distribution to a Theoretical One Using SciPy in Python?

Anpassen einer empirischen Verteilung an eine theoretische mit Scipy (Python)

In der Statistik ist es oft notwendig, eine anzupassen empirische Verteilung, die aus beobachteten Daten ermittelt wurde, zu einer theoretischen Verteilung, die die Daten am besten beschreibt. Dies ermöglicht die Berechnung von Wahrscheinlichkeiten und anderen statistischen Schlussfolgerungen.

Implementierung in Python (Scipy)

Scipy bietet zahlreiche Verteilungsfunktionen, die an Daten angepasst werden können . Um die am besten geeignete Verteilung zu finden, wird häufig die Methode der kleinsten Quadrate verwendet, um die Summe der quadratischen Fehler (SSE) zwischen dem Histogramm der Daten und dem Histogramm der angepassten Verteilung zu minimieren.

import numpy as np
import scipy.stats as st

# Data points
data = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# Candidate theoretical distributions
distributions = ['norm', 'beta', 'gamma']

# Iterate over distributions and find best fit
best_dist = None
lowest_sse = float('inf')
for dist_name in distributions:
    dist = getattr(st, dist_name)

    # Fit distribution to data
    params = dist.fit(data)

    # Evaluate SSE
    sse = np.sum((np.histogram(data, bins=10, density=True)[0] - dist.pdf(np.linspace(0, 10, 100), *params))**2)

    # Update best distribution if lower SSE found
    if sse < lowest_sse:
        lowest_sse = sse
        best_dist = dist

# Calculate p-value for a given value
value = 5
p_value = best_dist.cdf(value)

< h2>Beispiel

Im obigen Beispiel wird die empirische Verteilung der Daten an drei verschiedene theoretische Verteilungen angepasst (normal, Beta und Gamma). Es wurde festgestellt, dass die Gammaverteilung den niedrigsten SSE aufweist und daher am besten passt. Der p-Wert für den Wert 5 wird dann als kumulative Verteilungsfunktion der bei 5 bewerteten Gammaverteilung berechnet.

Das obige ist der detaillierte Inhalt vonWie kann ich mit SciPy in Python eine empirische Verteilung an eine theoretische anpassen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn