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_continuousist 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_pdfund_cdfder 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.RandomStateverwendet. Wenn seed eine Ganzzahl ist, wird eine neueRandomState-Instanz mit seed initialisiert. Wenn seed bereits eineGenerator- oderRandomState-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ürpdf(x)istxgü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_pdfoder_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
_argcheckneu definieren.Für die meisten Verteilungen in scipy.stats hängt das Unterstützungsintervall nicht von den Formparametern ab.
xliegt im Unterstützungsintervall gleichbedeutend mitself.a <= x <= self.b. Wenn eines der Endpunkte der Unterstützung von den Formparametern abhängt, dann muss i) die Verteilung die Methode_get_supportimplementieren; und ii) diese abhängigen Endpunkte müssen von der Aufruffunktion der Verteilung für denrv_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
_rvsbasiert 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,_sfoder_logsfüberschreiben. Der Hauptgrund wäre die Verbesserung der numerischen Genauigkeit: Zum Beispiel wird die Überlebensfunktion_sfals1 - _cdfberechnet, 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,cdfusw.) abgeleitet. Wenn Sie aus irgendeinem Grund die Introspektion vermeiden möchten, können Sieshapesexplizit 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
_statsneu 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
momentsdefiniert 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, dasnund 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.seedwird 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 hierrv_continuousund 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
locundscaleerfolgen:gaussian.pdf(x, loc, scale)berechnet im Wesentlicheny = (x - loc) / scaleundgaussian._pdf(y) / scale.