scipy.stats.

rv_continuous#

class scipy.stats.rv_continuous(momtype=1, a=None, b=None, xtol=1e-14, badvalue=None, name=None, longname=None, shapes=None, seed=None)[Quelle]#

Eine generische kontinuierliche Zufallsvariable-Klasse zur Unterklassifizierung.

rv_continuous ist eine Basisklasse zum Erstellen spezifischer Verteilungsklassen und Instanzen für kontinuierliche Zufallsvariablen. Sie kann nicht direkt als Verteilung verwendet werden.

Parameter:
momtypeint, optional

Der Typ der generischen Momentenberechnung, die verwendet werden soll: 0 für pdf, 1 (Standard) für ppf.

afloat, optional

Untere Grenze der Unterstützung der Verteilung, Standard ist minus Unendlich.

bfloat, optional

Obere Grenze der Unterstützung der Verteilung, Standard ist plus Unendlich.

xtolfloat, optional

Die Toleranz für die Fixpunktberechnung für generisches ppf.

badvaluefloat, optional

Der Wert in Ergebnis-Arrays, der einen Wert angibt, für den eine Argumentbeschränkung verletzt ist, Standard ist np.nan.

namestr, optional

Der Name der Instanz. Dieser String wird verwendet, um das Standardbeispiel für Verteilungen zu erstellen.

longnamestr, optional

Dieser String wird als Teil der ersten Zeile des Docstrings verwendet, der zurückgegeben wird, wenn eine Unterklasse keinen eigenen Docstring hat. Hinweis: longname existiert aus Kompatibilitätsgründen, verwenden Sie es nicht für neue Unterklassen.

shapesstr, optional

Die Form der Verteilung. Zum Beispiel "m, n" für eine Verteilung, die zwei ganze Zahlen als die beiden Formargumente für alle ihre Methoden verwendet. Wenn nicht angegeben, werden die Formparameter aus der Signatur der privaten Methoden _pdf und _cdf der Instanz abgeleitet.

seed{None, int, numpy.random.Generator, numpy.random.RandomState}, optional

Wenn seed None ist (oder np.random), wird die Singleton-Instanz von numpy.random.RandomState verwendet. Wenn seed eine Ganzzahl ist, wird eine neue RandomState-Instanz mit seed initialisiert. Wenn seed bereits eine Generator- oder RandomState-Instanz ist, wird diese Instanz verwendet.

Attribute:
a, bfloat, optional

Untere/obere Grenze der Unterstützung der unverschobenen/unskalierten Verteilung. Dieser Wert wird von den Parametern loc und scale nicht beeinflusst. Um die Unterstützung der verschobenen/skalierten Verteilung zu berechnen, verwenden Sie die Methode support.

Methoden

rvs(*args, **kwds)

Zufallsvariablen des angegebenen Typs.

pdf(x, *args, **kwds)

Wahrscheinlichkeitsdichtefunktion (PDF) bei x der gegebenen RV.

logpdf(x, *args, **kwds)

Logarithmus der Wahrscheinlichkeitsdichtefunktion bei x der gegebenen RV.

cdf(x, *args, **kwds)

Kumulative Verteilungsfunktion (CDF) der gegebenen RV.

logcdf(x, *args, **kwds)

Logarithmus der kumulativen Verteilungsfunktion (CDF) bei x der gegebenen RV.

sf(x, *args, **kwds)

Überlebensfunktion (1 - cdf) bei x der gegebenen RV.

logsf(x, *args, **kwds)

Logarithmus der Überlebensfunktion der gegebenen RV.

ppf(q, *args, **kwds)

Perzentil-Punkt-Funktion (Umkehrung von cdf) bei q der gegebenen RV.

isf(q, *args, **kwds)

Inverse Überlebensfunktion (Umkehrung von sf) bei q der gegebenen RV.

moment(order, *args, **kwds)

nicht-zentrales Moment der Verteilung der angegebenen Ordnung.

stats(*args, **kwds)

Einige Statistiken der gegebenen RV.

entropy(*args, **kwds)

Differenzielle Entropie der RV.

expect([func, args, loc, scale, lb, ub, ...])

Berechnet den Erwartungswert einer Funktion bezüglich der Verteilung durch numerische Integration.

median(*args, **kwds)

Median der Verteilung.

mean(*args, **kwds)

Mittelwert der Verteilung.

std(*args, **kwds)

Standardabweichung der Verteilung.

var(*args, **kwds)

Varianz der Verteilung.

interval(confidence, *args, **kwds)

Konfidenzintervall mit gleichen Flächen um den Median.

__call__(*args, **kwds)

Fixiert die Verteilung für die gegebenen Argumente.

fit(data, *args, **kwds)

Gibt Schätzungen der Form (falls zutreffend), des Ortes und der Skalenparameter aus Daten zurück.

fit_loc_scale(data, *args)

Schätzt die Parameter loc und scale aus Daten unter Verwendung des 1. und 2. Moments.

nnlf(theta, x)

Negative Log-Likelihood-Funktion.

support(*args, **kwargs)

Unterstützung der Verteilung.

Hinweise

Öffentliche Methoden einer Instanz einer Verteilungsklasse (z. B. pdf, cdf) überprüfen ihre Argumente und leiten gültige Argumente an private, rechenintensive Methoden (_pdf, _cdf) weiter. Für pdf(x) ist x gültig, wenn es sich innerhalb der Unterstützung der Verteilung befindet. Ob ein Formparameter gültig ist, wird durch eine _argcheck-Methode entschieden (die standardmäßig prüft, ob ihre Argumente streng positiv sind).

Unterklassifizierung

Neue Zufallsvariablen können durch Unterklassifizierung der rv_continuous-Klasse und Neudefinition von mindestens der Methode _pdf oder _cdf (normiert auf Ort 0 und Skala 1) definiert werden.

Wenn die Prüfung positiver Argumente für Ihre RV nicht korrekt ist, müssen Sie auch die Methode _argcheck neu definieren.

Für die meisten Verteilungen in scipy.stats hängt das Unterstützungsintervall nicht von den Formparametern ab. x liegt im Unterstützungsintervall gleichbedeutend mit self.a <= x <= self.b. Wenn eines der Endpunkte der Unterstützung von den Formparametern abhängt, dann muss i) die Verteilung die Methode _get_support implementieren; und ii) diese abhängigen Endpunkte müssen von der Aufruffunktion der Verteilung für den rv_continuous-Konstruktor weggelassen werden.

Es gibt korrekte, aber potenziell langsame Standardwerte für die restlichen Methoden, aber zur Beschleunigung und/oder Genauigkeit können Sie diese überschreiben.

_logpdf, _cdf, _logcdf, _ppf, _rvs, _isf, _sf, _logsf

Die Standardmethode _rvs basiert auf der Umkehrung der CDF, _ppf, angewendet auf eine gleichmäßige Zufallsvariable. Um Zufallsvariaten effizient zu generieren, muss entweder die Standard-_ppf überschrieben werden (z. B. wenn die inverse CDF explizit ausgedrückt werden kann) oder eine Sampling-Methode muss in einer benutzerdefinierten _rvs-Methode implementiert werden.

Wenn möglich, sollten Sie _isf, _sf oder _logsf überschreiben. Der Hauptgrund wäre die Verbesserung der numerischen Genauigkeit: Zum Beispiel wird die Überlebensfunktion _sf als 1 - _cdf berechnet, was zu Präzisionsverlust führen kann, wenn _cdf(x) nahe bei eins liegt.

Methoden, die von Unterklassen überschrieben werden können

_rvs
_pdf
_cdf
_sf
_ppf
_isf
_stats
_munp
_entropy
_argcheck
_get_support

Es gibt zusätzliche (interne und private) generische Methoden, die für die Kreuzprüfung und für die Fehlerbehebung nützlich sein können, aber möglicherweise nicht in allen Fällen direkt funktionieren, wenn sie aufgerufen werden.

Ein Hinweis zu shapes: Unterklassen müssen diese nicht explizit angeben. In diesem Fall werden shapes automatisch aus den Signaturen der überschriebenen Methoden (pdf, cdf usw.) abgeleitet. Wenn Sie aus irgendeinem Grund die Introspektion vermeiden möchten, können Sie shapes explizit als Argument an den Instanzkonstruktor übergeben.

Eingefrorene Verteilungen

Normalerweise müssen Sie Formparameter (und optional Ort- und Skalenparameter) für jeden Aufruf einer Methode einer Verteilung angeben.

Alternativ kann das Objekt (als Funktion) aufgerufen werden, um die Form-, Ort- und Skalenparameter festzulegen und ein "eingefrorenes" kontinuierliches RV-Objekt zurückzugeben.

rv = generic(<shape(s)>, loc=0, scale=1)

rv_frozen Objekt mit denselben Methoden, aber mit festen Form-, Orts- und Skalenparametern.

Statistiken

Statistiken werden standardmäßig durch numerische Integration berechnet. Zur Beschleunigung können Sie dies mit _stats neu definieren.

  • Nimmt Formparameter entgegen und gibt mu, mu2, g1, g2 zurück.

  • Wenn Sie einen dieser Werte nicht berechnen können, geben Sie ihn als None zurück.

  • Kann auch mit einem Schlüsselwortargument moments definiert werden, das ein String ist, der aus "m", "v", "s" und/oder "k" besteht. Nur die im String vorkommenden Komponenten sollen berechnet und in der Reihenfolge "m", "v", "s" oder "k" zurückgegeben werden, wobei fehlende Werte als None zurückgegeben werden.

Alternativ können Sie _munp überschreiben, das n und Formparameter entgegennimmt und das n-te nicht-zentrale Moment der Verteilung zurückgibt.

Tiefkopieren / Pickling

Wenn eine Verteilung oder eine eingefrorene Verteilung tiefkopiert (gepickelt/entpickelt usw.) wird, wird jeder zugrundeliegende Zufallszahlengenerator mitkopiert. Eine Auswirkung ist, dass wenn eine Verteilung vor dem Kopieren auf die Singleton-RandomState-Instanz angewiesen war, sie nach dem Kopieren auf eine Kopie dieser Zufallszustand-Instanz angewiesen sein wird, und np.random.seed wird den Zustand nicht mehr steuern.

Beispiele

Um eine neue Gaußsche Verteilung zu erstellen, würden wir Folgendes tun:

>>> from scipy.stats import rv_continuous
>>> class gaussian_gen(rv_continuous):
...     "Gaussian distribution"
...     def _pdf(self, x):
...         return np.exp(-x**2 / 2.) / np.sqrt(2.0 * np.pi)
>>> gaussian = gaussian_gen(name='gaussian')

scipy.stats-Verteilungen sind *Instanzen*, daher unterklassifizieren wir hier rv_continuous und erstellen eine Instanz. Damit haben wir nun eine voll funktionsfähige Verteilung mit allen relevanten Methoden, die automatisch vom Framework generiert werden.

Beachten Sie, dass wir oben eine Standard-Normalverteilung mit Mittelwert Null und Einheitsvarianz definiert haben. Verschieben und Skalieren der Verteilung kann durch die Verwendung der Parameter loc und scale erfolgen: gaussian.pdf(x, loc, scale) berechnet im Wesentlichen y = (x - loc) / scale und gaussian._pdf(y) / scale.