scipy.stats.

probplot#

scipy.stats.probplot(x, sparams=(), dist='norm', fit=True, plot=None, rvalue=False)[Quelle]#

Berechnet Quantile für ein Wahrscheinlichkeitsdiagramm und zeigt optional die Grafik an.

Erzeugt ein Wahrscheinlichkeitsdiagramm von Stichprobendaten gegen die Quantile einer spezifizierten theoretischen Verteilung (standardmäßig die Normalverteilung). probplot berechnet optional eine beste Anpassungslinie für die Daten und plottet die Ergebnisse mithilfe von Matplotlib oder einer gegebenen Plot-Funktion.

Parameter:
xarray_like

Stichproben-/Antwortdaten, aus denen probplot die Grafik erstellt.

sparamstuple, optional

Verteilungsspezifische Formparameter (Formparameter plus Lage und Skalierung).

diststr oder stats.distributions-Instanz, optional

Verteilung oder Name der Verteilungsfunktion. Standard ist „norm“ für ein Wahrscheinlichkeitsdiagramm der Normalverteilung. Objekte, die genug wie eine Instanz von stats.distributions aussehen (d. h. sie haben eine ppf-Methode), werden ebenfalls akzeptiert.

fitbool, optional

Passt eine Methode der kleinsten Quadrate (beste Anpassung) an die Stichprobendaten an, wenn True (Standard).

plotObjekt, optional

Wenn angegeben, werden die Quantile geplottet. Wenn angegeben und fit True ist, wird auch die Methode der kleinsten Quadrate geplottet. plot ist ein Objekt, das die Methoden „plot“ und „text“ haben muss. Das Modul matplotlib.pyplot oder ein Matplotlib-Achsenobjekt kann verwendet werden, oder ein benutzerdefiniertes Objekt mit denselben Methoden. Standard ist None, was bedeutet, dass keine Grafik erstellt wird.

rvaluebool, optional

Wenn plot angegeben ist und fit True ist, wird durch Setzen von rvalue auf True der Bestimmtheitskoeffizient in der Grafik angezeigt. Standard ist False.

Rückgabe:
(osm, osr)tuple von ndarrays

Tupel von theoretischen Quantilen (osm, oder Medianen der Ordnungsstatistiken) und geordneten Antworten (osr). osr ist einfach sortiertes Eingabe-x. Details zur Berechnung von osm finden Sie im Abschnitt Hinweise.

(slope, intercept, r)tuple von floats, optional

Tupel, das das Ergebnis der Methode der kleinsten Quadrate enthält, wenn dieses von probplot durchgeführt wird. r ist die Quadratwurzel des Bestimmtheitskoeffizienten. Wenn fit=False und plot=None, wird dieses Tupel nicht zurückgegeben.

Hinweise

Auch wenn plot angegeben ist, wird die Grafik nicht von probplot angezeigt oder gespeichert. plt.show() oder plt.savefig('figname.png') sollten nach dem Aufruf von probplot verwendet werden.

probplot generiert ein Wahrscheinlichkeitsdiagramm, das nicht mit einem Q-Q- oder P-P-Diagramm verwechselt werden sollte. Statsmodels bietet umfangreichere Funktionalitäten dieser Art, siehe statsmodels.api.ProbPlot.

Die für die theoretischen Quantile (Horizontale Achse des Wahrscheinlichkeitsdiagramms) verwendete Formel ist Fillibens Schätzung

quantiles = dist.ppf(val), for

        0.5**(1/n),                  for i = n
  val = (i - 0.3175) / (n + 0.365),  for i = 2, ..., n-1
        1 - 0.5**(1/n),              for i = 1

wobei i den i-ten geordneten Wert angibt und n die Gesamtzahl der Werte ist.

Beispiele

>>> import numpy as np
>>> from scipy import stats
>>> import matplotlib.pyplot as plt
>>> nsample = 100
>>> rng = np.random.default_rng()

Eine t-Verteilung mit wenigen Freiheitsgraden

>>> ax1 = plt.subplot(221)
>>> x = stats.t.rvs(3, size=nsample, random_state=rng)
>>> res = stats.probplot(x, plot=plt)

Eine t-Verteilung mit vielen Freiheitsgraden

>>> ax2 = plt.subplot(222)
>>> x = stats.t.rvs(25, size=nsample, random_state=rng)
>>> res = stats.probplot(x, plot=plt)

Eine Mischung aus zwei Normalverteilungen mit Broadcasting

>>> ax3 = plt.subplot(223)
>>> x = stats.norm.rvs(loc=[0,5], scale=[1,1.5],
...                    size=(nsample//2,2), random_state=rng).ravel()
>>> res = stats.probplot(x, plot=plt)

Eine Standardnormalverteilung

>>> ax4 = plt.subplot(224)
>>> x = stats.norm.rvs(loc=0, scale=1, size=nsample, random_state=rng)
>>> res = stats.probplot(x, plot=plt)

Erzeugt eine neue Grafik mit einer Log-Gamma-Verteilung unter Verwendung der Schlüsselwörter dist und sparams

>>> fig = plt.figure()
>>> ax = fig.add_subplot(111)
>>> x = stats.loggamma.rvs(c=2.5, size=500, random_state=rng)
>>> res = stats.probplot(x, dist=stats.loggamma, sparams=(2.5,), plot=ax)
>>> ax.set_title("Probplot for loggamma dist with shape parameter 2.5")

Zeigt die Ergebnisse mit Matplotlib an

>>> plt.show()
../../_images/scipy-stats-probplot-1_00.png
../../_images/scipy-stats-probplot-1_01.png